Imported Upstream version 3.6.2
authorHyunjee Kim <hj0426.kim@samsung.com>
Thu, 31 Jan 2019 01:53:59 +0000 (10:53 +0900)
committerHyunjee Kim <hj0426.kim@samsung.com>
Thu, 31 Jan 2019 01:54:53 +0000 (10:54 +0900)
Change-Id: I9a7838c3979faf20c60f2367360df4f244760b87
Signed-off-by: Hyunjee Kim <hj0426.kim@samsung.com>
521 files changed:
CHANGES.txt
MANIFEST.in
Makefile
PKG-INFO
doc/conf.py [new file with mode: 0644]
doc/donating.txt [new file with mode: 0644]
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.5.0.beta1.html [new file with mode: 0644]
doc/html/changes-3.5.0.html [new file with mode: 0644]
doc/html/changes-3.5.dev.html [new file with mode: 0644]
doc/html/changes-3.6.0.html [moved from doc/html/changes-3.6.1.html with 98% similarity]
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/funding.html [new file with mode: 0644]
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/tutorial.html
doc/html/validation.html
doc/html/xpathxslt.html
doc/main.txt
doc/pdf/pubkey.asc [deleted file]
doc/sitemap.txt [new file with mode: 0644]
doc/sphinx/FAQ.html [new file with mode: 0644]
doc/sphinx/Makefile [new file with mode: 0644]
doc/sphinx/_images/tagpython.png [new file with mode: 0644]
doc/sphinx/_sources/FAQ.txt [new file with mode: 0644]
doc/sphinx/_sources/api.txt [new file with mode: 0644]
doc/sphinx/_sources/build.txt [new file with mode: 0644]
doc/sphinx/_sources/capi.txt [new file with mode: 0644]
doc/sphinx/_sources/compatibility.txt [new file with mode: 0644]
doc/sphinx/_sources/cssselect.txt [new file with mode: 0644]
doc/sphinx/_sources/element_classes.txt [new file with mode: 0644]
doc/sphinx/_sources/elementsoup.txt [new file with mode: 0644]
doc/sphinx/_sources/extensions.txt [new file with mode: 0644]
doc/sphinx/_sources/html/api/api-objects.txt [new file with mode: 0644]
doc/sphinx/_sources/html5parser.txt [new file with mode: 0644]
doc/sphinx/_sources/index.txt [new file with mode: 0644]
doc/sphinx/_sources/intro.txt [new file with mode: 0644]
doc/sphinx/_sources/licenses/BSD.txt [new file with mode: 0644]
doc/sphinx/_sources/licenses/GPL.txt [new file with mode: 0644]
doc/sphinx/_sources/licenses/ZopePublicLicense.txt [new file with mode: 0644]
doc/sphinx/_sources/licenses/elementtree.txt [new file with mode: 0644]
doc/sphinx/_sources/lxml-source-howto.txt [new file with mode: 0644]
doc/sphinx/_sources/lxml2.txt [new file with mode: 0644]
doc/sphinx/_sources/lxmlhtml.txt [new file with mode: 0644]
doc/sphinx/_sources/main.txt [new file with mode: 0644]
doc/sphinx/_sources/memorymanagement.txt [new file with mode: 0644]
doc/sphinx/_sources/objectify.txt [new file with mode: 0644]
doc/sphinx/_sources/parsing.txt [new file with mode: 0644]
doc/sphinx/_sources/performance.txt [new file with mode: 0644]
doc/sphinx/_sources/resolvers.txt [new file with mode: 0644]
doc/sphinx/_sources/s5/lxml-ep2008.txt [new file with mode: 0644]
doc/sphinx/_sources/sax.txt [new file with mode: 0644]
doc/sphinx/_sources/sitemap.txt [new file with mode: 0644]
doc/sphinx/_sources/tutorial.txt [new file with mode: 0644]
doc/sphinx/_sources/valgrind.txt [new file with mode: 0644]
doc/sphinx/_sources/validation.txt [new file with mode: 0644]
doc/sphinx/_sources/xpathxslt.txt [new file with mode: 0644]
doc/sphinx/_static/basic.css [new file with mode: 0644]
doc/sphinx/_static/default.css [new file with mode: 0644]
doc/sphinx/_static/pygments.css [new file with mode: 0644]
doc/sphinx/_static/sphinxdoc.css [new file with mode: 0644]
doc/sphinx/_static/tagpython-big.png [new file with mode: 0644]
doc/sphinx/api.html [new file with mode: 0644]
doc/sphinx/build.html [new file with mode: 0644]
doc/sphinx/capi.html [new file with mode: 0644]
doc/sphinx/compatibility.html [new file with mode: 0644]
doc/sphinx/cssselect.html [new file with mode: 0644]
doc/sphinx/element_classes.html [new file with mode: 0644]
doc/sphinx/elementsoup.html [new file with mode: 0644]
doc/sphinx/extensions.html [new file with mode: 0644]
doc/sphinx/genindex.html [new file with mode: 0644]
doc/sphinx/html/api/api-objects.html [new file with mode: 0644]
doc/sphinx/html5parser.html [new file with mode: 0644]
doc/sphinx/index.html [new file with mode: 0644]
doc/sphinx/intro.html [new file with mode: 0644]
doc/sphinx/licenses/BSD.html [new file with mode: 0644]
doc/sphinx/licenses/GPL.html [new file with mode: 0644]
doc/sphinx/licenses/ZopePublicLicense.html [new file with mode: 0644]
doc/sphinx/licenses/elementtree.html [new file with mode: 0644]
doc/sphinx/lxml-source-howto.html [new file with mode: 0644]
doc/sphinx/lxml2.html [new file with mode: 0644]
doc/sphinx/lxmlhtml.html [new file with mode: 0644]
doc/sphinx/main.html [new file with mode: 0644]
doc/sphinx/memorymanagement.html [new file with mode: 0644]
doc/sphinx/objectify.html [new file with mode: 0644]
doc/sphinx/parsing.html [new file with mode: 0644]
doc/sphinx/performance.html [new file with mode: 0644]
doc/sphinx/resolvers.html [new file with mode: 0644]
doc/sphinx/s5/lxml-ep2008.html [new file with mode: 0644]
doc/sphinx/sax.html [new file with mode: 0644]
doc/sphinx/search.html [new file with mode: 0644]
doc/sphinx/sitemap.html [new file with mode: 0644]
doc/sphinx/tutorial.html [new file with mode: 0644]
doc/sphinx/valgrind.html [new file with mode: 0644]
doc/sphinx/validation.html [new file with mode: 0644]
doc/sphinx/xpathxslt.html [new file with mode: 0644]
src/lxml.egg-info/PKG-INFO
src/lxml.egg-info/SOURCES.txt
src/lxml.egg-info/requires.txt
src/lxml/includes/lxml-version.h
src/lxml/lxml.etree.c
src/lxml/lxml.objectify.c
tools/manylinux/build-wheels.sh [new file with mode: 0755]
tools/xpathgrep.py [new file with mode: 0644]
version.txt

index 83a491f..6f9a579 100644 (file)
@@ -2,6 +2,12 @@
 lxml changelog
 ==============
 
+3.6.2 (2016-08-18)
+==================
+
+* release without source changes to provide cleanly built Linux wheels
+
+
 3.6.1 (2016-07-24)
 ==================
 
index 82a16c9..2ad2039 100644 (file)
@@ -4,6 +4,7 @@ include test.py
 include update-error-constants.py
 include MANIFEST.in Makefile version.txt requirements.txt
 include CHANGES.txt CREDITS.txt INSTALL.txt LICENSES.txt README.rst TODO.txt
+include tools/*.py tools/manylinux/*.sh
 recursive-include src *.pyx *.pxd *.pxi *.py
 recursive-include src/lxml lxml.etree.c lxml.objectify.c
 recursive-include src/lxml lxml.etree.h lxml.etree_api.h etree_defs.h lxml_endian.h
index 59fc76d..31d639f 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -10,6 +10,8 @@ PY3_WITH_CYTHON=$(shell $(PYTHON3) -c 'import Cython.Build.Dependencies' >/dev/n
 CYTHON_WITH_COVERAGE=$(shell $(PYTHON) -c 'import Cython.Coverage; import sys; assert not hasattr(sys, "pypy_version_info")' >/dev/null 2>/dev/null && echo " --coverage" || true)
 CYTHON3_WITH_COVERAGE=$(shell $(PYTHON3) -c 'import Cython.Coverage; import sys; assert not hasattr(sys, "pypy_version_info")' >/dev/null 2>/dev/null && echo " --coverage" || true)
 
+MANYLINUX_IMAGE_X86_64=quay.io/pypa/manylinux1_x86_64
+
 all: inplace
 
 # Build in-place
@@ -22,6 +24,18 @@ sdist:
 build:
        $(PYTHON) setup.py $(SETUPFLAGS) build $(PYTHON_WITH_CYTHON)
 
+require-cython:
+       @[ -n "$(PYTHON_WITH_CYTHON)" ] || { \
+           echo "NOTE: missing Cython - please use '$(PYTHON) -m pip install Cython' to install it"; false; }
+
+wheel_manylinux: require-cython sdist
+       time docker run --rm -t \
+               -v $(shell pwd):/io \
+               -e CFLAGS="$(CFLAGS)" \
+               -e LDFLAGS="$(LDFLAGS)" \
+               $(MANYLINUX_IMAGE_X86_64) \
+               bash /io/tools/manylinux/build-wheels.sh /io/dist/lxml-$(LXMLVERSION).tar.gz
+
 wheel:
        $(PYTHON) setup.py $(SETUPFLAGS) bdist_wheel $(PYTHON_WITH_CYTHON)
 
index b0ade2f..d6a6f22 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: lxml
-Version: 3.6.1
+Version: 3.6.2
 Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
 Home-page: http://lxml.de/
 Author: lxml dev team
@@ -36,30 +36,10 @@ 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.1 (2016-07-24)
+        3.6.2 (2016-08-18)
         ==================
         
-        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.
+        * release without source changes to provide cleanly built Linux wheels
         
         
         
diff --git a/doc/conf.py b/doc/conf.py
new file mode 100644 (file)
index 0000000..bd6ec38
--- /dev/null
@@ -0,0 +1,195 @@
+# -*- coding: utf-8 -*-
+#
+# lxml documentation build configuration file, created by
+# sphinx-quickstart on Thu Mar 10 22:53:40 2011.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.coverage']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.txt'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'main'
+
+# General information about the project.
+project = u'lxml'
+copyright = u'2011, Stefan Behnel et al.'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '2.3'
+# The full version, including alpha/beta/rc tags.
+release = '2.3'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+language = 'en' # None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+unused_docs = ['licenses/GPL', 'licenses/BSD', 'licenses/ZopePublicLicense', 'licenses/elementtree',
+               'lxml2', 'memorymanagement', 'valgrind']
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+html_title = "lxml v%s - Processing XML and HTML with Python" % release
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+html_logo = '_static/python-xml-title.png' # None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = 'favicon.ico'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'lxmldoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('main', 'lxml.tex', u'lxml Documentation',
+   u'Stefan Behnel', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
diff --git a/doc/donating.txt b/doc/donating.txt
new file mode 100644 (file)
index 0000000..0e1a2df
--- /dev/null
@@ -0,0 +1,60 @@
+=====================
+Donate to the project
+=====================
+
+PayPal donations are used to cover the costs for project hosting, general
+maintenance and support.  Basically, they are what keeps the free lxml
+software alive for everyone to use.
+
+If, instead, you are interested in financing the development of specific
+features or the resolution of a specific problem, get in touch with the
+lead developer, `Stefan Behnel <http://consulting.behnel.de/>`_.
+
+
+Making a one-time donation
+--------------------------
+
+When you click the PayPal icon, you will be taken to the PayPal website
+where you can donate any amount up to ten thousand US dollars or the
+equivalent in another currency to the lxml project.  Note that you do
+not have to create a PayPal account in order to donate money to the
+lxml project.  You can also pay with your credit card or by other means
+directly.  Please make sure you have read the legal notice at the bottom
+of this page.
+
+ONETIMEBUTTON
+
+Regular contribution each month
+-------------------------------
+
+If you would like to donate money to the lxml project each month through
+your PayPal subscription, please select a currency and amount and then
+click the PayPal icon.  You will be taken to the PayPal website where
+you can initiate the monthly donation.  After that, your credit card will
+be automatically charged each month via PayPal until you cancel this
+monthly donation.  If you do not have a PayPal account, you will need to
+create one on the PayPal website.  Please make sure you have read the
+legal notice at the bottom of this page.
+
+REGULARBUTTON
+
+------
+
+Legal notice
+    By making a donation to the lxml project you state that you have
+    acknowledged, understood, accepted, and agreed to the terms and
+    conditions contained in this notice.  Your donation to the lxml
+    project is voluntary and is not a fee for any services, goods,
+    or advantages.  Making a donation to the lxml project does not
+    entitle you to any services, goods, or advantages.  We have the
+    right to use the money you donate to the lxml project in any
+    lawful way and for any lawful purpose we see fit and we are not
+    obligated to disclose the way and purpose to any party unless
+    required by applicable law.  Although lxml is free software, to
+    our best knowledge the lxml project does not have any tax exempt
+    status.  The lxml project is neither a registered non-profit
+    corporation nor a registered charity in any country. Your donation
+    may or may not be tax-deductible; please consult your tax advisor
+    in this matter.  We will not publish or disclose your name and/or
+    e-mail address without your consent, unless required by applicable
+    law.  Your donation is non-refundable.
index ccbf186..dd66f64 100644 (file)
@@ -26,7 +26,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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>
@@ -185,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.io/">openpyxl</a>,
+<li><a class="reference external" href="https://openpyxl.readthedocs.org/">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>
@@ -955,7 +955,7 @@ map it to your namespace.  See also the question above.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index cbec5d8..211a309 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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
@@ -512,7 +512,7 @@ example:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index ea3bf59..78c9a1d 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e4cce66..83e1cf9 100644 (file)
@@ -3554,7 +3554,6 @@ 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
@@ -6814,7 +6813,6 @@ 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
@@ -6846,7 +6844,6 @@ 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
@@ -6874,7 +6871,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_float_hash_repr  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash_repr
+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_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
@@ -6912,10 +6909,8 @@ 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
@@ -6932,7 +6927,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_type_float_precision_consistency      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_precision_consistency
+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_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
@@ -6965,14 +6960,13 @@ 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_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_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_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
@@ -7379,6 +7373,7 @@ 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
@@ -7396,7 +7391,6 @@ 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 3fae5e0..a6fd77c 100644 (file)
@@ -503,12 +503,12 @@ Element class lookup method that uses the objectify classes.</em>
 Iterates over an element and its sub-elements in document order (depth
 first pre-order).</em>
     </li>
-    <li> <strong class="uidlink"><a href="lxml.objectify.ElementMaker-class.html">lxml.objectify.ElementMaker</a></strong>:
-      <em class="summary">ElementMaker(self, namespace=None, nsmap=None, annotate=True, makeelement=None)</em>
-    </li>
     <li> <strong class="uidlink"><a href="lxml.builder.ElementMaker-class.html">lxml.builder.ElementMaker</a></strong>:
       <em class="summary">Element generator factory.</em>
     </li>
+    <li> <strong class="uidlink"><a href="lxml.objectify.ElementMaker-class.html">lxml.objectify.ElementMaker</a></strong>:
+      <em class="summary">ElementMaker(self, namespace=None, nsmap=None, annotate=True, makeelement=None)</em>
+    </li>
     <li> <strong class="uidlink"><a href="lxml.etree.ElementTextIterator-class.html" onclick="show_private();">lxml.etree.ElementTextIterator</a></strong>:
       <em class="summary">ElementTextIterator(self, element, tag=None, with_tail=True)
 Iterates over the text content of a subtree.</em>
@@ -659,11 +659,11 @@ Immutable object that represents a compiled object path.</em>
       <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, schema: XMLSchema =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, XMLSchema schema=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
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2947c0f..93670e1 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c3a49b8..6cfba36 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ae4cf52..386d952 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5718391..232f5a9 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8247f61..0d6484b 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 Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 40c0608..dfc87b8 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 56b9327..2dd5306 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0d601de..c5bfb8e 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b9fd9a9..2b33611 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c669ddc..3eda222 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f88fce3..ed7647f 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4f74d29..37d85b7 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3985a97..07b6681 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 72a6be3..3712165 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 74a639d..331c9f2 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index be8c6ed..7b49838 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._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.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>
 </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.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.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.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.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>
+<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_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_PYTHON3">IS_PYTHON3</a><br />
+<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>
 <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.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.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>
 <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.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.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_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.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>
+<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.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_text">is_text</a><br />
+<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>
 <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.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._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>
 <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.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.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.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.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.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.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.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>
+<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.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_dsdl_include">iso_dsdl_include</a><br />
+<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>
 <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_svrl_for_xslt1">iso_svrl_for_xslt1</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.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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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-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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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.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 />
+<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 />
 <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_BUFFER_FULL">IO_BUFFER_FULL</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_EROFS">IO_EROFS</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-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_EACCES">IO_EACCES</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_ESPIPE">IO_ESPIPE</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.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_EADDRINUSE">IO_EADDRINUSE</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_ESRCH">IO_ESRCH</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.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_EAFNOSUPPORT">IO_EAFNOSUPPORT</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_ETIMEDOUT">IO_ETIMEDOUT</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.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_EAGAIN">IO_EAGAIN</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_EXDEV">IO_EXDEV</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#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_EALREADY">IO_EALREADY</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_FLUSH">IO_FLUSH</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._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_EBADF">IO_EBADF</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_LOAD_ERROR">IO_LOAD_ERROR</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._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_EBADMSG">IO_EBADMSG</a><br />
+<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_NETWORK_ATTEMPT">IO_NETWORK_ATTEMPT</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._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_EBUSY">IO_EBUSY</a><br />
+<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_NO_INPUT">IO_NO_INPUT</a><br />
+<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"><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 Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8fd0a02..3bf08eb 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 296cbf9..c30d3b7 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9efc9a7..763f17d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9cc1fcd..4c5db1f 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c611732..e3eda14 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cd35951..428b38c 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 616840c..7e4d0e2 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7e5e909..f710c98 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 238af21..76abf20 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:06 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8180c2e..9db25dd 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0fd83f6..f8dec76 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_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">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>
 </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_setitem_indexerror">test_setitem_indexerror()</a><br />
+<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>
 </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_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_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.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_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_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>
 <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_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_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._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_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>
+<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="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_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>
+<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.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_setslice_all">test_setslice_all()</a><br />
+<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>
 <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_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">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>
 <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_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">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>
 <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_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_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.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_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>
+<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.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_reversed_ns1">test_setslice_all_replace_reversed_ns1()</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="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_ns2">test_setslice_all_replace_reversed_ns2()</a><br />
+<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>
 <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_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_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>
 <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_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>
+<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>
 <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_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>
+<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.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_empty">test_setslice_empty()</a><br />
+<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>
 <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_end">test_setslice_end()</a><br />
+<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>
 <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_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_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>
 <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_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_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>
 <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_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_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_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_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_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_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_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_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_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_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>
+<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_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_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>
+<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.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_neg">test_setslice_partial_neg()</a><br />
+<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>
 <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_wrong_length">test_setslice_partial_wrong_length()</a><br />
+<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>
 <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_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_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>
 <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_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>
+<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>
 <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_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>
+<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_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_negative2">test_setslice_step_negative2()</a><br />
+<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>
 <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_overrun">test_setslice_step_overrun()</a><br />
+<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>
 <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_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>
+<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>
 <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_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>
+<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>
 <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_shallowcopy_elementtree">test_shallowcopy_elementtree()</a><br />
+<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>
 <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_simple">test_simple()</a><br />
+<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>
 <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._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_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>
 <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._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_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>
 <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_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>
+<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_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_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>
+<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_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_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_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>
 <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_parse">test_sourceline_parse()</a><br />
+<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>
 <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_XML">test_sourceline_XML()</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_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_standalone">test_standalone()</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_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_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_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>
 <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_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_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>
 <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_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>
+<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_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_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>
+<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_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_elements">test_strip_elements()</a><br />
+<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>
 <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_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_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>
 <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_tags">test_strip_tags()</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_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_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_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_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_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">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_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_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_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_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_pi_comment">test_strip_tags_pi_comment()</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_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_pi_comment_all">test_strip_tags_pi_comment_all()</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_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_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>
+<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>
 <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_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>
+<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>
 <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_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_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>
 <span class="index-where">(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_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_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>
 <span class="index-where">(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_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_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_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_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_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_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_default">test_sub_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_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_empty">test_sub_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_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_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_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>
 <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_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>
+<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>
 <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_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>
+<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_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_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_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>
 <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_quote">test_subelement_name_quote()</a><br />
+<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>
 <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_space">test_subelement_name_space()</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_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_nsmap">test_subelement_nsmap()</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_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_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>
+<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>
 <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_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_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>
 <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_with_attributes_ns">test_subelement_with_attributes_ns()</a><br />
+<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>
 <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_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_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_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_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_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>
 <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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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>
+<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_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_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>
+<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_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_str_subclass">test_tag_str_subclass()</a><br />
+<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>
 <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_write">test_tag_write()</a><br />
+<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>
 <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_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_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>
 <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_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_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>
 <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_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>
+<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-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_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>
+<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_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_append">test_tail_append()</a><br />
+<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>
 <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_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_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>
 <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_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_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.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_set_twice">test_tail_set_twice()</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_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_str_subclass">test_tail_str_subclass()</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_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_text">test_text()</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_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_text_empty">test_text_empty()</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_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_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">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_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_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_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_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_tostring">test_text_escape_tostring()</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_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_other">test_text_other()</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_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_str_subclass">test_text_str_subclass()</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_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_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>
+<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>
 <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_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_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>
 <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_mix">test_thread_mix()</a><br />
+<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>
 <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.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_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_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.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_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>
 <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.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.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_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.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_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_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-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_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_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_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>
+<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_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_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>
+<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_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_element_tail">test_tostring_element_tail()</a><br />
+<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>
 <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_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_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>
 <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_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>
+<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>
 <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_text">test_tostring_method_text()</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_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_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_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>
 <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_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>
+<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>
 <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_none">test_tostring_none()</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_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_pretty">test_tostring_pretty()</a><br />
+<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>
 <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_standalone">test_tostring_standalone()</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_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_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_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_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_unicode">test_tostring_unicode()</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_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_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_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_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_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">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_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_none">test_tostring_unicode_none()</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_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_pretty">test_tostring_unicode_pretty()</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_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_with_tail">test_tostring_with_tail()</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_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_tounicode">test_tounicode()</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_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_tounicode_element">test_tounicode_element()</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_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_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">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_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_none">test_tounicode_none()</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-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_pretty">test_tounicode_pretty()</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_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_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_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>
 <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_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_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>
 <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_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_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_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_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_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_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_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>
+<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_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_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>
+<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_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_float">test_type_float()</a><br />
+<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>
 <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_float_instantiation_precision">test_type_float_instantiation_precision()</a><br />
+<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>
 <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_precision">test_type_float_precision()</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_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_float_precision_consistency">test_type_float_precision_consistency()</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_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">test_type_int()</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_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_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_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_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_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_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_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_NoneType">test_type_NoneType()</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_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">test_type_str()</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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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">test_type_str_mod()</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_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_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_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.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_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_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-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_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_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_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_unregistered">test_type_unregistered()</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">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">test_type_ustr()</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_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_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_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_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_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_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_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_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_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>
 <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_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>
+<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_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-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_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_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_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_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>
 <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">test_unicode_byte_invalid()</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_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_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_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>
 <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_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>
+<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>
 <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_comment">test_unicode_comment()</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_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_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_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_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">test_unicode_nstag()</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>
 <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_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_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_float_hash_repr">test_data_element_float_hash_repr()</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_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_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_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_float_precision">test_data_element_float_precision()</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_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">test_unicode_qname()</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_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_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_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_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_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_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_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_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_repr1">test_unicode_repr1()</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_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_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">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_repr2">test_unicode_repr2()</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_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_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_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_repr3">test_unicode_repr3()</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_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_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_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_repr4">test_unicode_repr4()</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_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_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_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">test_unicode_tag()</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_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_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_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_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_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_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_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_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_text">test_unicode_text()</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_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_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_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">test_unicode_xml()</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_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_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_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_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_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 />
+<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_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_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">test_data_element_str()</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 />
+<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_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_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_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_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_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_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_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">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_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_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_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 />
-<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_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">test_data_element_ustr()</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_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_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_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_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">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_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_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_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_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_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">test_data_element_xsitypes()</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_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_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_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_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_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_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_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_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 />
+<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_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">test_dataelement_xsi()</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 />
-<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_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_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_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_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 />
+<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_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_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_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_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._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_tail">test_date_element_efactory_tail()</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 />
-<span class="index-where">(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_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_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_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_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_access2">test_ns_access2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access">test_ns_access()</a><br />
 <span class="index-where">(in&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_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 />
+<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 />
 <span class="index-where">(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_apos">test_declaration_apos()</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_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_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_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_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">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_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_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_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 />
+<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 />
 <span class="index-where">(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">test_deepcopy()</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_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_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_append">test_deepcopy_append()</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._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root">test_ns_decl_tostring_root()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_element">test_ns_decl_tostring_element()</a><br />
 <span class="index-where">(in&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_comment">test_deepcopy_comment()</a><br />
+<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 />
 <span class="index-where">(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_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.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_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_dtd">test_deepcopy_elementtree_dtd()</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_setting">test_ns_setting()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_move">test_ns_move()</a><br />
 <span class="index-where">(in&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_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 />
+<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 />
 <span class="index-where">(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_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces">test_deepcopy_namespaces()</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_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_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">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 />
+<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_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_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_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 />
 <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">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_subelement">test_deepcopy_subelement()</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">test_object_path_addattr()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path">test_object_path()</a><br />
 <span class="index-where">(in&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_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 />
+<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 />
 <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">test_default_class_lookup()</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_element">test_object_path_addattr_create_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create">test_object_path_addattr_create()</a><br />
 <span class="index-where">(in&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_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 />
+<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 />
 <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_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 />
+<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 />
 <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_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 />
+<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 />
 <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_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 />
+<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 />
 <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">test_del_attribute_ns()</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_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_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_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_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">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_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_insert">test_del_insert()</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_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_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_setitem">test_del_setitem()</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_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_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_del_setslice">test_del_setslice()</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_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_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">test_delitem()</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">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_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_delitem_tail">test_delitem_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_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_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">test_delslice()</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_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_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_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_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_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_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_memory">test_delslice_memory()</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">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_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_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_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_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_list">test_object_path_index_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_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.ETreeXMLSchemaTestCase-class.html#test_xmlschema_comment_error">test_xmlschema_comment_error()</a><br />
+<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 />
 <span class="index-where">(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_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_default_attributes">test_xmlschema_default_attributes()</a><br />
+<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 />
 <span class="index-where">(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_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_elementtree_error">test_xmlschema_elementtree_error()</a><br />
+<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 />
 <span class="index-where">(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_list">test_object_path_ns_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_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_error_log">test_xmlschema_error_log()</a><br />
+<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 />
 <span class="index-where">(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 />
+<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_file">test_xmlschema_file()</a><br />
+<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_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_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_illegal_validation_error">test_xmlschema_illegal_validation_error()</a><br />
+<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 />
 <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_element">test_object_path_set_create_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set">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_import_file">test_xmlschema_import_file()</a><br />
+<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 />
 <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 />
+<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_invalid_schema1">test_xmlschema_invalid_schema1()</a><br />
+<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_element">test_object_path_set_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_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_invalid_schema2">test_xmlschema_invalid_schema2()</a><br />
+<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 />
 <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 />
+<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_iterparse">test_xmlschema_iterparse()</a><br />
+<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-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.ETreeXMLSchemaTestCase-class.html#test_xmlschema_iterparse_fail">test_xmlschema_iterparse_fail()</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_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_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.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_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_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_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">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_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>
 </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 />
 <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">test_xmlschema_parse_default_attributes()</a><br />
+<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>
 </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 />
 <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_default_attributes_schema_config">test_xmlschema_parse_default_attributes_schema_config()</a><br />
+<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 />
 <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_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.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_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 />
 <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 />
 <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">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_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 />
+<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_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override">test_parse_encoding_8bit_override()</a><br />
+<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_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-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 />
+<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_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">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 />
+<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 />
+<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_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>
 </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 />
+<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_elementtree._ETreeTestCaseBase-class.html#test_parse_error_from_file">test_parse_error_from_file()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error">test_parse_error()</a><br />
 <span class="index-where">(in&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 />
 <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_assertValid">test_dtd_assertValid()</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_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_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>
 </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_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_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_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 />
 <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_broken">test_dtd_broken()</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_elementtree._ETreeTestCaseBase-class.html#test_parse_file">test_parse_file()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none">test_parse_error_none()</a><br />
 <span class="index-where">(in&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 />
 <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 />
-<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 />
+<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">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>
 </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_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_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_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_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_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_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_nonexistent">test_parse_file_nonexistent()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding">test_parse_file_encoding()</a><br />
 <span class="index-where">(in&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 />
 <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_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">test_parse_file_object()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_nonexistent">test_parse_file_nonexistent()</a><br />
 <span class="index-where">(in&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>
 </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 />
-<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 />
+<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_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>
 </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_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_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.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_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_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_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_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_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_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_comments">test_parse_remove_comments()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_parser_type_error">test_parse_parser_type_error()</a><br />
 <span class="index-where">(in&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">test_dtd_parse_valid()</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_etree.ETreeOnlyTestCase-class.html#test_parse_remove_pis">test_parse_remove_pis()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_comments">test_parse_remove_comments()</a><br />
 <span class="index-where">(in&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_file_url">test_dtd_parse_valid_file_url()</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_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 />
+<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 />
 <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_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_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_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_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_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_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_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_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_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_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">test_xpath_evaluator()</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_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_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_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_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_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_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_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_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">test_xpath_evaluator_tree()</a><br />
+<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_attrib">test_efactory_attrib()</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_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.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>
+<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_bool">test_efactory_bool()</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_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_date">test_xpath_exslt_functions_date()</a><br />
+<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_float">test_efactory_float()</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_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.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>
+<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_int">test_efactory_int()</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_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">test_xpath_extensions()</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_nested">test_efactory_nested()</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_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_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_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_none">test_efactory_none()</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_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_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_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_str">test_efactory_str()</a><br />
+<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_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">test_xpath_extensions_nodes()</a><br />
+<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_subtype">test_efactory_subtype()</a><br />
+<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_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_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_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_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_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_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_error_in_close">test_parser_target_error_in_close()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity">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_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">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_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_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_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_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_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_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_start">test_parser_target_error_in_start()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_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_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_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_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_start_and_close">test_parser_target_error_in_start_and_close()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_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_elements">test_xpath_list_elements()</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_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_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 />
+<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 />
 <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_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 />
+<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 />
 <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_fromstring_exception">test_parser_target_fromstring_exception()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_feed_exception">test_parser_target_feed_exception()</a><br />
 <span class="index-where">(in&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">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_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_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_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_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_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_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_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 />
+<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 />
 <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_recover">test_parser_target_recover()</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_namespace">test_xpath_namespace()</a><br />
+<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_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_tag">test_parser_target_tag()</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_namespace_empty">test_xpath_namespace_empty()</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_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_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 />
+<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 />
 <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 />
+<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_ns_empty">test_xpath_ns_empty()</a><br />
+<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 />
 <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_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns_none">test_xpath_ns_none()</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_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 />
 <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 />
+<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_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>
+<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_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_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 />
+<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_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_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_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_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_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">test_element_nsmap_custom()</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_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_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_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_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_etree.ETreeOnlyTestCase-class.html#test_pi_pseudo_attributes_get">test_pi_pseudo_attributes_get()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_pseudo_attributes_attrib">test_pi_pseudo_attributes_attrib()</a><br />
 <span class="index-where">(in&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_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 />
+<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_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_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 />
+<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 />
 <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_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 />
+<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 />
 <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">test_element_sax()</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_floattelement">test_pickle_floattelement()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_elementtree">test_pickle_elementtree()</a><br />
 <span class="index-where">(in&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_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 />
+<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 />
 <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">test_element_with_attributes()</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_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_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">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_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 />
+<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_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_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_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 />
-<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_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_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_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_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_etree.ETreeOnlyTestCase-class.html#test_prefix_default_ns">test_prefix_default_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix">test_prefix()</a><br />
 <span class="index-where">(in&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_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_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 />
+<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_broken">test_xslt_broken()</a><br />
+<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_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 />
+<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_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 />
 <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 />
+<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_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_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 />
+<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_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 />
 <span class="index-where">(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 />
+<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_document_error">test_xslt_document_error()</a><br />
+<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_after_gc">test_proxy_reuse_after_gc()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse">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_parse">test_xslt_document_parse()</a><br />
+<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 />
 <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 />
-<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 />
+<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_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 />
 <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 />
-<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 />
+<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_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 />
 <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">test_pull_from_tree_builder()</a><br />
+<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_deny_all">test_xslt_document_parse_deny_all()</a><br />
+<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 />
 <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 />
+<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_XML">test_xslt_document_XML()</a><br />
+<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_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_document_XML_resolver">test_xslt_document_XML_resolver()</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_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 />
 <span class="index-where">(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_elementtree_error">test_xslt_elementtree_error()</a><br />
+<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_use_old">test_pyannotate_use_old()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_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_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_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">test_xslt_encoding()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_ignore_old">test_pyannotate_ignore_old()</a><br />
+<span class="index-where">(in&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 />
 <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_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_encoding_override">test_xslt_encoding_override()</a><br />
+<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 />
 <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_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_html_output">test_xslt_html_output()</a><br />
+<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 />
 <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_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">test_xslt_include()</a><br />
+<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 />
 <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_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_use_old">test_pytype_annotation_use_old()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation">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_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_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 />
+<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_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_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 />
+<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_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_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_input_partial_doc">test_xslt_input_partial_doc()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_deannotate">test_pytype_deannotate()</a><br />
+<span class="index-where">(in&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 />
 <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_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_invalid_stylesheet">test_xslt_invalid_stylesheet()</a><br />
+<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 />
 <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 />
 <span class="index-where">(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 />
+<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_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_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 />
+<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_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_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 />
+<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_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">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 />
+<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_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_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 />
+<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_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">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_invalid">test_xslt_parameter_invalid()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new">test_qname_attribute_resolve_new()</a><br />
+<span class="index-where">(in&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 />
 <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 />
 <span class="index-where">(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_missing">test_xslt_parameter_missing()</a><br />
+<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 />
 <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 />
 <span class="index-where">(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 />
+<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_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_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 />
+<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_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_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 />
+<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_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_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 />
+<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_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_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_id">test_xslt_pi_embedded_id()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_space">test_qname_space()</a><br />
+<span class="index-where">(in&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 />
 <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_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_embedded_xmlid">test_xslt_pi_embedded_xmlid()</a><br />
+<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 />
 <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 />
 <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">test_xslt_pi_get()</a><br />
+<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 />
 <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 />
 <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">test_xslt_pi_get_all()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_type_stringify">test_registered_type_stringify()</a><br />
+<span class="index-where">(in&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 />
 <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 />
 <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_all_reversed">test_xslt_pi_get_all_reversed()</a><br />
+<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 />
 <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_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_get_unknown">test_xslt_pi_get_unknown()</a><br />
+<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 />
 <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_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_new">test_xslt_pi_set_new()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_boolean">test_rel_xpath_boolean()</a><br />
+<span class="index-where">(in&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 />
 <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_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_pi_set_replace">test_xslt_pi_set_replace()</a><br />
+<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 />
 <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 />
 <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_repeat_transform">test_xslt_repeat_transform()</a><br />
+<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 />
 <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_relaxng.RelaxNGCompactTestCase-class.html#test_relaxng_compact_file_obj">test_relaxng_compact_file_obj()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng">test_relaxng()</a><br />
+<span class="index-where">(in&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 />
+<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_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 />
 <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 />
+<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.RelaxNGCompactTestCase-class.html#test_relaxng_compact_str">test_relaxng_compact_str()</a><br />
+<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>
 </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 />
+<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_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_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 />
 <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_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_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_error">test_relaxng_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_elementtree_error">test_relaxng_elementtree_error()</a><br />
 <span class="index-where">(in&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 />
 <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_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_include">test_relaxng_include()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_error">test_relaxng_error()</a><br />
 <span class="index-where">(in&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>
 </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_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_schema">test_relaxng_invalid_schema()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_include">test_relaxng_include()</a><br />
 <span class="index-where">(in&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 />
 <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_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_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_schema2">test_relaxng_invalid_schema2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema">test_relaxng_invalid_schema()</a><br />
 <span class="index-where">(in&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 />
 <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_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_schema3">test_relaxng_invalid_schema3()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema2">test_relaxng_invalid_schema2()</a><br />
 <span class="index-where">(in&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 />
 <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_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_invalid_schema4">test_relaxng_invalid_schema4()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema3">test_relaxng_invalid_schema3()</a><br />
 <span class="index-where">(in&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 />
+<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_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-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_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_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 />
+<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.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_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_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 />
-<span class="index-where">(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.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._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_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_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">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._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_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_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_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.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">test_etree_sax_pi()</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 />
+<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="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_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_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 />
-<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_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.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_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_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_etree.ETreeOnlyTestCase-class.html#test_replace_new">test_replace_new()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace">test_replace()</a><br />
 <span class="index-where">(in&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_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.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.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">test_events()</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_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.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.TextareaElement-class.html">TextareaElement</a></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 />
-<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 />
+<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 />
 <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_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 />
+<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 />
 <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_math">test_exslt_math()</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_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#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_match">test_exslt_regexp_match()</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_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.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_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_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_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_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_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_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_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_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_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_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 />
+<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_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_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_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_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_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_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_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_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_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">test_exslt_str()</a><br />
+<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_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_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_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_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_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_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_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 />
+<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 />
 <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">test_extension_element()</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_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_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">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_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-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_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_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_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">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_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_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_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 />
-<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_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">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_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_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_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_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_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_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_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_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_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_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_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_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_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 />
+<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_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_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_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_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_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">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_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 />
-<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_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_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_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_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_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_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_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_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_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_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_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_element">test_schematron_from_element()</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_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.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 />
+<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 />
 <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_extensions1">test_extensions1()</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_from_tree">test_schematron_from_tree()</a><br />
+<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.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_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 />
+<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 />
 <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_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_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 />
+<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.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>
+<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_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_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">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.diff-module.html#tokenize">tokenize()</a><br />
+<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_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_namespace">test_schematron_invalid_schema_namespace()</a><br />
+<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-module.html#tokenize_annotated">tokenize_annotated()</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_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_namespace">test_schematron_invalid_schema_namespace()</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.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>
+<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_phases">test_schematron_phases()</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.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 />
+<span class="index-where">(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.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_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_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_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-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_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_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_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#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_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_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_result_report">test_schematron_result_report()</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#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_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 />
+<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 />
 <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">test_feed_parser_recover()</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_store_xslt">test_schematron_store_xslt()</a><br />
+<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.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_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 />
+<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 />
 <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._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 />
+<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 />
 <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_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.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.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.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_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_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_close">test_filelike_close()</a><br />
+<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_dtd.ETreeDtdTestCase-class.html#test_set_decl_system">test_set_decl_system()</a><br />
+<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.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_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.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.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_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="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="xml.etree.ElementTree.TreeBuilder-class.html">TreeBuilder</a></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_elementtree._ETreeTestCaseBase-class.html#test_set_text2">test_set_text2()</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_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="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_different_nsmaps">test_findall_different_nsmaps()</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_empty">test_set_text_empty()</a><br />
+<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.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_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 />
+<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 />
 <span class="index-where">(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_elementtree._ETreeTestCaseBase-class.html#test_findall_ns">test_findall_ns()</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_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.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_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 />
+<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 />
 <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_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"><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">&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 Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b376d78..33c2359 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4acb7f8..4c96835 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8430286..5a91173 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6a144b1..5fa235d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ce1a4af..d92abe5 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1c95a08..4d645be 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 51b3354..6231ccc 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8a5d0d4..8f8d63d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:03 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5b59b7b..6092607 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fd50d54..5dd87e2 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0773480..82b5dd2 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 24ef186..e53773e 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 Sun Jul 24 10:56:06 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c4ef47e..086ba4a 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a7f4502..4e702dc 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e2c330d..009a64e 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 Sun Jul 24 10:56:09 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d8e19d1..6c6ff1f 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 771c453..b81a86a 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c564d87..80092ca 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 885dc89..fa5a52a 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d1ea04e..310d36b 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 659f39f..abc36dd 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e544531..f3bb8da 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 474f79a..a52fb54 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 Sun Jul 24 10:56:09 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 76456a3..e0937b1 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8390678..b9186d7 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 49a71fd..ff6e87e 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d5eed1d..ac9a7e1 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.1
+        3.6.0
       </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, schema: XMLSchema =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, XMLSchema schema=None,                    recover=True, 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, 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>
+        <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>
     </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 0x2b8b5c8483f0&gt;,
+mlElement *)&quot; at 0x2ab25817e480&gt;,
  'appendChildToElement': &lt;capsule object &quot;int (struct LxmlElement *, s\
-truct LxmlElement *)&quot; at 0x2b8b5c848420&gt;,
+truct LxmlElement *)&quot; at 0x2ab25817e4b0&gt;,
  'attributeValue': &lt;capsule object &quot;PyObject *(xmlNode *, xmlAttr *)&quot; \
-at 0x2b8b5c8480c0&gt;,
+at 0x2ab25817e150&gt;,
  'attributeValueFromNsName': &lt;capsule object &quot;PyObject *(xmlNode *, co\
-nst xmlChar *, const xmlChar *)&quot; at 0x2b8b5c8480f0&gt;,
+nst xmlChar *, const xmlChar *)&quot; at 0x2ab25817e180&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 0x2b8b5c8480f0&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 0x2b8b585208a0&gt;">&lt;lxml.etree._MemDebug object at 0x2b8b585208a0&gt;</code>
+        <a name="memory_debugger"></a><span class="summary-name">memory_debugger</span> = <code title="&lt;lxml.etree._MemDebug object at 0x2ab253e568a0&gt;">&lt;lxml.etree._MemDebug object at 0x2ab253e568a0&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 0x2b8b5c8483f0&gt;<code class="variable-op">,</code>
+mlElement *)&quot; at 0x2ab25817e480&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 0x2b8b5c848420&gt;<code class="variable-op">,</code>
+truct LxmlElement *)&quot; at 0x2ab25817e4b0&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 0x2b8b5c8480c0&gt;<code class="variable-op">,</code>
+at 0x2ab25817e150&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 0x2b8b5c8480f0&gt;<code class="variable-op">,</code>
+nst xmlChar *, const xmlChar *)&quot; at 0x2ab25817e180&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 0x2b8b5c8480f0&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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a46e0dd..4027385 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c0c8160..6cfd760 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7fd5dfb..e77a6c8 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 84ca30b..28740a6 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 20e1f5d..77694d5 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 772a657..66bb3eb 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ce25f77..6a82327 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f6c3f98..5d27d46 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index edfece7..1c2ec1d 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 14df502..0f55ba6 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bba8e1c..80aef17 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 02b3b0f..a0dc79c 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index de35ed7..7605554 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0f0b31a..c796390 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ce355ae..326cc84 100644 (file)
@@ -73,7 +73,7 @@ object --+
 <dl><dt>Known Subclasses:</dt>
 <dd>
       <ul class="subclass-list">
-<li><a href="lxml.objectify.ObjectifiedElement-class.html">objectify.ObjectifiedElement</a></li><li>, <a href="lxml.html.HtmlElement-class.html">html.HtmlElement</a></li><li>, <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html">tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class</a></li><li>, <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class-class.html">tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class</a></li><li>, <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html">tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class</a></li>  </ul>
+<li><a href="lxml.objectify.ObjectifiedElement-class.html">objectify.ObjectifiedElement</a></li><li>, <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html">tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class</a></li><li>, <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class-class.html">tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class</a></li><li>, <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html">tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class</a></li><li>, <a href="lxml.html.HtmlElement-class.html">html.HtmlElement</a></li>  </ul>
 </dd></dl>
 
 <hr />
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 91a5b78..4fbc747 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d60f8a1..60ea955 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a75121b..51078bd 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 53dbad4..44b4cc7 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 720bae3..9b1470c 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 813f725..559b687 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1779460..6f6077c 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index aa386b5..addc423 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f1ea2a1..2818b41 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6d47e08..4974bbc 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6745281..27ca5bb 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 910391d..f655619 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a2f2a19..069fba5 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, schema: XMLSchema =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, XMLSchema schema=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">schema: XMLSchema</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">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">schema: XMLSchema</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">XMLSchema schema</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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 170c9f9..d88dcbf 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7b08a16..3ddc170 100644 (file)
@@ -77,7 +77,7 @@ exceptions.BaseException --+
 <dl><dt>Known Subclasses:</dt>
 <dd>
       <ul class="subclass-list">
-<li><a href="lxml.etree.C14NError-class.html">C14NError</a></li><li>, <a href="lxml.etree.DTDError-class.html">DTDError</a></li><li>, <a href="lxml.etree.DocumentInvalid-class.html">DocumentInvalid</a></li><li>, <a href="lxml.etree.LxmlRegistryError-class.html">LxmlRegistryError</a></li><li>, <a href="lxml.etree.LxmlSyntaxError-class.html">LxmlSyntaxError</a></li><li>, <a href="lxml.etree.ParserError-class.html">ParserError</a></li><li>, <a href="lxml.etree.RelaxNGError-class.html">RelaxNGError</a></li><li>, <a href="lxml.etree.SchematronError-class.html">SchematronError</a></li><li>, <a href="lxml.etree.SerialisationError-class.html">SerialisationError</a></li><li>, <a href="lxml.etree.XIncludeError-class.html">XIncludeError</a></li><li>, <a href="lxml.etree.XMLSchemaError-class.html">XMLSchemaError</a></li><li>, <a href="lxml.etree.XPathError-class.html">XPathError</a></li><li>, <a href="lxml.etree.XSLTError-class.html">XSLTError</a></li><li>, <a href="lxml.sax.SaxError-class.html">sax.SaxError</a></li>  </ul>
+<li><a href="lxml.sax.SaxError-class.html">sax.SaxError</a></li><li>, <a href="lxml.etree.LxmlSyntaxError-class.html">LxmlSyntaxError</a></li><li>, <a href="lxml.etree.C14NError-class.html">C14NError</a></li><li>, <a href="lxml.etree.DTDError-class.html">DTDError</a></li><li>, <a href="lxml.etree.DocumentInvalid-class.html">DocumentInvalid</a></li><li>, <a href="lxml.etree.LxmlRegistryError-class.html">LxmlRegistryError</a></li><li>, <a href="lxml.etree.ParserError-class.html">ParserError</a></li><li>, <a href="lxml.etree.RelaxNGError-class.html">RelaxNGError</a></li><li>, <a href="lxml.etree.SchematronError-class.html">SchematronError</a></li><li>, <a href="lxml.etree.SerialisationError-class.html">SerialisationError</a></li><li>, <a href="lxml.etree.XIncludeError-class.html">XIncludeError</a></li><li>, <a href="lxml.etree.XMLSchemaError-class.html">XMLSchemaError</a></li><li>, <a href="lxml.etree.XPathError-class.html">XPathError</a></li><li>, <a href="lxml.etree.XSLTError-class.html">XSLTError</a></li>  </ul>
 </dd></dl>
 
 <hr />
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 157fdef..63c7c71 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4efad7f..7b34d33 100644 (file)
@@ -89,7 +89,7 @@ exceptions.BaseException --+           |
 <dl><dt>Known Subclasses:</dt>
 <dd>
       <ul class="subclass-list">
-<li><a href="lxml.etree.ParseError-class.html">ParseError</a></li><li>, <a href="lxml.etree.XPathSyntaxError-class.html">XPathSyntaxError</a></li><li>, <a href="lxml.ElementInclude.FatalIncludeError-class.html">ElementInclude.FatalIncludeError</a></li>  </ul>
+<li><a href="lxml.ElementInclude.FatalIncludeError-class.html">ElementInclude.FatalIncludeError</a></li><li>, <a href="lxml.etree.ParseError-class.html">ParseError</a></li><li>, <a href="lxml.etree.XPathSyntaxError-class.html">XPathSyntaxError</a></li>  </ul>
 </dd></dl>
 
 <hr />
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1e65534..58463a8 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7242872..4e79fd9 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index af13866..203e530 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4c8da8e..0ab5d55 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f1a8ff4..c8be57d 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 97c2e3e..70d21c9 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 053c08b..30c441e 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fd4aace..df2236c 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0d4523d..115f323 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 71c7053..5c54bf6 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b91aad5..60b65e8 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8868c68..46873ec 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 79cad83..f760915 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 75b0187..8d7bbd7 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9cc4173..d2cec8e 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 822c3b9..abc4f57 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5680cdd..195ffa7 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 138c36b..c4849b4 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1df38e7..6fbb77d 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e86e222..8575909 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3a3bc83..57429a7 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index de557a9..87c51a0 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a3c4e62..b6363c1 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 18b0c53..299535e 100644 (file)
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 23ba2df..e511f39 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3e1e950..b45ff16 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e7a49fa..356263e 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9b710a4..0045518 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4168d39..0a6afc9 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 94fc25f..da7119a 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 553a2f1..b9e2af6 100644 (file)
@@ -73,7 +73,7 @@
 <dl><dt>Known Subclasses:</dt>
 <dd>
       <ul class="subclass-list">
-<li><a href="lxml.etree.ETXPath-class.html">ETXPath</a></li><li>, <a href="lxml.cssselect.CSSSelector-class.html">cssselect.CSSSelector</a></li>  </ul>
+<li><a href="lxml.cssselect.CSSSelector-class.html">cssselect.CSSSelector</a></li><li>, <a href="lxml.etree.ETXPath-class.html">ETXPath</a></li>  </ul>
 </dd></dl>
 
 <hr />
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d05961b..8d67e6a 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c81079e..108fa6b 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 825137e..9c2450c 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 915e4fc..ee3a587 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 31a8460..e017f96 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e21b70a..6218809 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e89c319..87ccee2 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2905bce..6a1b7ae 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6644f00..bb69739 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c5c30dc..91f025b 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cd5220f..8ca5c85 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d9e4433..bfc725a 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d87d6c3..5828dca 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 40bd8c0..1f23ba0 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e35d9fa..80134ed 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2b3c2c0..2012dd7 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 87645ec..2e47fd5 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6866cd0..8ae52cd 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4d29d34..2e4167e 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cda6ab0..7dfeb0c 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b1bd7e5..40e7f4a 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 323c373..d9d420e 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e694afe..63feb04 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3cc7118..3ab9fb6 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 52680c8..aa11f9a 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 59ac7cf..7e70bde 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5bd7472..ab17294 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9712f45..bfc02f4 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index feb0bd0..2a1d257 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f74b759..894d86c 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ea2c6a0..eba7a3c 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8b2fc6c..7b0e9cf 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e118f7..6f58313 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8b6372a..22d98e7 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ca19e39..0a509c5 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4d57f00..bb5f660 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7e9d493..52ddbc4 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 42cb7a8..fe56c37 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 90703b8..b459551 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0192174..d5fdaec 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e21084..33eb5e5 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6219ffe..44eac23 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 821fa5e..19845a3 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d1775c8..03cc3c0 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5bcddb6..beca1e2 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d959223..c967b04 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 0x2b8b5da01ad0&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da01ad0&gt;</code>
+        <a name="find_class"></a><span class="summary-name">find_class</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2ab2593eea50&gt;">&lt;lxml.html._MethodFunc object at 0x2ab2593eea50&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 0x2b8b5da01a90&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da01a90&gt;</code>
+        <a name="find_rel_links"></a><span class="summary-name">find_rel_links</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2ab2593eea10&gt;">&lt;lxml.html._MethodFunc object at 0x2ab2593eea10&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 0x2b8b5d9a6890&gt;">&lt;lxml.html.HTMLParser object at 0x2b8b5d9a6890&gt;</code>
+        <a name="html_parser"></a><span class="summary-name">html_parser</span> = <code title="&lt;lxml.html.HTMLParser object at 0x2ab259393890&gt;">&lt;lxml.html.HTMLParser object at 0x2ab259393890&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 0x2b8b5da01b90&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da01b90&gt;</code>
+        <a name="iterlinks"></a><span class="summary-name">iterlinks</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2ab2593eeb10&gt;">&lt;lxml.html._MethodFunc object at 0x2ab2593eeb10&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 0x2b8b5da01b10&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5<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 0x2ab2593eea90&gt;">&lt;lxml.html._MethodFunc object at 0x2ab25<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 0x2b8b5da01b50&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da<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 0x2ab2593eead0&gt;">&lt;lxml.html._MethodFunc object at 0x2ab2593<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 0x2b8b5da01bd0&gt;">&lt;lxml.html._MethodFunc object at 0x2b8b5da01bd0&gt;</code>
+        <a name="rewrite_links"></a><span class="summary-name">rewrite_links</span> = <code title="&lt;lxml.html._MethodFunc object at 0x2ab2593eeb50&gt;">&lt;lxml.html._MethodFunc object at 0x2ab2593eeb50&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 0x2b8b5d9a6940&gt;">&lt;lxml.html.XHTMLParser object at 0x2b8b5d9a6940&gt;</code>
+        <a name="xhtml_parser"></a><span class="summary-name">xhtml_parser</span> = <code title="&lt;lxml.html.XHTMLParser object at 0x2ab259393940&gt;">&lt;lxml.html.XHTMLParser object at 0x2ab259393940&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 0x2b8b5da01b10&gt;
+&lt;lxml.html._MethodFunc object at 0x2ab2593eea90&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 0x2b8b5da01b50&gt;
+&lt;lxml.html._MethodFunc object at 0x2ab2593eead0&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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f2d12b7..caaf8b1 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-string">'file'</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-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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:14 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6d8fbad..a361e0d 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9ef9c63..88f8505 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8bd22d6..15fdad1 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 0x2b8b5da01910&gt;">&lt;_weakrefset.WeakSet object at 0x2b8b5da<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 0x2ab2593ee890&gt;">&lt;_weakrefset.WeakSet object at 0x2ab2593<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 0x2b8b5da012d0&gt;">&lt;_weakrefset.WeakSet object at 0x2b8b5da012d0&gt;</code>
+        <a name="_abc_registry"></a><span class="summary-name">_abc_registry</span> = <code title="&lt;_weakrefset.WeakSet object at 0x2ab2593ee250&gt;">&lt;_weakrefset.WeakSet object at 0x2ab2593ee250&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 0x2b8b5da01910&gt;
+&lt;_weakrefset.WeakSet object at 0x2ab2593ee890&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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a7edcbb..87606d4 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3698268..398accd 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 27d478c..78a1f3e 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 0x2b8b5da01e10&gt;">&lt;_weakrefset.WeakSet object at 0x2b8b5da<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 0x2ab2593eed90&gt;">&lt;_weakrefset.WeakSet object at 0x2ab2593<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 0x2b8b5da01cd0&gt;">&lt;_weakrefset.WeakSet object at 0x2b8b5da01cd0&gt;</code>
+        <a name="_abc_registry"></a><span class="summary-name">_abc_registry</span> = <code title="&lt;_weakrefset.WeakSet object at 0x2ab2593eec50&gt;">&lt;_weakrefset.WeakSet object at 0x2ab2593eec50&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 0x2b8b5da01e10&gt;
+&lt;_weakrefset.WeakSet object at 0x2ab2593eed90&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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 728e8a0..3ca492c 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d5683d9..1e7fb8a 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f0fb18d..bc98f3e 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 27af43b..4d07dd8 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d4aac0c..08b5b41 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fabd055..bb66312 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fbc1297..1253011 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bed3fb1..429f7f1 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e8737a7..a9c26d9 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c8253c3..f32c92f 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f764aff..4dbc4c0 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7c059ad..45293d4 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8d6d6d3..6dd63cb 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fe247f0..94c1805 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b0b5d65..b0c9067 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 417a33f..32c9eb5 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 62a2f7a..c7ca8ce 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d12aa28..d0e75e8 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5e5139c..03fe92f 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5a4ac0d..46c33ed 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 Sun Jul 24 10:56:06 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:11 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b213261..62a3ef0 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 16888f2..0b9eed8 100644 (file)
@@ -198,1079 +198,1070 @@ 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="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="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="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">    ``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="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="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">    ``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="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="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_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="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="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">    ``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
+<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
 lxml.etree._Entity.name
 lxml.html.InputMixin.name
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Element.items
-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._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._Entity.name
 lxml.html.InputMixin.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.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.etree._Entity.name
 lxml.html.InputMixin.name
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Entity.name
 lxml.html.InputMixin.name
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-85', 'tag', 'link-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
+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
 lxml.html.Classes.add
-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.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.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-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.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
+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
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.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
+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
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-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
+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
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-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.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.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-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
+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
 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-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.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
+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
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.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
+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
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-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
+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
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-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.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.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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.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.attrib
 lxml.tests.selftest2.attrib
-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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._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._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-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
+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
 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-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
+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
 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-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
+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
 lxml.html.Classes.add
-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.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.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 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.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.html.Classes.add
-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.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.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-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.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.html.Classes.add
-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.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.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-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.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.html.Classes.add
-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.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.etree._Element.get
 lxml.etree._IDDict.get
-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.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.html.Classes.add
-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.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.etree._ElementStringResult.getparent
-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._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._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-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
+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
 lxml.etree._ElementStringResult.getparent
-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.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.html.Classes.add
-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.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.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-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
+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
 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-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
+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
 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-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
+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
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-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
+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
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-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._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._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-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
+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
 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-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
+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
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-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._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._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-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
+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
 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-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
+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
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-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
+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
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-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._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._Element.get
 lxml.etree._IDDict.get
-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._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._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-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
+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
 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-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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._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._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-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
+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
 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-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
+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
 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-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.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.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="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.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.href_token.html
 lxml.html.diff.tag_token.html
-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.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.html5parser.fromstring
 lxml.html.soupparser.fromstring
-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.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.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-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.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.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-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.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.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-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.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.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-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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._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._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.etree.iterparse.makeelement
-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.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.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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 lxml.etree.iterparse.makeelement
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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="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.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.href_token.html
 lxml.html.diff.tag_token.html
-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.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.html5parser.fromstring
 lxml.html.soupparser.fromstring
-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.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.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-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.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.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-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.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.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-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.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.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-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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._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._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 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-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
+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
 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-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.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.html5parser.fromstring
 lxml.html.soupparser.fromstring
-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.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.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 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-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
+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
 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-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">
+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">
 <!--
 expandto(location.href);
 // -->
@@ -1308,7 +1299,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 Sun Jul 24 10:56:09 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b22e8cb..5b9ec6a 100644 (file)
@@ -82,9 +82,7 @@ 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.</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>
+<dd>Removes any style tags or attributes.</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>
@@ -426,14 +424,6 @@ checks for attempt to do stuff like this.</td>
     <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>
-    </td><td class="summary">
         <a name="links"></a><span class="summary-name">links</span> = <code title="True">True</code>
     </td>
   </tr>
@@ -769,7 +759,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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4b4ecb4..fd13d1b 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7ff46db..15d5ebe 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 Sun Jul 24 10:56:09 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ad68428..8ad0d22 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 0x2b8b5f2dac80&gt;</span>)</span><br />
+        <span class="summary-sig-arg">markup</span>=<span class="summary-sig-default">&lt;function default_markup at 0x2ab25b838f50&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 0x2b8b5f2dac80&gt;</span>)</span>
+        <span class="sig-arg">markup</span>=<span class="sig-default">&lt;function default_markup at 0x2ab25b838f50&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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 36da41f..a029e21 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 Sun Jul 24 10:56:09 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2f7e906..3ebc648 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d7bab5a..e2e1fbb 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8f5cb72..f7c6f0e 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 76e0f1b..08005d8 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dd36290..5890ae6 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 222c9c9..4158e73 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3f33453..caaae9f 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dab498c..50356cc 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4d89b71..b9a9e0a 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b0cc50b..aa8a140 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 68e7bd1..5eec635 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7c93783..199bc34 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a64785d..41d8c01 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index af5c158..c6b74ed 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bdf4ded..443b02c 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b760144..6848d5d 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7e7ed72..8e459ef 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a233a71..dd9f349 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e452452..f7f6736 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index faa241e..3c939a9 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dfa025d..7c562d1 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8ced2c0..28ae9cf 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:14 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fbd49c3..47a50fc 100644 (file)
@@ -225,8 +225,8 @@ kwargsDict entries with a value of None are ignored.</td>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.isoschematron-module.html#_resources_dir" class="summary-name" onclick="show_private();">_resources_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/isoschematron/r\
-esources'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.isoschematron-module.html#_resources_dir" class="summary-name" onclick="show_private();">_resources_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/isoschematron/resour\
+ces'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -372,8 +372,8 @@ Else convert arg to string.</p>
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/isoschematron/r</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-<code class="variable-string">esources</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/isoschematron/resour</code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-string">ces</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8db15d1..522cfe6 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a2173c4..e69c38c 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 363635a..d7dfbe4 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.1
+        3.6.0
       </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 0x2b8b5e0079b0&gt;">&lt;lxml.objectify.ElementMaker object at 0x2b8b5e0079b0&gt;</code>
+        <a name="E"></a><span class="summary-name">E</span> = <code title="&lt;lxml.objectify.ElementMaker object at 0x2ab259f78ad0&gt;">&lt;lxml.objectify.ElementMaker object at 0x2ab259f78ad0&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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c3f39ce..15aa528 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d7df1ab..3cb7940 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 705604e..22a4ba3 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4dfbf52..f94ddf0 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8fec48f..19a433d 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7fdb88b..d326408 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6845bc0..7fd53c6 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c4f77ca..74019de 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fc9b557..09cd1d5 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7a34ade..bce5d56 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a564c0c..cc57eeb 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9eef80b..297de80 100644 (file)
@@ -71,14 +71,11 @@ 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, 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>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>Example:</p>
 <pre class="rst-literal-block">
 PyType('int', int, MyIntClass).register()
@@ -446,7 +443,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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ba3cd4d..92d72b2 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c87b32e..10900fc 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d2a5f70..f8997bb 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 Sun Jul 24 10:56:06 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7ab0a92..dcc60d6 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b0d1f52..55bf75c 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8d1239d..95fdb49 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c75fd7c..5ff632e 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 51dad64..03a8072 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 139c546..40665f2 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9713704..59cdf72 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f07f4d8..0a37ed2 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c715f45..53e6155 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:14 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e793d02..9796eb4 100644 (file)
@@ -74,7 +74,7 @@ unittest.case.TestCase --+
 <dl><dt>Known Subclasses:</dt>
 <dd>
       <ul class="subclass-list">
-<li><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">test_xslt.ETreeEXSLTTestCase</a></li><li>, <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">test_xslt.ETreeXSLTExtElementTestCase</a></li><li>, <a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">test_xslt.ETreeXSLTExtFuncTestCase</a></li><li>, <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">test_xslt.ETreeXSLTTestCase</a></li><li>, <a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">test_xslt.Py3XSLTTestCase</a></li><li>, <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">test_dtd.ETreeDtdTestCase</a></li><li>, <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">test_isoschematron.ETreeISOSchematronTestCase</a></li><li>, <a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">test_http_io.HttpIOTestCase</a></li><li>, <a href="lxml.tests.test_errors.ErrorTestCase-class.html">test_errors.ErrorTestCase</a></li><li>, <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">test_pyclasslookup.PyClassLookupTestCase</a></li><li class="private">, <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">test_incremental_xmlfile._XmlFileTestCaseBase</a></li><li>, <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">test_objectify.ObjectifyTestCase</a></li><li>, <a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">test_schematron.ETreeSchematronTestCase</a></li><li class="private">, <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">test_io._IOTestCaseBase</a></li><li class="private">, <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">test_elementtree._ETreeTestCaseBase</a></li><li>, <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">test_relaxng.ETreeRelaxNGTestCase</a></li><li>, <a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html">test_relaxng.RelaxNGCompactTestCase</a></li><li>, <a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">test_doctestcompare.DoctestCompareTest</a></li><li>, <a href="lxml.tests.test_builder.BuilderTestCase-class.html">test_builder.BuilderTestCase</a></li><li>, <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">test_etree.ETreeC14NTestCase</a></li><li>, <a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html">test_etree.ETreeErrorLogTest</a></li><li>, <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">test_etree.ETreeOnlyTestCase</a></li><li>, <a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">test_etree.ETreeWriteTestCase</a></li><li class="private">, <a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">test_etree._XIncludeTestCase</a></li><li>, <a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">test_unicode.EncodingsTestCase</a></li><li>, <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">test_unicode.UnicodeTestCase</a></li><li>, <a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html">test_xpathevaluator.ETreeETXPathClassTestCase</a></li><li>, <a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">test_xpathevaluator.ETreeXPathClassTestCase</a></li><li>, <a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html">test_xpathevaluator.ETreeXPathExsltTestCase</a></li><li>, <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">test_xpathevaluator.ETreeXPathTestCase</a></li><li>, <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">test_classlookup.ClassLookupTestCase</a></li><li>, <a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">test_classlookup.ProxyTestCase</a></li><li>, <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">test_nsclasses.ETreeNamespaceClassesTestCase</a></li><li>, <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">test_xmlschema.ETreeXMLSchemaResolversTestCase</a></li><li>, <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">test_xmlschema.ETreeXMLSchemaTestCase</a></li><li>, <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">test_htmlparser.HtmlParserTestCase</a></li><li>, <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">test_sax.ETreeSaxTestCase</a></li><li>, <a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html">test_elementpath.EtreeElementPathTestCase</a></li><li>, <a href="lxml.tests.test_css.CSSTestCase-class.html">test_css.CSSTestCase</a></li><li>, <a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">test_threading.ThreadPipelineTestCase</a></li><li>, <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">test_threading.ThreadingTestCase</a></li>  </ul>
+<li><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">test_xslt.ETreeEXSLTTestCase</a></li><li>, <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">test_xslt.ETreeXSLTExtElementTestCase</a></li><li>, <a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">test_xslt.ETreeXSLTExtFuncTestCase</a></li><li>, <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">test_xslt.ETreeXSLTTestCase</a></li><li>, <a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">test_xslt.Py3XSLTTestCase</a></li><li>, <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">test_etree.ETreeC14NTestCase</a></li><li>, <a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html">test_etree.ETreeErrorLogTest</a></li><li>, <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">test_etree.ETreeOnlyTestCase</a></li><li>, <a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">test_etree.ETreeWriteTestCase</a></li><li class="private">, <a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">test_etree._XIncludeTestCase</a></li><li>, <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">test_dtd.ETreeDtdTestCase</a></li><li>, <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">test_classlookup.ClassLookupTestCase</a></li><li>, <a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">test_classlookup.ProxyTestCase</a></li><li>, <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">test_objectify.ObjectifyTestCase</a></li><li class="private">, <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">test_incremental_xmlfile._XmlFileTestCaseBase</a></li><li>, <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">test_sax.ETreeSaxTestCase</a></li><li>, <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">test_pyclasslookup.PyClassLookupTestCase</a></li><li class="private">, <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">test_elementtree._ETreeTestCaseBase</a></li><li>, <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">test_isoschematron.ETreeISOSchematronTestCase</a></li><li>, <a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">test_unicode.EncodingsTestCase</a></li><li>, <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">test_unicode.UnicodeTestCase</a></li><li>, <a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html">test_elementpath.EtreeElementPathTestCase</a></li><li>, <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">test_nsclasses.ETreeNamespaceClassesTestCase</a></li><li>, <a href="lxml.tests.test_builder.BuilderTestCase-class.html">test_builder.BuilderTestCase</a></li><li>, <a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html">test_xpathevaluator.ETreeETXPathClassTestCase</a></li><li>, <a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">test_xpathevaluator.ETreeXPathClassTestCase</a></li><li>, <a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html">test_xpathevaluator.ETreeXPathExsltTestCase</a></li><li>, <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">test_xpathevaluator.ETreeXPathTestCase</a></li><li>, <a href="lxml.tests.test_errors.ErrorTestCase-class.html">test_errors.ErrorTestCase</a></li><li>, <a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">test_doctestcompare.DoctestCompareTest</a></li><li>, <a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">test_http_io.HttpIOTestCase</a></li><li class="private">, <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">test_io._IOTestCaseBase</a></li><li>, <a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">test_schematron.ETreeSchematronTestCase</a></li><li>, <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">test_xmlschema.ETreeXMLSchemaResolversTestCase</a></li><li>, <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">test_xmlschema.ETreeXMLSchemaTestCase</a></li><li>, <a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">test_threading.ThreadPipelineTestCase</a></li><li>, <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">test_threading.ThreadingTestCase</a></li><li>, <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">test_htmlparser.HtmlParserTestCase</a></li><li>, <a href="lxml.tests.test_css.CSSTestCase-class.html">test_css.CSSTestCase</a></li><li>, <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">test_relaxng.ETreeRelaxNGTestCase</a></li><li>, <a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html">test_relaxng.RelaxNGCompactTestCase</a></li>  </ul>
 </dd></dl>
 
 <hr />
@@ -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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 20d85b2..4b7b98a 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1bc9d62..0db0bef 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bc3704e..97c67de 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index da3dd14..292c7ed 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f702573..fa7e2b8 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 83d492a..1496966 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9d77947..5cc6a65 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c15b5f0..f026011 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 531f050..2ee2541 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 45a82b4..22b0d2b 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b914498..cd916e5 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 074bf06..4ab4fa1 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a2ed632..97df930 100644 (file)
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_builder-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_builder-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 64fe312..57709f6 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 Sun Jul 24 10:56:09 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bf3f718..1fd259d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1f2735f..bd5963f 100644 (file)
@@ -153,7 +153,7 @@ Tests for different Element class lookup mechanisms.
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_classlookup-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_classlookup-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -207,7 +207,7 @@ Tests for different Element class lookup mechanisms.
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 055a196..0623cf9 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1ae2a22..5750405 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9052d0c..9d8d663 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1cbbeab..396b1fd 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6cd06a6..c3b6e54 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f1414f6..ba062a9 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3eb423f..06778b9 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7b09c1b..258e01d 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 464b4cc..2b33340 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 70bcae5..4f7f58d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f9270e3..d337c17 100644 (file)
@@ -144,7 +144,7 @@ Test cases related to DTD parsing and validation
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_dtd-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_dtd-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -185,7 +185,7 @@ Test cases related to DTD parsing and validation
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d71f7e6..8a86dd3 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index be2dbe3..e86085d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 05860c9..27bfdfa 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b45ae6c..4df06ad 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 Sun Jul 24 10:56:09 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3d32f1b..f885122 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d651e2f..a13dded 100644 (file)
@@ -198,7 +198,7 @@ for IO related test cases.</p>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_elementtree-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_elementtree-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -255,7 +255,7 @@ for IO related test cases.</p>
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 01f180e..da9a36d 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 56f3049..e75cf70 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 90aa138..a3d4153 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7d112dd..05e7978 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 717df69..2444d33 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 70b15f6..f0e2d73 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9f73437..f5d06e0 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 983a8d3..71acbe2 100644 (file)
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_errors-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_errors-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5241e68..dd9206d 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 43b3a53..0000f96 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a0cdb23..bd284ac 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ff8e2e8..7bcfe81 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 Sun Jul 24 10:56:06 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:11 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e99bc79..e2a3354 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:09 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a8662bf..e88b304 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a495256..4310318 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1deabe5..972255d 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 064ff67..ac57619 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5afce6b..7bcb192 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3797715..95f7486 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7823c8a..2488b9a 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4ff1a48..d4450ca 100644 (file)
@@ -153,7 +153,7 @@ HTML parser test cases for etree
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_htmlparser-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_htmlparser-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -194,7 +194,7 @@ HTML parser test cases for etree
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2d92d8f..b345cfc 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 20e0413..703da7e 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5024a34..50b204a 100644 (file)
@@ -144,7 +144,7 @@ Web IO test cases that need Python 2.5+ (wsgiref)
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_http_io-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_http_io-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -185,7 +185,7 @@ Web IO test cases that need Python 2.5+ (wsgiref)
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9f0938b..3c587c5 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 Sun Jul 24 10:56:06 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2d409ea..29f7236 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 58f65c0..8d94452 100644 (file)
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_incremental_xmlfile-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_incremental_xmlfile-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d059872..9c71137 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 Sun Jul 24 10:56:06 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:11 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8c517f6..e901e0f 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4925d6f..dfb8936 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fa08e65..9d31a9e 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d78dd8f..b0b5956 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 263d8fd..cd970c3 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c522ff4..41667c8 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 261d91d..58017b0 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 194a0f2..414a9a0 100644 (file)
@@ -159,7 +159,7 @@ IO test cases that apply to both etree and ElementTree
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_io-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_io-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -200,7 +200,7 @@ IO test cases that apply to both etree and ElementTree
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e9e0e76..d64f0b6 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8012253..8f19ce5 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index adb5274..99967f2 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e17e09d..e053592 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8d15a67..1557252 100644 (file)
@@ -144,7 +144,7 @@ Test cases related to ISO-Schematron parsing and validation
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_isoschematron-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_isoschematron-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -185,7 +185,7 @@ Test cases related to ISO-Schematron parsing and validation
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ea70145..9d9000a 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 161904a..097d154 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f2e8cbb..aaaec8a 100644 (file)
@@ -145,7 +145,7 @@ namespace registry mechanism
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_nsclasses-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_nsclasses-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -186,7 +186,7 @@ namespace registry mechanism
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9ff8649..9f43873 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e695a5..6c5286e 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 65dea31..13147ab 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ef9676d..df70601 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4eb0bd5..b7606c8 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3c4ab5e..e50e954 100644 (file)
@@ -145,7 +145,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 href="lxml.tests.test_objectify-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_objectify-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -203,15 +203,15 @@ 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 href="lxml.tests.test_objectify-module.html#objectclass2xsitype" class="summary-name">objectclass2xsitype</a> = <code title="{&lt;type 'lxml.objectify.IntElement'&gt;: ('int',
                                     'short',
-                                      'byte',
-                                      'unsignedShort',
-                                      'unsignedByte',
-                                      'integer',
-                                      'nonPositiveInteger',
-                                      'negativeInteger',
-..."><code class="variable-group">{</code>&lt;type 'lxml.objectify.IntElement'&gt;<code class="variable-op">: </code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">i</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_objectify-module.html#objectclass2xsitype" class="summary-name">objectclass2xsitype</a> = <code title="{&lt;type 'lxml.objectify.BoolElement'&gt;: ('boolean'),
&lt;type 'lxml.objectify.StringElement'&gt;: ('string',
+                                         'normalizedString',
+                                         'token',
+                                         'language',
+                                         'Name',
+                                         'NCName',
+                                         'ID',
+..."><code class="variable-group">{</code>&lt;type 'lxml.objectify.BoolElement'&gt;<code class="variable-op">: </code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -233,10 +233,10 @@ 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 href="lxml.tests.test_objectify-module.html#objectclass2pytype" class="summary-name">objectclass2pytype</a> = <code title="{&lt;type 'lxml.objectify.IntElement'&gt;: 'int',
- &lt;type 'lxml.objectify.FloatElement'&gt;: 'float',
+        <a href="lxml.tests.test_objectify-module.html#objectclass2pytype" class="summary-name">objectclass2pytype</a> = <code title="{&lt;type 'lxml.objectify.BoolElement'&gt;: 'bool',
  &lt;type 'lxml.objectify.StringElement'&gt;: 'str',
- &lt;type 'lxml.objectify.BoolElement'&gt;: 'bool'}"><code class="variable-group">{</code>&lt;type 'lxml.objectify.IntElement'&gt;<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">int</code><code class="variable-ellipsis">...</code></code>
+ &lt;type 'lxml.objectify.FloatElement'&gt;: 'float',
+ &lt;type 'lxml.objectify.IntElement'&gt;: 'int'}"><code class="variable-group">{</code>&lt;type 'lxml.objectify.BoolElement'&gt;<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">bo</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -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="'positiveInteger'"><code class="variable-quote">'</code><code class="variable-string">positiveInteger</code><code class="variable-quote">'</code></code>
+        <a name="v"></a><span class="summary-name">v</span> = <code title="'NMTOKEN'"><code class="variable-quote">'</code><code class="variable-string">NMTOKEN</code><code class="variable-quote">'</code></code>
     </td>
   </tr>
 </table>
@@ -309,7 +309,7 @@ Tests specific to the lxml.objectify API
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -401,14 +401,14 @@ Tests specific to the lxml.objectify API
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code>&lt;type 'lxml.objectify.IntElement'&gt;<code class="variable-op">: </code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">int</code><code class="variable-quote">'</code><code class="variable-op">,</code>
                                     <code class="variable-quote">'</code><code class="variable-string">short</code><code class="variable-quote">'</code><code class="variable-op">,</code>
-                                      <code class="variable-quote">'</code><code class="variable-string">byte</code><code class="variable-quote">'</code><code class="variable-op">,</code>
-                                      <code class="variable-quote">'</code><code class="variable-string">unsignedShort</code><code class="variable-quote">'</code><code class="variable-op">,</code>
-                                      <code class="variable-quote">'</code><code class="variable-string">unsignedByte</code><code class="variable-quote">'</code><code class="variable-op">,</code>
-                                      <code class="variable-quote">'</code><code class="variable-string">integer</code><code class="variable-quote">'</code><code class="variable-op">,</code>
-                                      <code class="variable-quote">'</code><code class="variable-string">nonPositiveInteger</code><code class="variable-quote">'</code><code class="variable-op">,</code>
-                                      <code class="variable-quote">'</code><code class="variable-string">negativeInteger</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-group">{</code>&lt;type 'lxml.objectify.BoolElement'&gt;<code class="variable-op">: </code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">boolean</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">,</code>
&lt;type 'lxml.objectify.StringElement'&gt;<code class="variable-op">: </code><code class="variable-group">(</code><code class="variable-quote">'</code><code class="variable-string">string</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+                                         <code class="variable-quote">'</code><code class="variable-string">normalizedString</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+                                         <code class="variable-quote">'</code><code class="variable-string">token</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+                                         <code class="variable-quote">'</code><code class="variable-string">language</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+                                         <code class="variable-quote">'</code><code class="variable-string">Name</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+                                         <code class="variable-quote">'</code><code class="variable-string">NCName</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+                                         <code class="variable-quote">'</code><code class="variable-string">ID</code><code class="variable-quote">'</code><code class="variable-op">,</code>
 <code class="variable-ellipsis">...</code>
 </pre></td></tr></table>
 </dd>
@@ -453,10 +453,10 @@ Tests specific to the lxml.objectify API
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code>&lt;type 'lxml.objectify.IntElement'&gt;<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">int</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- &lt;type 'lxml.objectify.FloatElement'&gt;<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">float</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+<code class="variable-group">{</code>&lt;type 'lxml.objectify.BoolElement'&gt;<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">bool</code><code class="variable-quote">'</code><code class="variable-op">,</code>
  &lt;type 'lxml.objectify.StringElement'&gt;<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">str</code><code class="variable-quote">'</code><code class="variable-op">,</code>
- &lt;type 'lxml.objectify.BoolElement'&gt;<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">bool</code><code class="variable-quote">'</code><code class="variable-group">}</code>
+ &lt;type 'lxml.objectify.FloatElement'&gt;<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">float</code><code class="variable-quote">'</code><code class="variable-op">,</code>
+ &lt;type 'lxml.objectify.IntElement'&gt;<code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">int</code><code class="variable-quote">'</code><code class="variable-group">}</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ae20beb..93c0407 100644 (file)
@@ -2531,824 +2531,793 @@ 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_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
+<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
 lxml.etree._Element.items
-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.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.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="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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.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">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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Element.items
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.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-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Element.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._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._Element.items
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.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 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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 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.BoolElement.pyval
+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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.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.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.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.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
+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
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Element.get
 lxml.etree._IDDict.get
-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>
+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>
 <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-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
+<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
 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="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="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="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 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="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="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line"> </tt>
-<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
+<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
 lxml.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.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.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.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 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.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.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._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.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>
+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>
 <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>
@@ -3360,2178 +3329,2119 @@ 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-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="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="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-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
+<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
 lxml.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._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.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._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._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="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._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._Element.get
 lxml.etree._IDDict.get
-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.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.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.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>
-<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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._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>
-<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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._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_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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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._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._ElementTree.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.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.etree._ElementTree.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.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.etree._ElementTree.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.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.etree._ElementTree.xpath
-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.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.etree._Entity.name
 lxml.html.InputMixin.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.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.etree._Entity.name
 lxml.html.InputMixin.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.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.etree._Entity.name
 lxml.html.InputMixin.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.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.etree._Entity.name
 lxml.html.InputMixin.name
-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.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.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.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.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.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.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.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.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.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 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
+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
 lxml.html.builder.E
-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.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.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.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.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.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.objectify.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.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.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.NoneElement.pyval
 lxml.objectify.NumberElement.pyval
 lxml.objectify.ObjectifiedDataElement.pyval
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.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_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_objectify.xml_str
-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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>
-</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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.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-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
 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>
-</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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.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 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
+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
 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-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
+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
 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 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
+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
 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-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
+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
 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-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
 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="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
+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
 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-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-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
+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
 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-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
 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="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
+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
 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-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
 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>
-</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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.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 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
+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-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
+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
 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-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
+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-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
+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
 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-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
+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-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
+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
 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-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
+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-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
+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
 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-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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.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>
-<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
+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
 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-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.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>
-<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
+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
 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-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.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>
-<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
+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
 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-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.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>
-</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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.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>
-<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
+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
 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-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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 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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.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>
-<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
+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
 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-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
+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
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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.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.etree._Element.get
 lxml.etree._IDDict.get
-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._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._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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.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.etree._Element.get
 lxml.etree._IDDict.get
-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._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._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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._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._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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._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._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.etree._ElementTree.find
 lxml.objectify.ObjectPath.find
 lxml.tests.selftest.find
-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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
+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
 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-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.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_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_objectify.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_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_objectify.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_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_objectify.xml_str
-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.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.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-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.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.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-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.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.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="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-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
 xml.etree.ElementTree
-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
+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
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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_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_objectify.xml_str
-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.builder.E
-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.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.tests.selftest.encoding
-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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.builder.E
-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.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.etree._Element.get
 lxml.etree._IDDict.get
-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.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.html.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.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.html.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.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.html.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.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.html.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.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.html.builder.E
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.cssselect.CSSSelector.__init__
 lxml.doctestcompare._RestoreChecker.__init__
 lxml.etree.AttributeBasedElementClassLookup.__init__
@@ -5602,170 +5512,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-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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._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.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-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.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.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-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.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.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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">
+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">
 <!--
 expandto(location.href);
 // -->
@@ -5803,7 +5713,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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:14 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bebb65e..53b9b6d 100644 (file)
@@ -1791,86 +1791,6 @@ Test cases for lxml.objectify
     </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>
-    <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_xsitypes"></a><span class="summary-sig-name">test_data_element_xsitypes</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_xsitypes">source&nbsp;code</a></span>
@@ -3635,7 +3555,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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index df532d8..e2dbfa5 100644 (file)
@@ -145,7 +145,7 @@ Tests specific to the Python based class lookup.
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_pyclasslookup-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_pyclasslookup-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -201,7 +201,7 @@ Tests specific to the Python based class lookup.
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6366508..cc7af7f 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 65aa376..771f78b 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7420748..e41a76b 100644 (file)
@@ -151,7 +151,7 @@ Test cases related to RelaxNG parsing and validation
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_relaxng-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_relaxng-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -200,7 +200,7 @@ Test cases related to RelaxNG parsing and validation
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f7dff0a..56f02aa 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 Sun Jul 24 10:56:09 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f025b56..fb878c1 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5d7b359..10b7103 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d831c2b..a0581f4 100644 (file)
@@ -144,7 +144,7 @@ Test cases related to SAX I/O
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_sax-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_sax-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -185,7 +185,7 @@ Test cases related to SAX I/O
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 53f56f1..54cfd6c 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 726e7ac..655e8ea 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e10a1ae..f4af7bf 100644 (file)
@@ -144,7 +144,7 @@ Test cases related to Schematron parsing and validation
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_schematron-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_schematron-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -185,7 +185,7 @@ Test cases related to Schematron parsing and validation
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f5f46b7..4ecc115 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d71e289..8233380 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2b1ae17..3beae5a 100644 (file)
@@ -153,7 +153,7 @@ Tests for thread usage in lxml.etree.
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_threading-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_threading-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -194,7 +194,7 @@ Tests for thread usage in lxml.etree.
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 540f553..600f1ab 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 Sun Jul 24 10:56:06 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2c5716e..c4c1f0d 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c73ce32..a88fa0d 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 0x2b8b5d914290&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x2ab259301350&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 0x2b8b5d914290&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x2ab259301350&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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6d8968a..6abf270 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 0x2b8b5d914290&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x2ab259301350&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 0x2b8b5d914290&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x2ab259301350&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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1ca9869..644b07a 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 0x2b8b5d914290&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x2ab259301350&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 0x2b8b5d914290&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x2ab259301350&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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9de5d23..37123cc 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 33f391b..7175b25 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f79e0d4..09d9301 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3aff06a..8924ffb 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 008cac8..260a106 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 25c186e..779565d 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dc03f26..67b7627 100644 (file)
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_unicode-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_unicode-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3f718f9..075c7c6 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 Sun Jul 24 10:56:08 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f97f1e6..42f85c1 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9858915..af498a4 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5092432..d726a53 100644 (file)
@@ -151,7 +151,7 @@ Test cases related to XML Schema parsing and validation
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_xmlschema-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_xmlschema-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -192,7 +192,7 @@ Test cases related to XML Schema parsing and validation
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4cca2a8..07af7af 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 Sun Jul 24 10:56:06 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b987471..f9db6f6 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a945338..f266c24 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2a14f80..d09e7dd 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3beea05..b32426c 100644 (file)
@@ -390,7 +390,7 @@ Test cases related to XPath evaluation and the XPath class
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_xpathevaluator-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_xpathevaluator-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -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 0x2b8<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 0x2ab<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -465,7 +465,7 @@ Test2,}"><code class="variable-group">{</code><code class="variable-group">(</co
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2c92e63..d372042 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 Sun Jul 24 10:56:06 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:13 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6eddcf9..8ec8921 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2a36453..760e94b 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6dbaa61..a6c7b21 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 625629e..7b60e76 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5374ca2..9dbcda1 100644 (file)
@@ -193,7 +193,7 @@ Test cases related to XSLT processing
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.tests.test_xslt-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/l</code><code class="variable-ellipsis">...</code></code>
+        <a href="lxml.tests.test_xslt-module.html#this_dir" class="summary-name">this_dir</a> = <code title="'/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests'"><code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/t</code><code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -241,7 +241,7 @@ Test cases related to XSLT processing
   <dl class="fields">
     <dt>Value:</dt>
       <dd><table><tr><td><pre class="variable">
-<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-release/src/lxml/tests</code><code class="variable-quote">'</code>
+<code class="variable-quote">'</code><code class="variable-string">/home/stefan/source/Python/lxml/lxml-hg/src/lxml/tests</code><code class="variable-quote">'</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2e638b9..d20213e 100644 (file)
@@ -224,4025 +224,4040 @@ 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="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
+<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
 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-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.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.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" 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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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>
+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>
 <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 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
+<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
 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-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.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.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-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>
+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>
 <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 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
+<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
 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-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.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.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-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.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.selftest.encoding
-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-115', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-116', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-117" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-117', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-118', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-119', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-120" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-120', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method lxml.etree._ElementTree.getroot()=lxml.etree._ElementTree-class.html#getroot"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-121', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_input_partial_doc"></a><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-def"><a name="L235"></a><tt class="py-lineno"> 235</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_input_partial_doc-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_input_partial_doc');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_partial_doc">test_xslt_input_partial_doc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-expanded"><a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">        <tt id="link-122" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-122', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.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.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-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-124', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-125', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-126" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-126', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-127', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-128" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-128', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">        <tt class="py-name">root_node</tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-129', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-130', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-131" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-131', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-132', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-133" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-133', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-134', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt class="py-name">root_node</tt><tt class="py-op">)</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_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.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-135', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-136', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">root_node</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_broken"></a><div id="ETreeXSLTTestCase.test_xslt_broken-def"><a name="L252"></a><tt class="py-lineno"> 252</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_broken-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_broken');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_broken">test_xslt_broken</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_broken-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_broken-expanded"><a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.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.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-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.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.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-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-140', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-141', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">                          <tt id="link-142" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-142', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-143', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-144" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-144', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_parameters-def"><a name="L262"></a><tt class="py-lineno"> 262</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameters">test_xslt_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameters-expanded"><a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.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.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">'''\</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.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.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-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.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.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-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.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.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-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-155', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-156', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-157" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-157', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">        <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt id="link-158" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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.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.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-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.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.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-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.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.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.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-165', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-166', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-167" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-167', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">        <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.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.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-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.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.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-177', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&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.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.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-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.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.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.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-177', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-178', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-179" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-179', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-180', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-181', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">                              <tt class="py-name">st</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name" targets="Method lxml.etree.XSLT.apply()=lxml.etree.XSLT-class.html#apply"><a title="lxml.etree.XSLT.apply" class="py-name" href="#" onclick="return doclink('link-182', 'apply', 'link-182');">apply</a></tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_multiple_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-def"><a name="L332"></a><tt class="py-lineno"> 332</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_multiple_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_multiple_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_parameters">test_xslt_multiple_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-expanded"><a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.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.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-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.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.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-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.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.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-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.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.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-200', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&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.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.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-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.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.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"><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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-200', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-201', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-202" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-202', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">        <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt id="link-203" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-222', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-223', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-224" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-224', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test1.xslt'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">        <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-225" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_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.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-225', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-226', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_include_from_filelike"></a><div id="ETreeXSLTTestCase.test_xslt_include_from_filelike-def"><a name="L437"></a><tt class="py-lineno"> 437</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_include_from_filelike-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_include_from_filelike');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include_from_filelike">test_xslt_include_from_filelike</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_include_from_filelike-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_include_from_filelike-expanded"><a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-227" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-227', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test1.xslt'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-228" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_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._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-228', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.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.etree._FeedParser.close
-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.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.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-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.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.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-238', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-239', 'xml', 'link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-235', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-236" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-236', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">        <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-237', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-238" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-238', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt id="link-239" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-239', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-240" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_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"><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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-240', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-241', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-242" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-242', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line"> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">        <tt id="link-243" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-246', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-247" class="py-name" 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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-243', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-244" class="py-name" targets="Method lxml.etree.XSLT.tostring()=lxml.etree.XSLT-class.html#tostring,Function lxml.etree.tostring()=lxml.etree-module.html#tostring"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-244', 'tostring', 'link-244');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-245', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">         </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">        <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-246', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-247" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-247', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">        <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-248', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-249" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-249', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">        <tt id="link-250" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-250', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-251" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_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.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-251', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-252', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-253" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-253', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">         </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">        <tt id="link-254" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-257', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-258', 'tostring', 'link-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.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.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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-259', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-260" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-260', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">        <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-261', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-262" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-262', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">        <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-263" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.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.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-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>
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-269', 'tostring', 'link-244');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-270', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">        <tt id="link-271" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-271', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line"> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">        <tt class="py-name">result1</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">        <tt class="py-name">result2</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-272" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-272', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-273" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-273', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
 <a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">        <tt id="link-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
+<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
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-280', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-281" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-281', 'xml', 'link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-277', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-278" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-278', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">        <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.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.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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-288', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-289" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-289', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">        <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-290" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-290', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-291" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-291', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">        <tt id="link-292" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-292', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-293" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-293', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-294" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-294', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-295" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-295', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-296" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-296', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"TEST TEST TEST"</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">entry</tt><tt class="py-op">.</tt><tt id="link-297" class="py-name" targets="Variable lxml.etree._LogEntry.message=lxml.etree._LogEntry-class.html#message"><a title="lxml.etree._LogEntry.message" class="py-name" href="#" onclick="return doclink('link-297', 'message', 'link-297');">message</a></tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">                                          <tt class="py-keyword">for</tt> <tt class="py-name">entry</tt> <tt class="py-keyword">in</tt> <tt id="link-298" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-298', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-299" class="py-name" targets="Variable lxml.etree.XInclude.error_log=lxml.etree.XInclude-class.html#error_log,Variable lxml.etree.XSLT.error_log=lxml.etree.XSLT-class.html#error_log,Variable lxml.etree._Validator.error_log=lxml.etree._Validator-class.html#error_log,Variable lxml.etree._XPathEvaluatorBase.error_log=lxml.etree._XPathEvaluatorBase-class.html#error_log,Variable lxml.etree.iterparse.error_log=lxml.etree.iterparse-class.html#error_log"><a title="lxml.etree.XInclude.error_log
 lxml.etree.XSLT.error_log
 lxml.etree._Validator.error_log
 lxml.etree._XPathEvaluatorBase.error_log
-lxml.etree.iterparse.error_log" class="py-name" href="#" onclick="return doclink('link-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.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.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-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-302', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-303" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-303', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">        <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-304" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-304', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-305" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-305', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">        <tt id="link-306" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-306', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-307" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-307', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-308', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-309" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-309', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-310', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-311" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-311', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"TEST TEST TEST"</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">entry</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="lxml.etree._LogEntry.message" class="py-name" href="#" onclick="return doclink('link-312', 'message', 'link-297');">message</a></tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">                                          <tt class="py-keyword">for</tt> <tt class="py-name">entry</tt> <tt class="py-keyword">in</tt> <tt id="link-313" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-313', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="lxml.etree.XInclude.error_log
 lxml.etree.XSLT.error_log
 lxml.etree._Validator.error_log
 lxml.etree._XPathEvaluatorBase.error_log
-lxml.etree.iterparse.error_log" class="py-name" href="#" onclick="return doclink('link-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.iterparse.error_log" class="py-name" href="#" onclick="return doclink('link-314', 'error_log', 'link-299');">error_log</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_shortcut"></a><div id="ETreeXSLTTestCase.test_xslt_shortcut-def"><a name="L542"></a><tt class="py-lineno"> 542</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_shortcut-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_shortcut');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_shortcut">test_xslt_shortcut</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_shortcut-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_shortcut-expanded"><a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.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.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-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.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.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-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.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.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-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
+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
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-339', 'ElementTree', 'link-33');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-340', 'getroot', 'link-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
+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
 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-349', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-350" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-346', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-347" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-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
+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
 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-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-358', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-359', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-360" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_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" targets="Function lxml.etree.XML()=lxml.etree-module.html#XML,Function lxml.objectify.XML()=lxml.objectify-module.html#XML,Method lxml.tests.test_objectify.ObjectifyTestCase.XML()=lxml.tests.test_objectify.ObjectifyTestCase-class.html#XML,Method lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML()=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#XML"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-360', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-361" class="py-name" targets="Function lxml.etree.XML()=lxml.etree-module.html#XML,Function lxml.objectify.XML()=lxml.objectify-module.html#XML,Method lxml.tests.test_objectify.ObjectifyTestCase.XML()=lxml.tests.test_objectify.ObjectifyTestCase-class.html#XML,Method lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML()=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#XML"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-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.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.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-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-363', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-364" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-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.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.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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-368', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-369" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-369', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-370', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-371" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-371', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-372" class="py-name" targets="Variable lxml.etree.QName.text=lxml.etree.QName-class.html#text,Variable lxml.etree._Element.text=lxml.etree._Element-class.html#text,Variable lxml.etree._Entity.text=lxml.etree._Entity-class.html#text,Variable lxml.objectify.ObjectifiedElement.text=lxml.objectify.ObjectifiedElement-class.html#text,Variable xml.etree.ElementTree.Element.text=xml.etree.ElementTree.Element-class.html#text"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-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
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-372', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">                          <tt class="py-string">'TEXT'</tt><tt class="py-op">)</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-373" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-373', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-374" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-374', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">                          <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}copy-of'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_parse"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse-def"><a name="L618"></a><tt class="py-lineno"> 618</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_parse-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_parse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse">test_xslt_document_parse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_parse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_parse-expanded"><a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">        <tt class="py-comment"># make sure document('') works from loaded files</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">        <tt id="link-375" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-375', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-376" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-376', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-377" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-377', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-378" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-378', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-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.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-379', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-380" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-380', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-381" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-381', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-382" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-385', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-386" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-382', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-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.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.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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-387', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-388" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-388', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-389', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">                          <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}stylesheet'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_elementtree"></a><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-def"><a name="L628"></a><tt class="py-lineno"> 628</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_elementtree-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_elementtree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_elementtree">test_xslt_document_elementtree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-expanded"><a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt class="py-comment"># make sure document('') works from loaded files</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">        <tt id="link-390" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-390', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-391" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-391', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-392', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-393" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-393', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-394" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-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
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-394', 'ElementTree', 'link-33');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt id="link-395" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-395', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-396" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-396', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-397" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-400', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-397', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-398" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-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.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.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-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-402', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">                          <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-403" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-403', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-404" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-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
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-404', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">                          <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}stylesheet'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_error"></a><div id="ETreeXSLTTestCase.test_xslt_document_error-def"><a name="L638"></a><tt class="py-lineno"> 638</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_error-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_error');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_error">test_xslt_document_error</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_error-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_error-expanded"><a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">        <tt id="link-405" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-405', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-406" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-406', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-407" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-407', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-408" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-408', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-409" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-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.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.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-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.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-413', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-414" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-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.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.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-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_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_elementtree._ETreeTestCaseBase.XMLParser
-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
+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
 lxml.html.Classes.add
-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.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.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.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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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._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._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-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
+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
 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-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
+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
 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-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
+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
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-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.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.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-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
+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
 lxml.html.Classes.add
-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.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.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-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.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.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.XML
+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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-475', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-476" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-476', 'XML', 'link-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.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.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-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.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.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-480', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-481" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-481', 'XML', 'link-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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.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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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.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.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.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"><a title="lxml.etree.XML
+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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 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-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
+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
 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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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.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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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="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.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.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-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
+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
 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-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.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.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-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
+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
 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-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.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.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-600', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="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.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.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-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.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.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-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
+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
 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-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.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.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-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.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.etree._Element.get
 lxml.etree._IDDict.get
-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._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.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-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.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.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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._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.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-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.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.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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._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.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-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.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.etree._Element.get
 lxml.etree._IDDict.get
-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._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.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-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.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.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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._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.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-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.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.etree._Element.get
 lxml.etree._IDDict.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._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._Element.get
 lxml.etree._IDDict.get
-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._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.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-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.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.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">'''\</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.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.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-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.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.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">'''\</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.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.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-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.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.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-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.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.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.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.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.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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 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-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
+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
 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-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
+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
 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.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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 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-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
+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
 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.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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-761', 'tag', 'link-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
+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
 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-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
+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
 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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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.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.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-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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.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.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.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-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.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.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-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
+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
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-875', 'text', 'link-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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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.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.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-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.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.etree._Element.values
-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._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.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-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.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.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-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.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.etree._Element.values
-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.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.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-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.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.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-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.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.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-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.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.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-905');">value</a></tt> <tt class="py-keyword">in</tt> <tt id="link-906" class="py-name"><a title="lxml.etree._Attrib.values
+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.etree._Element.values
-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.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.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-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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.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.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.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.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-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
+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
 lxml.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-914', 'text', 'link-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
+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
 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-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
+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
 lxml.etree._Element.values
-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.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.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-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.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.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-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.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.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-927', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</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.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.etree._ElementTree.xpath
-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.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.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-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.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.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-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_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_elementtree._ETreeTestCaseBase.XMLParser
-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
+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
 lxml.html.Classes.add
-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.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.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-948', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">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.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.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-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.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.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-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.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.etree._ElementTree.xpath
-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.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.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-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.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.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-965', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</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.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.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-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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
+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
 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-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
+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
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-975', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&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.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.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-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.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.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-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
+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
 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-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.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.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-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.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.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.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
+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
 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-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
+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
 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-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
+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
 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-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
+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
 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-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.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.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-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.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.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-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
+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
 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-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
+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
 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-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
+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
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1004', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&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.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.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-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.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.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-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.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.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-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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
+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
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1025', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'&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.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.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-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.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.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-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.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.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-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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
+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
 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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.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-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 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">'&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.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.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="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.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.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-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.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.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-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.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.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-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
+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
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-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
+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
 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-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
+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
 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-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
+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
 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-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.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.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-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_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_relaxng.RelaxNGCompactTestCase.pytestmark
-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.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.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-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.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.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">'''\</tt> </tt>
+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>
 <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>
@@ -4251,35 +4266,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-1131" 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-1133" class="py-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-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>
+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>
 <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-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="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="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">bytes</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">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="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line"> </tt>
-<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
+<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
 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-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.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.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">'''\</tt> </tt>
+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>
 <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>
@@ -4288,75 +4303,38 @@ 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-1138" 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-1140" class="py-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-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>
+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>
 <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-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="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="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">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">
+<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">
 <!--
 expandto(location.href);
 // -->
@@ -4394,7 +4372,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 Sun Jul 24 10:56:09 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4b8cc2d..d5c8f06 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8edc0a5..25bb701 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8ffbbc1..abdad68 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1a3e961..57c6383 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c326f6e..69cd226 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cdf8b67..e6c80ed 100644 (file)
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 066857f..c08e45c 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 154b644..fcc3bac 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c9a0a3c..8020a93 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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:07 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e4e26ed..186a4b6 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 75f81ec..90d2045 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 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>
+        <a href="xml.etree.ElementTree-module.html#_serialize" class="summary-name" onclick="show_private();">_serialize</a> = <code title="{'html': &lt;function _serialize_html at 0x2ab25a3c98c0&gt;,
+ 'text': &lt;function _serialize_text at 0x2ab25a3c9938&gt;,
+ 'xml': &lt;function _serialize_xml at 0x2ab25a3c9848&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 0x2ab25a3c9<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 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>
+<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 0x2ab25a3c98c0&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 0x2ab25a3c9938&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 0x2ab25a3c9848&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 Sun Jul 24 10:56:04 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:08 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e2148cd..42274be 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 Sun Jul 24 10:56:07 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:12 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3d1fe44..48028c4 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b1ca9c6..b35dc02 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6441586..181e647 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8155592..bc4f287 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a6dbe6f..7a6c63a 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6d16d87..b3416fb 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 255ee66..12fa05d 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 63c5176..d605b56 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 Sun Jul 24 10:56:05 2016
+    Generated by Epydoc 3.0.1 on Thu Mar 17 17:38:10 2016
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2146562..fbb9951 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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
@@ -171,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="https://wheel.readthedocs.io/en/latest/">wheel</a> for your platform.
+<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.
 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
@@ -295,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 dependencies are missing, you
+<p>In case <tt class="docutils literal"><span class="pre">dpkg-buildpackage</span></tt> tells you that some dependecies 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>
@@ -303,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-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index e70918f..b258b6d 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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,
@@ -110,7 +110,7 @@ includes may not be sufficient.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
diff --git a/doc/html/changes-3.5.0.beta1.html b/doc/html/changes-3.5.0.beta1.html
new file mode 100644 (file)
index 0000000..0dea2bb
--- /dev/null
@@ -0,0 +1,3022 @@
+<?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.12: 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="beta-1-2015">
+<h1>3.5.0 beta 1 (2015-??)</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">top_nsmap</tt> that
+moves definitions of the provided prefix-namespace mapping to the
+top of the tree.</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="bugs-fixed">
+<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/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="id1">
+<h1>3.4.4 (2015-04-25)</h1>
+<div class="section" id="id2">
+<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="id3">
+<h1>3.4.3 (2015-04-15)</h1>
+<div class="section" id="id4">
+<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="id5">
+<h1>3.4.2 (2015-02-07)</h1>
+<div class="section" id="id6">
+<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="id7">
+<h1>3.4.1 (2014-11-20)</h1>
+<div class="section" id="id8">
+<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="id9">
+<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="id10">
+<h1>3.4.0 (2014-09-10)</h1>
+<div class="section" id="id11">
+<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="id12">
+<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="id13">
+<h1>3.3.6 (2014-08-28)</h1>
+<div class="section" id="id14">
+<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="id15">
+<h1>3.3.5 (2014-04-18)</h1>
+<div class="section" id="id16">
+<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="id17">
+<h1>3.3.4 (2014-04-03)</h1>
+<div class="section" id="id18">
+<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="id19">
+<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="id20">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id21">
+<h1>3.3.3 (2014-03-04)</h1>
+<div class="section" id="id22">
+<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="id23">
+<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="id24">
+<h1>3.3.2 (2014-02-26)</h1>
+<div class="section" id="id25">
+<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="id26">
+<h1>3.3.1 (2014-02-12)</h1>
+<div class="section" id="id27">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id28">
+<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="id29">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id30">
+<h1>3.3.0 (2014-01-26)</h1>
+<div class="section" id="id31">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id32">
+<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="id33">
+<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="id34">
+<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="id35">
+<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="id36">
+<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="id37">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id38">
+<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="id39">
+<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="id40">
+<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="id41">
+<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="id42">
+<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="id43">
+<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="id44">
+<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="id45">
+<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="id46">
+<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="id47">
+<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="id48">
+<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="id49">
+<h1>3.2.5 (2014-01-02)</h1>
+<div class="section" id="id50">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id51">
+<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="id53">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id54">
+<h1>3.2.4 (2013-11-07)</h1>
+<div class="section" id="id55">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id56">
+<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="id59">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id60">
+<h1>3.2.3 (2013-07-28)</h1>
+<div class="section" id="id61">
+<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="id62">
+<h1>3.2.2 (2013-07-28)</h1>
+<div class="section" id="id63">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id64">
+<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="id65">
+<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="id66">
+<h1>3.2.1 (2013-05-11)</h1>
+<div class="section" id="id67">
+<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="id68">
+<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="id69">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id70">
+<h1>3.2.0 (2013-04-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/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="id73">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id74">
+<h1>3.1.2 (2013-04-12)</h1>
+<div class="section" id="id75">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id76">
+<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="id77">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id78">
+<h1>3.1.1 (2013-03-29)</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/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="id81">
+<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="id82">
+<h1>3.1.0 (2013-02-10)</h1>
+<div class="section" id="id83">
+<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="id84">
+<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="id85">
+<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="id86">
+<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="id87">
+<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="id88">
+<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="id89">
+<h1>3.0.2 (2012-12-14)</h1>
+<div class="section" id="id90">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id91">
+<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="id92">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id93">
+<h1>3.0.1 (2012-10-14)</h1>
+<div class="section" id="id94">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id95">
+<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="id96">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id97">
+<h1>3.0 (2012-10-08)</h1>
+<div class="section" id="id98">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id99">
+<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="id100">
+<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="id101">
+<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="id102">
+<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="id103">
+<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="id104">
+<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="id105">
+<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="id106">
+<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="id107">
+<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="id108">
+<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="id109">
+<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="id110">
+<h1>2.3.6 (2012-09-28)</h1>
+<div class="section" id="id111">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id112">
+<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="id113">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id114">
+<h1>2.3.5 (2012-07-31)</h1>
+<div class="section" id="id115">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id116">
+<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="id117">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id118">
+<h1>2.3.4 (2012-03-26)</h1>
+<div class="section" id="id119">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id120">
+<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="id121">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id122">
+<h1>2.3.3 (2012-01-04)</h1>
+<div class="section" id="id123">
+<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="id124">
+<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="id125">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id126">
+<h1>2.3.2 (2011-11-11)</h1>
+<div class="section" id="id127">
+<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="id128">
+<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="id129">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id130">
+<h1>2.3.1 (2011-09-25)</h1>
+<div class="section" id="id131">
+<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="id132">
+<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="id133">
+<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="id134">
+<h1>2.3 (2011-02-06)</h1>
+<div class="section" id="id135">
+<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="id136">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When finished reading from a file-like object, the parser
+immediately calls its <tt class="docutils literal">.close()</tt> method.</li>
+<li>When finished parsing, <tt class="docutils literal">iterparse()</tt> immediately closes the input
+file.</li>
+<li>Work-around for libxml2 bug that can leave the HTML parser in a
+non-functional state after parsing a severly broken document (fixed
+in libxml2 2.7.8).</li>
+<li><tt class="docutils literal">marque</tt> tag in HTML cleanup code is correctly named <tt class="docutils literal">marquee</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id137">
+<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="id138">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id139">
+<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="id140">
+<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="id141">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id142">
+<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="id143">
+<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="id144">
+<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="id145">
+<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="id146">
+<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="id147">
+<h1>2.2.8 (2010-09-02)</h1>
+<div class="section" id="id148">
+<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="id149">
+<h1>2.2.7 (2010-07-24)</h1>
+<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>
+<div class="section" id="id151">
+<h1>2.2.6 (2010-03-02)</h1>
+<div class="section" id="id152">
+<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="id153">
+<h1>2.2.5 (2010-02-28)</h1>
+<div class="section" id="id154">
+<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="id155">
+<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="id156">
+<h1>2.2.4 (2009-11-11)</h1>
+<div class="section" id="id157">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Static build of libxml2/libxslt was broken.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id158">
+<h1>2.2.3 (2009-10-30)</h1>
+<div class="section" id="id159">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id160">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
+parser.</li>
+<li>Looking up and deleting attributes without a namespace could hit a
+namespaced attribute of the same name instead.</li>
+<li>Late errors during calls to <tt class="docutils literal">SubElement()</tt> (e.g. attribute related
+ones) could leave a partially initialised element in the tree.</li>
+<li>Modifying trees that contain parsed entity references could result
+in an infinite loop.</li>
+<li>ObjectifiedElement.__setattr__ created an empty-string child element when the
+attribute value was rejected as a non-unicode/non-ascii string</li>
+<li>Syntax errors in <tt class="docutils literal">lxml.cssselect</tt> could result in misleading error
+messages.</li>
+<li>Invalid syntax in CSS expressions could lead to an infinite loop in
+the parser of <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS special character escapes were not properly handled in
+<tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS Unicode escapes were not properly decoded in <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>Select options in HTML forms that had no explicit <tt class="docutils literal">value</tt>
+attribute were not handled correctly.  The HTML standard dictates
+that their value is defined by their text content.  This is now
+supported by lxml.html.</li>
+<li>XPath raised a TypeError when finding CDATA sections.  This is now
+fully supported.</li>
+<li>Calling <tt class="docutils literal">help(lxml.objectify)</tt> didn't work at the prompt.</li>
+<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify no longer defines the default
+namespaces when annotation is disabled.</li>
+<li>Feed parser failed to honout the 'recover' option on parse errors.</li>
+<li>Diverting the error logging to Python's logging system was broken.</li>
+</ul>
+</div>
+<div class="section" id="id161">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id162">
+<h1>2.2.2 (2009-06-21)</h1>
+<div class="section" id="id163">
+<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="id164">
+<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="id165">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id166">
+<h1>2.2.1 (2009-06-02)</h1>
+<div class="section" id="id167">
+<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="id168">
+<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="id169">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id170">
+<h1>2.2 (2009-03-21)</h1>
+<div class="section" id="id171">
+<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="id172">
+<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="id173">
+<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="id174">
+<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="id175">
+<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="id176">
+<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="id177">
+<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="id178">
+<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="id179">
+<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="id180">
+<h1>2.1.5 (2009-01-06)</h1>
+<div class="section" id="id181">
+<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="id182">
+<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="id183">
+<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="id184">
+<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="id185">
+<h1>2.1.4 (2008-12-12)</h1>
+<div class="section" id="id186">
+<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="id187">
+<h1>2.0.11 (2008-12-12)</h1>
+<div class="section" id="id188">
+<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="id189">
+<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="id190">
+<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="id191">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id192">
+<h1>2.1.3 (2008-11-17)</h1>
+<div class="section" id="id193">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id194">
+<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="id195">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id196">
+<h1>2.0.10 (2008-11-17)</h1>
+<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>
+</ul>
+</div>
+</div>
+<div class="section" id="id198">
+<h1>2.1.2 (2008-09-05)</h1>
+<div class="section" id="id199">
+<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="id200">
+<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="id201">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id202">
+<h1>2.0.9 (2008-09-05)</h1>
+<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>
+<div class="section" id="id204">
+<h1>2.1.1 (2008-07-24)</h1>
+<div class="section" id="id205">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id206">
+<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="id207">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id208">
+<h1>2.0.8 (2008-07-24)</h1>
+<div class="section" id="id209">
+<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="id210">
+<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="id211">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id212">
+<h1>2.1 (2008-07-09)</h1>
+<div class="section" id="id213">
+<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="id214">
+<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="id215">
+<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="id216">
+<h1>2.0.7 (2008-06-20)</h1>
+<div class="section" id="id217">
+<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="id218">
+<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="id219">
+<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="id220">
+<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="id221">
+<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="id222">
+<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="id223">
+<h1>2.0.6 (2008-05-31)</h1>
+<div class="section" id="id224">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id225">
+<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="id226">
+<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="id227">
+<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="id228">
+<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="id229">
+<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="id230">
+<h1>2.0.5 (2008-05-01)</h1>
+<div class="section" id="id231">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id232">
+<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="id233">
+<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="id234">
+<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="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>
+<li>lxml.etree accepted non well-formed namespace prefix names.</li>
+</ul>
+</div>
+<div class="section" id="id236">
+<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="id237">
+<h1>2.0.4 (2008-04-13)</h1>
+<div class="section" id="id238">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id239">
+<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="id240">
+<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="id241">
+<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="id242">
+<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="id243">
+<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="id244">
+<h1>2.0.3 (2008-03-26)</h1>
+<div class="section" id="id245">
+<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="id246">
+<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="id247">
+<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="id248">
+<h1>2.0.2 (2008-02-22)</h1>
+<div class="section" id="id249">
+<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="id250">
+<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="id251">
+<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="id252">
+<h1>2.0.1 (2008-02-13)</h1>
+<div class="section" id="id253">
+<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="id254">
+<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="id255">
+<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="id256">
+<h1>2.0 (2008-02-01)</h1>
+<div class="section" id="id257">
+<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="id258">
+<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="id259">
+<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 loosing type information that is already there.</li>
+<li><tt class="docutils literal">element.getiterator()</tt> returns a list, use <tt class="docutils literal">element.iter()</tt> to retrieve
+an iterator (ElementTree 1.3 compatible behaviour)</li>
+<li>objectify.PyType for None is now called &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="id260">
+<h1>1.3.6 (2007-10-29)</h1>
+<div class="section" id="id261">
+<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="id262">
+<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="id263">
+<h1>1.3.5 (2007-10-22)</h1>
+<div class="section" id="id264">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id265">
+<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="id266">
+<h1>1.3.4 (2007-08-30)</h1>
+<div class="section" id="id267">
+<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="id268">
+<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="id269">
+<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="id270">
+<h1>1.3.3 (2007-07-26)</h1>
+<div class="section" id="id271">
+<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="id272">
+<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="id273">
+<h1>1.3.2 (2007-07-03)</h1>
+<div class="section" id="id274">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id275">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>&quot;deallocating None&quot; crash bug</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id276">
+<h1>1.3.1 (2007-07-02)</h1>
+<div class="section" id="id277">
+<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="id278">
+<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="id279">
+<h1>1.3 (2007-06-24)</h1>
+<div class="section" id="id280">
+<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="id281">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Removing Elements from a tree could make them loose their namespace
+declarations</li>
+<li><tt class="docutils literal">ElementInclude</tt> didn't honour base URL of original document</li>
+<li>Replacing the children slice of an Element would cut off the tails of the
+original children</li>
+<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
+<tt class="docutils literal">ProcessingInstruction</tt> as tags</li>
+<li>API functions now check incoming strings for XML conformity.  Zero bytes or
+low ASCII characters are no longer accepted (AssertionError).</li>
+<li>XSLT parsing failed to pass resolver context on to imported documents</li>
+<li>passing '' as namespace prefix in nsmap could be passed through to libxml2</li>
+<li>Objectify couldn't handle prefixed XSD type names in <tt class="docutils literal">xsi:type</tt></li>
+<li>More ET compatible behaviour when writing out XML declarations or not</li>
+<li>More robust error handling in <tt class="docutils literal">iterparse()</tt></li>
+<li>Documents lost their top-level PIs and comments on serialisation</li>
+<li>lxml.sax failed on comments and PIs. Comments are now properly ignored and
+PIs are copied.</li>
+<li>Possible memory leaks in namespace handling when moving elements between
+documents</li>
+</ul>
+</div>
+<div class="section" id="id282">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>major restructuring in the documentation</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id283">
+<h1>1.2.1 (2007-02-27)</h1>
+<div class="section" id="id284">
+<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="id285">
+<h1>1.2 (2007-02-20)</h1>
+<div class="section" id="id286">
+<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="id287">
+<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="id288">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>code cleanup: redundant _NodeBase super class merged into _Element class
+Note: although the impact should be zero in most cases, this change breaks
+the compatibiliy of the public C-API</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id289">
+<h1>1.1.2 (2006-10-30)</h1>
+<div class="section" id="id290">
+<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="id291">
+<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="id292">
+<h1>1.1.1 (2006-09-21)</h1>
+<div class="section" id="id293">
+<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="id294">
+<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="id295">
+<h1>1.1 (2006-09-13)</h1>
+<div class="section" id="id296">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Comments and processing instructions return '&lt;!-- coment --&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="id297">
+<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="id298">
+<h1>1.0.4 (2006-09-09)</h1>
+<div class="section" id="id299">
+<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="id300">
+<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="id301">
+<h1>1.0.3 (2006-08-08)</h1>
+<div class="section" id="id302">
+<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="id303">
+<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="id304">
+<h1>1.0.2 (2006-06-27)</h1>
+<div class="section" id="id305">
+<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="id306">
+<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="id307">
+<h1>1.0.1 (2006-06-09)</h1>
+<div class="section" id="id308">
+<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="id309">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Document deallocation could crash in certain garbage collection scenarios</li>
+<li>Extension function calls in XSLT variable declarations could break the
+stylesheet and crash on repeated calls</li>
+<li>Deep copying Elements could loose namespaces declared in parents</li>
+<li>Deep copying Elements did not copy tail</li>
+<li>Parsing file(-like) objects failed to load external entities</li>
+<li>Parsing 8-bit strings from file(-like) objects raised an exception</li>
+<li>xsl:include failed when the stylesheet was parsed from a file-like object</li>
+<li>lxml.sax.ElementTreeProducer did not call startDocument() / endDocument()</li>
+<li>MSVC compiler complained about long strings (supports only 2048 bytes)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id310">
+<h1>1.0 (2006-06-01)</h1>
+<div class="section" id="id311">
+<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="id312">
+<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="id313">
+<h1>0.9.2 (2006-05-10)</h1>
+<div class="section" id="id314">
+<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="id315">
+<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="id316">
+<h1>0.9.1 (2006-03-30)</h1>
+<div class="section" id="id317">
+<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="id318">
+<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="id319">
+<h1>0.9 (2006-03-20)</h1>
+<div class="section" id="id320">
+<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="id321">
+<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="id322">
+<h1>0.8 (2005-11-03)</h1>
+<div class="section" id="id323">
+<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="id324">
+<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="id325">
+<h1>0.7 (2005-06-15)</h1>
+<div class="section" id="id326">
+<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="id327">
+<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="id328">
+<h1>0.6 (2005-05-14)</h1>
+<div class="section" id="id329">
+<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="id330">
+<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="id331">
+<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="id332">
+<h1>0.5 (2005-04-08)</h1>
+<p>Initial public release.</p>
+</div>
+</div>
+<div class="footer">
+<hr class="footer" />
+Generated on: 2015-06-05.
+
+</div>
+</body>
+</html>
diff --git a/doc/html/changes-3.5.0.html b/doc/html/changes-3.5.0.html
new file mode 100644 (file)
index 0000000..7252fac
--- /dev/null
@@ -0,0 +1,3044 @@
+<?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.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="id2">
+<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="id3">
+<h1>3.4.4 (2015-04-25)</h1>
+<div class="section" id="id4">
+<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="id5">
+<h1>3.4.3 (2015-04-15)</h1>
+<div class="section" id="id6">
+<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="id7">
+<h1>3.4.2 (2015-02-07)</h1>
+<div class="section" id="id8">
+<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="id9">
+<h1>3.4.1 (2014-11-20)</h1>
+<div class="section" id="id10">
+<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="id11">
+<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="id12">
+<h1>3.4.0 (2014-09-10)</h1>
+<div class="section" id="id13">
+<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="id14">
+<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="id15">
+<h1>3.3.6 (2014-08-28)</h1>
+<div class="section" id="id16">
+<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="id17">
+<h1>3.3.5 (2014-04-18)</h1>
+<div class="section" id="id18">
+<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="id19">
+<h1>3.3.4 (2014-04-03)</h1>
+<div class="section" id="id20">
+<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="id21">
+<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="id22">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id23">
+<h1>3.3.3 (2014-03-04)</h1>
+<div class="section" id="id24">
+<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="id25">
+<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="id26">
+<h1>3.3.2 (2014-02-26)</h1>
+<div class="section" id="id27">
+<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="id28">
+<h1>3.3.1 (2014-02-12)</h1>
+<div class="section" id="id29">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id30">
+<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="id31">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id32">
+<h1>3.3.0 (2014-01-26)</h1>
+<div class="section" id="id33">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id34">
+<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="id35">
+<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="id36">
+<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="id37">
+<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="id38">
+<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="id39">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id40">
+<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="id41">
+<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="id42">
+<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="id43">
+<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="id44">
+<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="id45">
+<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="id46">
+<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="id47">
+<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="id48">
+<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="id49">
+<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="id50">
+<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="id51">
+<h1>3.2.5 (2014-01-02)</h1>
+<div class="section" id="id52">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id53">
+<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="id55">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id56">
+<h1>3.2.4 (2013-11-07)</h1>
+<div class="section" id="id57">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id58">
+<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="id61">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id62">
+<h1>3.2.3 (2013-07-28)</h1>
+<div class="section" id="id63">
+<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="id64">
+<h1>3.2.2 (2013-07-28)</h1>
+<div class="section" id="id65">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id66">
+<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="id67">
+<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="id68">
+<h1>3.2.1 (2013-05-11)</h1>
+<div class="section" id="id69">
+<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="id70">
+<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="id71">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id72">
+<h1>3.2.0 (2013-04-28)</h1>
+<div class="section" id="id73">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id74">
+<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="id75">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id76">
+<h1>3.1.2 (2013-04-12)</h1>
+<div class="section" id="id77">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id78">
+<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="id79">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id80">
+<h1>3.1.1 (2013-03-29)</h1>
+<div class="section" id="id81">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id82">
+<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="id83">
+<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="id84">
+<h1>3.1.0 (2013-02-10)</h1>
+<div class="section" id="id85">
+<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="id86">
+<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="id87">
+<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="id88">
+<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="id89">
+<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="id90">
+<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="id91">
+<h1>3.0.2 (2012-12-14)</h1>
+<div class="section" id="id92">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id93">
+<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="id94">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id95">
+<h1>3.0.1 (2012-10-14)</h1>
+<div class="section" id="id96">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id97">
+<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="id98">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id99">
+<h1>3.0 (2012-10-08)</h1>
+<div class="section" id="id100">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id101">
+<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="id102">
+<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="id103">
+<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="id104">
+<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="id105">
+<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="id106">
+<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="id107">
+<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="id108">
+<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="id109">
+<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="id110">
+<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="id111">
+<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="id112">
+<h1>2.3.6 (2012-09-28)</h1>
+<div class="section" id="id113">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id114">
+<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="id115">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id116">
+<h1>2.3.5 (2012-07-31)</h1>
+<div class="section" id="id117">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id118">
+<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="id119">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id120">
+<h1>2.3.4 (2012-03-26)</h1>
+<div class="section" id="id121">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id122">
+<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="id123">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id124">
+<h1>2.3.3 (2012-01-04)</h1>
+<div class="section" id="id125">
+<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="id126">
+<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="id127">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id128">
+<h1>2.3.2 (2011-11-11)</h1>
+<div class="section" id="id129">
+<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="id130">
+<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="id131">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id132">
+<h1>2.3.1 (2011-09-25)</h1>
+<div class="section" id="id133">
+<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="id134">
+<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="id135">
+<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="id136">
+<h1>2.3 (2011-02-06)</h1>
+<div class="section" id="id137">
+<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="id138">
+<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="id139">
+<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="id140">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id141">
+<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="id142">
+<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="id143">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id144">
+<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="id145">
+<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="id146">
+<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="id147">
+<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="id148">
+<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="id149">
+<h1>2.2.8 (2010-09-02)</h1>
+<div class="section" id="id150">
+<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="id151">
+<h1>2.2.7 (2010-07-24)</h1>
+<div class="section" id="id152">
+<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="id153">
+<h1>2.2.6 (2010-03-02)</h1>
+<div class="section" id="id154">
+<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="id155">
+<h1>2.2.5 (2010-02-28)</h1>
+<div class="section" id="id156">
+<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="id157">
+<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="id158">
+<h1>2.2.4 (2009-11-11)</h1>
+<div class="section" id="id159">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Static build of libxml2/libxslt was broken.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id160">
+<h1>2.2.3 (2009-10-30)</h1>
+<div class="section" id="id161">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id162">
+<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="id163">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id164">
+<h1>2.2.2 (2009-06-21)</h1>
+<div class="section" id="id165">
+<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="id166">
+<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="id167">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id168">
+<h1>2.2.1 (2009-06-02)</h1>
+<div class="section" id="id169">
+<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="id170">
+<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="id171">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id172">
+<h1>2.2 (2009-03-21)</h1>
+<div class="section" id="id173">
+<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="id174">
+<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="id175">
+<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="id176">
+<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="id177">
+<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="id178">
+<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="id179">
+<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="id180">
+<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="id181">
+<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="id182">
+<h1>2.1.5 (2009-01-06)</h1>
+<div class="section" id="id183">
+<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="id184">
+<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="id185">
+<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="id186">
+<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="id187">
+<h1>2.1.4 (2008-12-12)</h1>
+<div class="section" id="id188">
+<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="id189">
+<h1>2.0.11 (2008-12-12)</h1>
+<div class="section" id="id190">
+<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="id191">
+<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="id192">
+<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="id193">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id194">
+<h1>2.1.3 (2008-11-17)</h1>
+<div class="section" id="id195">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id196">
+<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="id197">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id198">
+<h1>2.0.10 (2008-11-17)</h1>
+<div class="section" id="id199">
+<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="id200">
+<h1>2.1.2 (2008-09-05)</h1>
+<div class="section" id="id201">
+<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="id202">
+<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="id203">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id204">
+<h1>2.0.9 (2008-09-05)</h1>
+<div class="section" id="id205">
+<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="id206">
+<h1>2.1.1 (2008-07-24)</h1>
+<div class="section" id="id207">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id208">
+<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="id209">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id210">
+<h1>2.0.8 (2008-07-24)</h1>
+<div class="section" id="id211">
+<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="id212">
+<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="id213">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id214">
+<h1>2.1 (2008-07-09)</h1>
+<div class="section" id="id215">
+<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="id216">
+<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="id217">
+<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="id218">
+<h1>2.0.7 (2008-06-20)</h1>
+<div class="section" id="id219">
+<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="id220">
+<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="id221">
+<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="id222">
+<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="id223">
+<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="id224">
+<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="id225">
+<h1>2.0.6 (2008-05-31)</h1>
+<div class="section" id="id226">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id227">
+<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="id228">
+<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="id229">
+<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="id230">
+<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="id231">
+<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="id232">
+<h1>2.0.5 (2008-05-01)</h1>
+<div class="section" id="id233">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id234">
+<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="id235">
+<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="id236">
+<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="id237">
+<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="id238">
+<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="id239">
+<h1>2.0.4 (2008-04-13)</h1>
+<div class="section" id="id240">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id241">
+<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="id242">
+<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="id243">
+<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="id244">
+<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="id245">
+<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="id246">
+<h1>2.0.3 (2008-03-26)</h1>
+<div class="section" id="id247">
+<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="id248">
+<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="id249">
+<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="id250">
+<h1>2.0.2 (2008-02-22)</h1>
+<div class="section" id="id251">
+<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="id252">
+<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="id253">
+<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="id254">
+<h1>2.0.1 (2008-02-13)</h1>
+<div class="section" id="id255">
+<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="id256">
+<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="id257">
+<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="id258">
+<h1>2.0 (2008-02-01)</h1>
+<div class="section" id="id259">
+<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="id260">
+<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="id261">
+<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="id262">
+<h1>1.3.6 (2007-10-29)</h1>
+<div class="section" id="id263">
+<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="id264">
+<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="id265">
+<h1>1.3.5 (2007-10-22)</h1>
+<div class="section" id="id266">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id267">
+<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="id268">
+<h1>1.3.4 (2007-08-30)</h1>
+<div class="section" id="id269">
+<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="id270">
+<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="id271">
+<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="id272">
+<h1>1.3.3 (2007-07-26)</h1>
+<div class="section" id="id273">
+<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="id274">
+<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="id275">
+<h1>1.3.2 (2007-07-03)</h1>
+<div class="section" id="id276">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id277">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>&quot;deallocating None&quot; crash bug</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id278">
+<h1>1.3.1 (2007-07-02)</h1>
+<div class="section" id="id279">
+<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="id280">
+<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="id281">
+<h1>1.3 (2007-06-24)</h1>
+<div class="section" id="id282">
+<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="id283">
+<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="id284">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>major restructuring in the documentation</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id285">
+<h1>1.2.1 (2007-02-27)</h1>
+<div class="section" id="id286">
+<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="id287">
+<h1>1.2 (2007-02-20)</h1>
+<div class="section" id="id288">
+<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="id289">
+<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="id290">
+<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="id291">
+<h1>1.1.2 (2006-10-30)</h1>
+<div class="section" id="id292">
+<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="id293">
+<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="id294">
+<h1>1.1.1 (2006-09-21)</h1>
+<div class="section" id="id295">
+<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="id296">
+<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="id297">
+<h1>1.1 (2006-09-13)</h1>
+<div class="section" id="id298">
+<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="id299">
+<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="id300">
+<h1>1.0.4 (2006-09-09)</h1>
+<div class="section" id="id301">
+<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="id302">
+<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="id303">
+<h1>1.0.3 (2006-08-08)</h1>
+<div class="section" id="id304">
+<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="id305">
+<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="id306">
+<h1>1.0.2 (2006-06-27)</h1>
+<div class="section" id="id307">
+<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="id308">
+<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="id309">
+<h1>1.0.1 (2006-06-09)</h1>
+<div class="section" id="id310">
+<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="id311">
+<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="id312">
+<h1>1.0 (2006-06-01)</h1>
+<div class="section" id="id313">
+<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="id314">
+<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="id315">
+<h1>0.9.2 (2006-05-10)</h1>
+<div class="section" id="id316">
+<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="id317">
+<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="id318">
+<h1>0.9.1 (2006-03-30)</h1>
+<div class="section" id="id319">
+<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="id320">
+<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="id321">
+<h1>0.9 (2006-03-20)</h1>
+<div class="section" id="id322">
+<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="id323">
+<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="id324">
+<h1>0.8 (2005-11-03)</h1>
+<div class="section" id="id325">
+<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="id326">
+<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="id327">
+<h1>0.7 (2005-06-15)</h1>
+<div class="section" id="id328">
+<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="id329">
+<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="id330">
+<h1>0.6 (2005-05-14)</h1>
+<div class="section" id="id331">
+<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="id332">
+<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="id333">
+<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="id334">
+<h1>0.5 (2005-04-08)</h1>
+<p>Initial public release.</p>
+</div>
+</div>
+<div class="footer">
+<hr class="footer" />
+Generated on: 2015-11-13.
+
+</div>
+</body>
+</html>
diff --git a/doc/html/changes-3.5.dev.html b/doc/html/changes-3.5.dev.html
new file mode 100644 (file)
index 0000000..e58cd4c
--- /dev/null
@@ -0,0 +1,3004 @@
+<?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="latest-changes">
+<h1>Latest changes</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">top_nsmap</tt> that
+moves definitions of the provided prefix-namespace mapping to the
+top of the tree.</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>
+</ul>
+</div>
+<div class="section" id="bugs-fixed">
+<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><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>
+</ul>
+</div>
+</div>
+<div class="section" id="id1">
+<h1>3.4.3 (?)</h1>
+<div class="section" id="id2">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<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="id3">
+<h1>3.4.2 (2015-02-07)</h1>
+<div class="section" id="id4">
+<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="id5">
+<h1>3.4.1 (2014-11-20)</h1>
+<div class="section" id="id6">
+<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="id7">
+<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="id8">
+<h1>3.4.0 (2014-09-10)</h1>
+<div class="section" id="id9">
+<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="id10">
+<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="id11">
+<h1>3.3.6 (2014-08-28)</h1>
+<div class="section" id="id12">
+<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="id13">
+<h1>3.3.5 (2014-04-18)</h1>
+<div class="section" id="id14">
+<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="id15">
+<h1>3.3.4 (2014-04-03)</h1>
+<div class="section" id="id16">
+<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="id17">
+<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="id18">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id19">
+<h1>3.3.3 (2014-03-04)</h1>
+<div class="section" id="id20">
+<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="id21">
+<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="id22">
+<h1>3.3.2 (2014-02-26)</h1>
+<div class="section" id="id23">
+<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="id24">
+<h1>3.3.1 (2014-02-12)</h1>
+<div class="section" id="id25">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id26">
+<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="id27">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id28">
+<h1>3.3.0 (2014-01-26)</h1>
+<div class="section" id="id29">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id30">
+<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="id31">
+<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="id32">
+<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="id33">
+<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="id34">
+<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="id35">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id36">
+<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="id37">
+<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="id38">
+<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="id39">
+<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="id40">
+<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="id41">
+<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="id42">
+<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="id43">
+<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="id44">
+<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="id45">
+<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="id46">
+<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="id47">
+<h1>3.2.5 (2014-01-02)</h1>
+<div class="section" id="id48">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id49">
+<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="id51">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id52">
+<h1>3.2.4 (2013-11-07)</h1>
+<div class="section" id="id53">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id54">
+<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="id57">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id58">
+<h1>3.2.3 (2013-07-28)</h1>
+<div class="section" id="id59">
+<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="id60">
+<h1>3.2.2 (2013-07-28)</h1>
+<div class="section" id="id61">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id62">
+<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="id63">
+<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="id64">
+<h1>3.2.1 (2013-05-11)</h1>
+<div class="section" id="id65">
+<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="id66">
+<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="id67">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id68">
+<h1>3.2.0 (2013-04-28)</h1>
+<div class="section" id="id69">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id70">
+<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="id71">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id72">
+<h1>3.1.2 (2013-04-12)</h1>
+<div class="section" id="id73">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id74">
+<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="id75">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id76">
+<h1>3.1.1 (2013-03-29)</h1>
+<div class="section" id="id77">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id78">
+<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="id79">
+<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="id80">
+<h1>3.1.0 (2013-02-10)</h1>
+<div class="section" id="id81">
+<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="id82">
+<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="id83">
+<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="id84">
+<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="id85">
+<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="id86">
+<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="id87">
+<h1>3.0.2 (2012-12-14)</h1>
+<div class="section" id="id88">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id89">
+<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="id90">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id91">
+<h1>3.0.1 (2012-10-14)</h1>
+<div class="section" id="id92">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id93">
+<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="id94">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id95">
+<h1>3.0 (2012-10-08)</h1>
+<div class="section" id="id96">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id97">
+<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="id98">
+<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="id99">
+<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="id100">
+<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="id101">
+<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="id102">
+<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="id103">
+<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="id104">
+<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="id105">
+<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="id106">
+<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="id107">
+<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="id108">
+<h1>2.3.6 (2012-09-28)</h1>
+<div class="section" id="id109">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id110">
+<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="id111">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id112">
+<h1>2.3.5 (2012-07-31)</h1>
+<div class="section" id="id113">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id114">
+<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="id115">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id116">
+<h1>2.3.4 (2012-03-26)</h1>
+<div class="section" id="id117">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id118">
+<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="id119">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id120">
+<h1>2.3.3 (2012-01-04)</h1>
+<div class="section" id="id121">
+<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="id122">
+<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="id123">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id124">
+<h1>2.3.2 (2011-11-11)</h1>
+<div class="section" id="id125">
+<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="id126">
+<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="id127">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id128">
+<h1>2.3.1 (2011-09-25)</h1>
+<div class="section" id="id129">
+<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="id130">
+<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="id131">
+<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="id132">
+<h1>2.3 (2011-02-06)</h1>
+<div class="section" id="id133">
+<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="id134">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When finished reading from a file-like object, the parser
+immediately calls its <tt class="docutils literal">.close()</tt> method.</li>
+<li>When finished parsing, <tt class="docutils literal">iterparse()</tt> immediately closes the input
+file.</li>
+<li>Work-around for libxml2 bug that can leave the HTML parser in a
+non-functional state after parsing a severly broken document (fixed
+in libxml2 2.7.8).</li>
+<li><tt class="docutils literal">marque</tt> tag in HTML cleanup code is correctly named <tt class="docutils literal">marquee</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id135">
+<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="id136">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id137">
+<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="id138">
+<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="id139">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id140">
+<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="id141">
+<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="id142">
+<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="id143">
+<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="id144">
+<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="id145">
+<h1>2.2.8 (2010-09-02)</h1>
+<div class="section" id="id146">
+<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="id147">
+<h1>2.2.7 (2010-07-24)</h1>
+<div class="section" id="id148">
+<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="id149">
+<h1>2.2.6 (2010-03-02)</h1>
+<div class="section" id="id150">
+<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="id151">
+<h1>2.2.5 (2010-02-28)</h1>
+<div class="section" id="id152">
+<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="id153">
+<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="id154">
+<h1>2.2.4 (2009-11-11)</h1>
+<div class="section" id="id155">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Static build of libxml2/libxslt was broken.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id156">
+<h1>2.2.3 (2009-10-30)</h1>
+<div class="section" id="id157">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id158">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
+parser.</li>
+<li>Looking up and deleting attributes without a namespace could hit a
+namespaced attribute of the same name instead.</li>
+<li>Late errors during calls to <tt class="docutils literal">SubElement()</tt> (e.g. attribute related
+ones) could leave a partially initialised element in the tree.</li>
+<li>Modifying trees that contain parsed entity references could result
+in an infinite loop.</li>
+<li>ObjectifiedElement.__setattr__ created an empty-string child element when the
+attribute value was rejected as a non-unicode/non-ascii string</li>
+<li>Syntax errors in <tt class="docutils literal">lxml.cssselect</tt> could result in misleading error
+messages.</li>
+<li>Invalid syntax in CSS expressions could lead to an infinite loop in
+the parser of <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS special character escapes were not properly handled in
+<tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS Unicode escapes were not properly decoded in <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>Select options in HTML forms that had no explicit <tt class="docutils literal">value</tt>
+attribute were not handled correctly.  The HTML standard dictates
+that their value is defined by their text content.  This is now
+supported by lxml.html.</li>
+<li>XPath raised a TypeError when finding CDATA sections.  This is now
+fully supported.</li>
+<li>Calling <tt class="docutils literal">help(lxml.objectify)</tt> didn't work at the prompt.</li>
+<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify no longer defines the default
+namespaces when annotation is disabled.</li>
+<li>Feed parser failed to honout the 'recover' option on parse errors.</li>
+<li>Diverting the error logging to Python's logging system was broken.</li>
+</ul>
+</div>
+<div class="section" id="id159">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id160">
+<h1>2.2.2 (2009-06-21)</h1>
+<div class="section" id="id161">
+<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="id162">
+<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="id163">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id164">
+<h1>2.2.1 (2009-06-02)</h1>
+<div class="section" id="id165">
+<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="id166">
+<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="id167">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id168">
+<h1>2.2 (2009-03-21)</h1>
+<div class="section" id="id169">
+<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="id170">
+<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="id171">
+<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="id172">
+<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="id173">
+<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="id174">
+<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="id175">
+<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="id176">
+<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="id177">
+<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="id178">
+<h1>2.1.5 (2009-01-06)</h1>
+<div class="section" id="id179">
+<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="id180">
+<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="id181">
+<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="id182">
+<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="id183">
+<h1>2.1.4 (2008-12-12)</h1>
+<div class="section" id="id184">
+<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="id185">
+<h1>2.0.11 (2008-12-12)</h1>
+<div class="section" id="id186">
+<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="id187">
+<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="id188">
+<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="id189">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id190">
+<h1>2.1.3 (2008-11-17)</h1>
+<div class="section" id="id191">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id192">
+<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="id193">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id194">
+<h1>2.0.10 (2008-11-17)</h1>
+<div class="section" id="id195">
+<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="id196">
+<h1>2.1.2 (2008-09-05)</h1>
+<div class="section" id="id197">
+<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="id198">
+<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="id199">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id200">
+<h1>2.0.9 (2008-09-05)</h1>
+<div class="section" id="id201">
+<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="id202">
+<h1>2.1.1 (2008-07-24)</h1>
+<div class="section" id="id203">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id204">
+<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="id205">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id206">
+<h1>2.0.8 (2008-07-24)</h1>
+<div class="section" id="id207">
+<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="id208">
+<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="id209">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id210">
+<h1>2.1 (2008-07-09)</h1>
+<div class="section" id="id211">
+<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="id212">
+<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="id213">
+<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="id214">
+<h1>2.0.7 (2008-06-20)</h1>
+<div class="section" id="id215">
+<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="id216">
+<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="id217">
+<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="id218">
+<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="id219">
+<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="id220">
+<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="id221">
+<h1>2.0.6 (2008-05-31)</h1>
+<div class="section" id="id222">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id223">
+<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="id224">
+<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="id225">
+<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="id226">
+<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="id227">
+<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="id228">
+<h1>2.0.5 (2008-05-01)</h1>
+<div class="section" id="id229">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id230">
+<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="id231">
+<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="id232">
+<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="id233">
+<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="id234">
+<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="id235">
+<h1>2.0.4 (2008-04-13)</h1>
+<div class="section" id="id236">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id237">
+<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="id238">
+<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="id239">
+<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="id240">
+<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="id241">
+<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="id242">
+<h1>2.0.3 (2008-03-26)</h1>
+<div class="section" id="id243">
+<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="id244">
+<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="id245">
+<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="id246">
+<h1>2.0.2 (2008-02-22)</h1>
+<div class="section" id="id247">
+<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="id248">
+<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="id249">
+<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="id250">
+<h1>2.0.1 (2008-02-13)</h1>
+<div class="section" id="id251">
+<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="id252">
+<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="id253">
+<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="id254">
+<h1>2.0 (2008-02-01)</h1>
+<div class="section" id="id255">
+<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="id256">
+<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="id257">
+<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 loosing type information that is already there.</li>
+<li><tt class="docutils literal">element.getiterator()</tt> returns a list, use <tt class="docutils literal">element.iter()</tt> to retrieve
+an iterator (ElementTree 1.3 compatible behaviour)</li>
+<li>objectify.PyType for None is now called &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="id258">
+<h1>1.3.6 (2007-10-29)</h1>
+<div class="section" id="id259">
+<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="id260">
+<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="id261">
+<h1>1.3.5 (2007-10-22)</h1>
+<div class="section" id="id262">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id263">
+<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="id264">
+<h1>1.3.4 (2007-08-30)</h1>
+<div class="section" id="id265">
+<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="id266">
+<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="id267">
+<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="id268">
+<h1>1.3.3 (2007-07-26)</h1>
+<div class="section" id="id269">
+<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="id270">
+<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="id271">
+<h1>1.3.2 (2007-07-03)</h1>
+<div class="section" id="id272">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id273">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>&quot;deallocating None&quot; crash bug</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id274">
+<h1>1.3.1 (2007-07-02)</h1>
+<div class="section" id="id275">
+<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="id276">
+<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="id277">
+<h1>1.3 (2007-06-24)</h1>
+<div class="section" id="id278">
+<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="id279">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Removing Elements from a tree could make them loose their namespace
+declarations</li>
+<li><tt class="docutils literal">ElementInclude</tt> didn't honour base URL of original document</li>
+<li>Replacing the children slice of an Element would cut off the tails of the
+original children</li>
+<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
+<tt class="docutils literal">ProcessingInstruction</tt> as tags</li>
+<li>API functions now check incoming strings for XML conformity.  Zero bytes or
+low ASCII characters are no longer accepted (AssertionError).</li>
+<li>XSLT parsing failed to pass resolver context on to imported documents</li>
+<li>passing '' as namespace prefix in nsmap could be passed through to libxml2</li>
+<li>Objectify couldn't handle prefixed XSD type names in <tt class="docutils literal">xsi:type</tt></li>
+<li>More ET compatible behaviour when writing out XML declarations or not</li>
+<li>More robust error handling in <tt class="docutils literal">iterparse()</tt></li>
+<li>Documents lost their top-level PIs and comments on serialisation</li>
+<li>lxml.sax failed on comments and PIs. Comments are now properly ignored and
+PIs are copied.</li>
+<li>Possible memory leaks in namespace handling when moving elements between
+documents</li>
+</ul>
+</div>
+<div class="section" id="id280">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>major restructuring in the documentation</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id281">
+<h1>1.2.1 (2007-02-27)</h1>
+<div class="section" id="id282">
+<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="id283">
+<h1>1.2 (2007-02-20)</h1>
+<div class="section" id="id284">
+<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="id285">
+<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="id286">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>code cleanup: redundant _NodeBase super class merged into _Element class
+Note: although the impact should be zero in most cases, this change breaks
+the compatibiliy of the public C-API</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id287">
+<h1>1.1.2 (2006-10-30)</h1>
+<div class="section" id="id288">
+<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="id289">
+<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="id290">
+<h1>1.1.1 (2006-09-21)</h1>
+<div class="section" id="id291">
+<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="id292">
+<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="id293">
+<h1>1.1 (2006-09-13)</h1>
+<div class="section" id="id294">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Comments and processing instructions return '&lt;!-- coment --&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="id295">
+<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="id296">
+<h1>1.0.4 (2006-09-09)</h1>
+<div class="section" id="id297">
+<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="id298">
+<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="id299">
+<h1>1.0.3 (2006-08-08)</h1>
+<div class="section" id="id300">
+<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="id301">
+<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="id302">
+<h1>1.0.2 (2006-06-27)</h1>
+<div class="section" id="id303">
+<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="id304">
+<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="id305">
+<h1>1.0.1 (2006-06-09)</h1>
+<div class="section" id="id306">
+<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="id307">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Document deallocation could crash in certain garbage collection scenarios</li>
+<li>Extension function calls in XSLT variable declarations could break the
+stylesheet and crash on repeated calls</li>
+<li>Deep copying Elements could loose namespaces declared in parents</li>
+<li>Deep copying Elements did not copy tail</li>
+<li>Parsing file(-like) objects failed to load external entities</li>
+<li>Parsing 8-bit strings from file(-like) objects raised an exception</li>
+<li>xsl:include failed when the stylesheet was parsed from a file-like object</li>
+<li>lxml.sax.ElementTreeProducer did not call startDocument() / endDocument()</li>
+<li>MSVC compiler complained about long strings (supports only 2048 bytes)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id308">
+<h1>1.0 (2006-06-01)</h1>
+<div class="section" id="id309">
+<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="id310">
+<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="id311">
+<h1>0.9.2 (2006-05-10)</h1>
+<div class="section" id="id312">
+<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="id313">
+<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="id314">
+<h1>0.9.1 (2006-03-30)</h1>
+<div class="section" id="id315">
+<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="id316">
+<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="id317">
+<h1>0.9 (2006-03-20)</h1>
+<div class="section" id="id318">
+<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="id319">
+<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="id320">
+<h1>0.8 (2005-11-03)</h1>
+<div class="section" id="id321">
+<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="id322">
+<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="id323">
+<h1>0.7 (2005-06-15)</h1>
+<div class="section" id="id324">
+<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="id325">
+<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="id326">
+<h1>0.6 (2005-05-14)</h1>
+<div class="section" id="id327">
+<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="id328">
+<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="id329">
+<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="id330">
+<h1>0.5 (2005-04-08)</h1>
+<p>Initial public release.</p>
+</div>
+</div>
+<div class="footer">
+<hr class="footer" />
+Generated on: 2015-04-10.
+
+</div>
+</body>
+</html>
similarity index 98%
rename from doc/html/changes-3.6.1.html
rename to doc/html/changes-3.6.0.html
index 70d6137..4ac4ca4 100644 (file)
 <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">
+<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/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>
+<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="id4">
+<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/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.
+<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>
 </ul>
 </div>
 </div>
-<div class="section" id="id5">
+<div class="section" id="id2">
 <h1>3.5.0 (2015-11-13)</h1>
-<div class="section" id="id6">
+<div class="section" id="id3">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Unicode string results failed XPath queries in PyPy.</li>
@@ -71,7 +48,7 @@ and continued parsing instead.</li>
 </div>
 <div class="section" id="b1-2015-09-18">
 <h1>3.5.0b1 (2015-09-18)</h1>
-<div class="section" id="id7">
+<div class="section" id="id4">
 <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>
@@ -103,7 +80,7 @@ Patch by Olli Pottonen.</li>
 of version 3 if available.</li>
 </ul>
 </div>
-<div class="section" id="id8">
+<div class="section" id="id5">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory errors that occur during tree adaptations (e.g. moving subtrees
@@ -130,9 +107,9 @@ with ElementPath to avoid hiding bugs in user code.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id9">
+<div class="section" id="id6">
 <h1>3.4.4 (2015-04-25)</h1>
-<div class="section" id="id10">
+<div class="section" id="id7">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>An ElementTree compatibility test added in lxml 3.4.3 that failed in
@@ -140,9 +117,9 @@ Python 3.4+ was removed again.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id11">
+<div class="section" id="id8">
 <h1>3.4.3 (2015-04-15)</h1>
-<div class="section" id="id12">
+<div class="section" id="id9">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Expression cache in ElementPath was ignored.  Fix by Changaco.</li>
@@ -155,9 +132,9 @@ double quotes.  Patch by Olli Pottonen.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id13">
+<div class="section" id="id10">
 <h1>3.4.2 (2015-02-07)</h1>
-<div class="section" id="id14">
+<div class="section" id="id11">
 <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
@@ -169,25 +146,25 @@ with pseudo-attributes.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id15">
+<div class="section" id="id12">
 <h1>3.4.1 (2014-11-20)</h1>
-<div class="section" id="id16">
+<div class="section" id="id13">
 <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">
+<div class="section" id="id14">
 <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">
+<div class="section" id="id15">
 <h1>3.4.0 (2014-09-10)</h1>
-<div class="section" id="id19">
+<div class="section" id="id16">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">xmlfile(buffered=False)</tt> disables output buffering and flushes the
@@ -212,7 +189,7 @@ 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">
+<div class="section" id="id17">
 <h2>Bugs fixed</h2>
 </div>
 <div class="section" id="other-changes">
@@ -229,9 +206,9 @@ use lxml 3.3.x with older versions.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id21">
+<div class="section" id="id18">
 <h1>3.3.6 (2014-08-28)</h1>
-<div class="section" id="id22">
+<div class="section" id="id19">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Prevent tree cycle creation when adding Elements as siblings.</li>
@@ -241,9 +218,9 @@ extension functions.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id23">
+<div class="section" id="id20">
 <h1>3.3.5 (2014-04-18)</h1>
-<div class="section" id="id24">
+<div class="section" id="id21">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>HTML cleaning could fail to strip javascript links that mix control
@@ -251,34 +228,34 @@ characters into the link scheme.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id25">
+<div class="section" id="id22">
 <h1>3.3.4 (2014-04-03)</h1>
-<div class="section" id="id26">
+<div class="section" id="id23">
 <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">
+<div class="section" id="id24">
 <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">
+<div class="section" id="id25">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id29">
+<div class="section" id="id26">
 <h1>3.3.3 (2014-03-04)</h1>
-<div class="section" id="id30">
+<div class="section" id="id27">
 <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">
+<div class="section" id="id28">
 <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
@@ -286,9 +263,9 @@ subclassed from Python code.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id32">
+<div class="section" id="id29">
 <h1>3.3.2 (2014-02-26)</h1>
-<div class="section" id="id33">
+<div class="section" id="id30">
 <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
@@ -309,12 +286,12 @@ provide the same interface as that returned for Elements.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id34">
+<div class="section" id="id31">
 <h1>3.3.1 (2014-02-12)</h1>
-<div class="section" id="id35">
+<div class="section" id="id32">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id36">
+<div class="section" id="id33">
 <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
@@ -326,36 +303,36 @@ 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">
+<div class="section" id="id34">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id38">
+<div class="section" id="id35">
 <h1>3.3.0 (2014-01-26)</h1>
-<div class="section" id="id39">
+<div class="section" id="id36">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id40">
+<div class="section" id="id37">
 <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">
+<div class="section" id="id38">
 <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">
+<div class="section" id="id39">
 <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">
+<div class="section" id="id40">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Several error handling problems were fixed throughout the code base that
@@ -368,7 +345,7 @@ propagate exceptions (its return type is <tt class="docutils literal">void</tt>)
 parsing the string character by character.</li>
 </ul>
 </div>
-<div class="section" id="id44">
+<div class="section" id="id41">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Document cleanup code was simplified using the new GC features in
@@ -378,10 +355,10 @@ Cython 0.20.</li>
 </div>
 <div class="section" id="beta4-2014-01-12">
 <h1>3.3.0beta4 (2014-01-12)</h1>
-<div class="section" id="id45">
+<div class="section" id="id42">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id46">
+<div class="section" id="id43">
 <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
@@ -394,7 +371,7 @@ and keyword arguments could modify the mapping passed as <tt class="docutils lit
 the docinfo property) lost their attribute declarations.</li>
 </ul>
 </div>
-<div class="section" id="id47">
+<div class="section" id="id44">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Built with Cython 0.20pre (gitrev 012ae82eb) to prepare support for
@@ -404,39 +381,39 @@ Python 3.4.</li>
 </div>
 <div class="section" id="beta3-2014-01-02">
 <h1>3.3.0beta3 (2014-01-02)</h1>
-<div class="section" id="id48">
+<div class="section" id="id45">
 <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">
+<div class="section" id="id46">
 <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">
+<div class="section" id="id47">
 <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">
+<div class="section" id="id48">
 <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">
+<div class="section" id="id49">
 <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">
+<div class="section" id="id50">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The safety check in the read-only tree implementation (e.g. used by
@@ -449,7 +426,7 @@ behaviour.</li>
 </div>
 <div class="section" id="beta1-2013-12-12">
 <h1>3.3.0beta1 (2013-12-12)</h1>
-<div class="section" id="id54">
+<div class="section" id="id51">
 <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
@@ -461,7 +438,7 @@ incremental parsing, as implemented for ElementTree in Python 3.4.</li>
 (<tt class="docutils literal">html=True</tt>).</li>
 </ul>
 </div>
-<div class="section" id="id55">
+<div class="section" id="id52">
 <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.
@@ -483,7 +460,7 @@ 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">
+<div class="section" id="id53">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Some basic API classes use freelists internally for faster
@@ -494,12 +471,12 @@ classes internally instead of being a parser itself.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id57">
+<div class="section" id="id54">
 <h1>3.2.5 (2014-01-02)</h1>
-<div class="section" id="id58">
+<div class="section" id="id55">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id59">
+<div class="section" id="id56">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
@@ -508,16 +485,16 @@ classes internally instead of being a parser itself.</li>
 comment or PI).</li>
 </ul>
 </div>
-<div class="section" id="id61">
+<div class="section" id="id58">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id62">
+<div class="section" id="id59">
 <h1>3.2.4 (2013-11-07)</h1>
-<div class="section" id="id63">
+<div class="section" id="id60">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id64">
+<div class="section" id="id61">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory leak when creating an XPath evaluator in a thread.</li>
@@ -528,32 +505,32 @@ to one of its own descendants.</li>
 <li>Compressed plain-text serialisation to file-like objects was broken.</li>
 </ul>
 </div>
-<div class="section" id="id67">
+<div class="section" id="id64">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id68">
+<div class="section" id="id65">
 <h1>3.2.3 (2013-07-28)</h1>
-<div class="section" id="id69">
+<div class="section" id="id66">
 <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">
+<div class="section" id="id67">
 <h1>3.2.2 (2013-07-28)</h1>
-<div class="section" id="id71">
+<div class="section" id="id68">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id72">
+<div class="section" id="id69">
 <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">
+<div class="section" id="id70">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Return values of user provided element class lookup methods are now
@@ -562,9 +539,9 @@ API class mismatches.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id74">
+<div class="section" id="id71">
 <h1>3.2.1 (2013-05-11)</h1>
-<div class="section" id="id75">
+<div class="section" id="id72">
 <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
@@ -573,7 +550,7 @@ and <tt class="docutils literal">remove_blank_text</tt> that discard either all
 strings from the result list.</li>
 </ul>
 </div>
-<div class="section" id="id76">
+<div class="section" id="id73">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>When moving Elements to another tree, the namespace cleanup mechanism
@@ -586,16 +563,16 @@ to a crash.</li>
 crashed.</li>
 </ul>
 </div>
-<div class="section" id="id77">
+<div class="section" id="id74">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id78">
+<div class="section" id="id75">
 <h1>3.2.0 (2013-04-28)</h1>
-<div class="section" id="id79">
+<div class="section" id="id76">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id80">
+<div class="section" id="id77">
 <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
@@ -614,16 +591,16 @@ of overwriting the current value.</li>
 allowed by the user provided whitelist.  Patch by Christine Koppelt.</li>
 </ul>
 </div>
-<div class="section" id="id81">
+<div class="section" id="id78">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id82">
+<div class="section" id="id79">
 <h1>3.1.2 (2013-04-12)</h1>
-<div class="section" id="id83">
+<div class="section" id="id80">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id84">
+<div class="section" id="id81">
 <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
@@ -635,16 +612,16 @@ the result tree to a Unicode string.</li>
 by properly exported API function <tt class="docutils literal">xmlBufUse()</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id85">
+<div class="section" id="id82">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id86">
+<div class="section" id="id83">
 <h1>3.1.1 (2013-03-29)</h1>
-<div class="section" id="id87">
+<div class="section" id="id84">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id88">
+<div class="section" id="id85">
 <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
@@ -652,7 +629,7 @@ an AttributeError in Py3.</li>
 <li>Illegal memory access during cleanup in incremental xmlfile writer.</li>
 </ul>
 </div>
-<div class="section" id="id89">
+<div class="section" id="id86">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The externally useless class <tt class="docutils literal">lxml.etree._BaseParser</tt> was removed
@@ -660,16 +637,16 @@ from the module dict.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id90">
+<div class="section" id="id87">
 <h1>3.1.0 (2013-02-10)</h1>
-<div class="section" id="id91">
+<div class="section" id="id88">
 <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">
+<div class="section" id="id89">
 <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
@@ -682,13 +659,13 @@ in for the current run.</li>
 without threading support.  Patch by Ulrich Seidl.</li>
 </ul>
 </div>
-<div class="section" id="id93">
+<div class="section" id="id90">
 <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">
+<div class="section" id="id91">
 <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
@@ -699,7 +676,7 @@ instead of byte strings for plain ASCII content.</li>
 tags with non-identifier names without having to resort to getattr().</li>
 </ul>
 </div>
-<div class="section" id="id95">
+<div class="section" id="id92">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>When starting from a non-namespaced element in lxml.objectify, searching
@@ -711,7 +688,7 @@ the search to non-namespaced children.</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">
+<div class="section" id="id93">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The externally useless class <tt class="docutils literal">_ObjectifyElementMakerCaller</tt> was
@@ -721,27 +698,27 @@ many children.  Patch by Anders Hammarquist.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id97">
+<div class="section" id="id94">
 <h1>3.0.2 (2012-12-14)</h1>
-<div class="section" id="id98">
+<div class="section" id="id95">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id99">
+<div class="section" id="id96">
 <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">
+<div class="section" id="id97">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id101">
+<div class="section" id="id98">
 <h1>3.0.1 (2012-10-14)</h1>
-<div class="section" id="id102">
+<div class="section" id="id99">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id103">
+<div class="section" id="id100">
 <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
@@ -750,16 +727,16 @@ in PyPy without proper cleanup.</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">
+<div class="section" id="id101">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id105">
+<div class="section" id="id102">
 <h1>3.0 (2012-10-08)</h1>
-<div class="section" id="id106">
+<div class="section" id="id103">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id107">
+<div class="section" id="id104">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>End-of-file handling was incorrect in iterparse() when reading from
@@ -767,7 +744,7 @@ 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">
+<div class="section" id="id105">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The build no longer uses Cython by default unless the generated C files
@@ -780,21 +757,21 @@ run special setup.py commands that do not actually run a build), pass
 </div>
 <div class="section" id="beta1-2012-09-26">
 <h1>3.0beta1 (2012-09-26)</h1>
-<div class="section" id="id109">
+<div class="section" id="id106">
 <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">
+<div class="section" id="id107">
 <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">
+<div class="section" id="id108">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The code was adapted to work with the upcoming libxml2 2.9.0 release.</li>
@@ -803,7 +780,7 @@ to simplify debugging of memory leaks etc.</li>
 </div>
 <div class="section" id="alpha2-2012-08-23">
 <h1>3.0alpha2 (2012-08-23)</h1>
-<div class="section" id="id112">
+<div class="section" id="id109">
 <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
@@ -822,20 +799,20 @@ and <tt class="docutils literal">.itertext()</tt> methods;the <tt class="docutil
 to top-level during exclusive serialisation.</li>
 </ul>
 </div>
-<div class="section" id="id113">
+<div class="section" id="id110">
 <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">
+<div class="section" id="id111">
 <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">
+<div class="section" id="id112">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Initial support for building in PyPy (through cpyext).</li>
@@ -851,7 +828,7 @@ 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">
+<div class="section" id="id113">
 <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
@@ -878,7 +855,7 @@ constructor would fail with an exception, stating that the text
 cannot be modified.</li>
 </ul>
 </div>
-<div class="section" id="id117">
+<div class="section" id="id114">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The code base was overhauled to properly use 'const' where the API
@@ -927,44 +904,44 @@ _XSLTResultTree, _XSLTProcessingInstruction</tt></li>
 </ul>
 </div>
 </div>
-<div class="section" id="id118">
+<div class="section" id="id115">
 <h1>2.3.6 (2012-09-28)</h1>
-<div class="section" id="id119">
+<div class="section" id="id116">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id120">
+<div class="section" id="id117">
 <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">
+<div class="section" id="id118">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id122">
+<div class="section" id="id119">
 <h1>2.3.5 (2012-07-31)</h1>
-<div class="section" id="id123">
+<div class="section" id="id120">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id124">
+<div class="section" id="id121">
 <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">
+<div class="section" id="id122">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id126">
+<div class="section" id="id123">
 <h1>2.3.4 (2012-03-26)</h1>
-<div class="section" id="id127">
+<div class="section" id="id124">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id128">
+<div class="section" id="id125">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when building an nsmap (Element property) with empty
@@ -974,20 +951,20 @@ during threaded XSLT processing.</li>
 <li>XSLT stylesheet compilation could ignore compilation errors.</li>
 </ul>
 </div>
-<div class="section" id="id129">
+<div class="section" id="id126">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id130">
+<div class="section" id="id127">
 <h1>2.3.3 (2012-01-04)</h1>
-<div class="section" id="id131">
+<div class="section" id="id128">
 <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">
+<div class="section" id="id129">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
@@ -1001,13 +978,13 @@ Patch by Simon Sapin.</li>
 'img' tags without 'src' attribute.</li>
 </ul>
 </div>
-<div class="section" id="id133">
+<div class="section" id="id130">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id134">
+<div class="section" id="id131">
 <h1>2.3.2 (2011-11-11)</h1>
-<div class="section" id="id135">
+<div class="section" id="id132">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.objectify.deannotate()</tt> has a new boolean option
@@ -1019,7 +996,7 @@ copy of <tt class="docutils literal">etree.SubElement</tt> to avoid an otherwise
 of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
 </ul>
 </div>
-<div class="section" id="id136">
+<div class="section" id="id133">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fixed the &quot;descendant&quot; bug in cssselect a second time (after a first
@@ -1034,13 +1011,13 @@ a descendant combinator. For example, &quot;div&gt; .foo&quot; was parsed the sa
 &quot;div&gt;* .foo&quot; instead of &quot;div&gt;.foo&quot;. Patch by Simon Sapin.</li>
 </ul>
 </div>
-<div class="section" id="id137">
+<div class="section" id="id134">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id138">
+<div class="section" id="id135">
 <h1>2.3.1 (2011-09-25)</h1>
-<div class="section" id="id139">
+<div class="section" id="id136">
 <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
@@ -1058,7 +1035,7 @@ 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">
+<div class="section" id="id137">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>HTML cleaning didn't remove 'data:' links.</li>
@@ -1086,7 +1063,7 @@ collected form values.</li>
 field properly selects them and unselects them.</li>
 </ul>
 </div>
-<div class="section" id="id141">
+<div class="section" id="id138">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Static builds can specify the download directory with the
@@ -1094,16 +1071,16 @@ field properly selects them and unselects them.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id142">
+<div class="section" id="id139">
 <h1>2.3 (2011-02-06)</h1>
-<div class="section" id="id143">
+<div class="section" id="id140">
 <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">
+<div class="section" id="id141">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>When finished reading from a file-like object, the parser
@@ -1116,7 +1093,7 @@ 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">
+<div class="section" id="id142">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Some public functions in the Cython-level C-API have more explicit
@@ -1126,10 +1103,10 @@ return types.</li>
 </div>
 <div class="section" id="beta1-2010-09-06">
 <h1>2.3beta1 (2010-09-06)</h1>
-<div class="section" id="id146">
+<div class="section" id="id143">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id147">
+<div class="section" id="id144">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in newer libxml2 versions when moving elements between
@@ -1141,23 +1118,23 @@ documents that had attributes on replaced XInclude nodes.</li>
 use of os.tempnam.  It now takes an optional 'encoding' parameter.</li>
 </ul>
 </div>
-<div class="section" id="id148">
+<div class="section" id="id145">
 <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">
+<div class="section" id="id146">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id150">
+<div class="section" id="id147">
 <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">
+<div class="section" id="id148">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><tt class="docutils literal">repr()</tt> of Element objects shows the hex ID with leading 0x
@@ -1167,7 +1144,7 @@ stylesheet created in a different thread.</li>
 </div>
 <div class="section" id="alpha1-2010-06-19">
 <h1>2.3alpha1 (2010-06-19)</h1>
-<div class="section" id="id152">
+<div class="section" id="id149">
 <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>
@@ -1218,7 +1195,7 @@ the document on submit.</li>
 (compatible with ElementTree).</li>
 </ul>
 </div>
-<div class="section" id="id153">
+<div class="section" id="id150">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>API is hardened against invalid proxy instances to prevent crashes
@@ -1252,7 +1229,7 @@ parsing failed.  Now it is guaranteed that <tt class="docutils literal">.close()
 called after parsing, regardless of the outcome.</li>
 </ul>
 </div>
-<div class="section" id="id154">
+<div class="section" id="id151">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Official support for Python 3.1.2 and later.</li>
@@ -1265,9 +1242,9 @@ collector to clean up.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id155">
+<div class="section" id="id152">
 <h1>2.2.8 (2010-09-02)</h1>
-<div class="section" id="id156">
+<div class="section" id="id153">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in newer libxml2 versions when moving elements between
@@ -1276,9 +1253,9 @@ documents that had attributes on replaced XInclude nodes.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id157">
+<div class="section" id="id154">
 <h1>2.2.7 (2010-07-24)</h1>
-<div class="section" id="id158">
+<div class="section" id="id155">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in XSLT when generating text-only result documents with a
@@ -1286,25 +1263,25 @@ stylesheet created in a different thread.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id159">
+<div class="section" id="id156">
 <h1>2.2.6 (2010-03-02)</h1>
-<div class="section" id="id160">
+<div class="section" id="id157">
 <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">
+<div class="section" id="id158">
 <h1>2.2.5 (2010-02-28)</h1>
-<div class="section" id="id162">
+<div class="section" id="id159">
 <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">
+<div class="section" id="id160">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in XPath evaluation when reading smart strings from a document
@@ -1323,21 +1300,21 @@ an element.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id164">
+<div class="section" id="id161">
 <h1>2.2.4 (2009-11-11)</h1>
-<div class="section" id="id165">
+<div class="section" id="id162">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Static build of libxml2/libxslt was broken.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id166">
+<div class="section" id="id163">
 <h1>2.2.3 (2009-10-30)</h1>
-<div class="section" id="id167">
+<div class="section" id="id164">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id168">
+<div class="section" id="id165">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
@@ -1370,13 +1347,13 @@ namespaces when annotation is disabled.</li>
 <li>Diverting the error logging to Python's logging system was broken.</li>
 </ul>
 </div>
-<div class="section" id="id169">
+<div class="section" id="id166">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id170">
+<div class="section" id="id167">
 <h1>2.2.2 (2009-06-21)</h1>
-<div class="section" id="id171">
+<div class="section" id="id168">
 <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>,
@@ -1384,7 +1361,7 @@ namespaces when annotation is disabled.</li>
 from a subtree.</li>
 </ul>
 </div>
-<div class="section" id="id172">
+<div class="section" id="id169">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Namespace cleanup on subtree insertions could result in missing
@@ -1398,13 +1375,13 @@ BoolElement ({True, False, T, F, t, f} not any more), restoring lxml &lt;= 2.0
 behaviour.</li>
 </ul>
 </div>
-<div class="section" id="id173">
+<div class="section" id="id170">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id174">
+<div class="section" id="id171">
 <h1>2.2.1 (2009-06-02)</h1>
-<div class="section" id="id175">
+<div class="section" id="id172">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Injecting default attributes into a document during XML Schema
@@ -1413,7 +1390,7 @@ validation (also at parse time).</li>
 restrictions imposed by libxml2 2.7.</li>
 </ul>
 </div>
-<div class="section" id="id176">
+<div class="section" id="id173">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The script for statically building libxml2 and libxslt didn't work
@@ -1422,13 +1399,13 @@ in Py3.</li>
 for parsing (which could lead to a crash before release 2.6.24).</li>
 </ul>
 </div>
-<div class="section" id="id177">
+<div class="section" id="id174">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id178">
+<div class="section" id="id175">
 <h1>2.2 (2009-03-21)</h1>
-<div class="section" id="id179">
+<div class="section" id="id176">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for <tt class="docutils literal">standalone</tt> flag in XML declaration through
@@ -1436,7 +1413,7 @@ for parsing (which could lead to a crash before release 2.6.24).</li>
 on serialisation.</li>
 </ul>
 </div>
-<div class="section" id="id180">
+<div class="section" id="id177">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when parsing an XML Schema with external imports from a
@@ -1446,7 +1423,7 @@ filename.</li>
 </div>
 <div class="section" id="beta4-2009-02-27">
 <h1>2.2beta4 (2009-02-27)</h1>
-<div class="section" id="id181">
+<div class="section" id="id178">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support strings and instantiable Element classes as child arguments
@@ -1455,7 +1432,7 @@ to the constructor of custom Element classes.</li>
 objects.</li>
 </ul>
 </div>
-<div class="section" id="id182">
+<div class="section" id="id179">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Deep-copying an ElementTree copied neither its sibling PIs and
@@ -1470,7 +1447,7 @@ to a problem in Cython, not lxml itself.</li>
 was evaluated incorrectly.</li>
 </ul>
 </div>
-<div class="section" id="id183">
+<div class="section" id="id180">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Official support for Python 3.0.1.</li>
@@ -1481,14 +1458,14 @@ for Elements without text content.</li>
 </div>
 <div class="section" id="beta3-2009-02-17">
 <h1>2.2beta3 (2009-02-17)</h1>
-<div class="section" id="id184">
+<div class="section" id="id181">
 <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">
+<div class="section" id="id182">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory leak in XPath evaluators.</li>
@@ -1500,7 +1477,7 @@ string failed.</li>
 <li>Minor fixes for Python 3.</li>
 </ul>
 </div>
-<div class="section" id="id186">
+<div class="section" id="id183">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The global error log (which is copied into the exception log) is now
@@ -1511,7 +1488,7 @@ local to a thread, which fixes some race conditions.</li>
 </div>
 <div class="section" id="beta2-2009-01-25">
 <h1>2.2beta2 (2009-01-25)</h1>
-<div class="section" id="id187">
+<div class="section" id="id184">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Potential memory leak on exception handling.  This was due to a
@@ -1523,9 +1500,9 @@ problem in Cython, not lxml itself.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id188">
+<div class="section" id="id185">
 <h1>2.1.5 (2009-01-06)</h1>
-<div class="section" id="id189">
+<div class="section" id="id186">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Potential memory leak on exception handling.  This was due to a
@@ -1536,39 +1513,39 @@ problem in Cython, not lxml itself.</li>
 </div>
 <div class="section" id="beta1-2008-12-12">
 <h1>2.2beta1 (2008-12-12)</h1>
-<div class="section" id="id190">
+<div class="section" id="id187">
 <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">
+<div class="section" id="id188">
 <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">
+<div class="section" id="id189">
 <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">
+<div class="section" id="id190">
 <h1>2.1.4 (2008-12-12)</h1>
-<div class="section" id="id194">
+<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="id195">
+<div class="section" id="id192">
 <h1>2.0.11 (2008-12-12)</h1>
-<div class="section" id="id196">
+<div class="section" id="id193">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when using an XPath evaluator in multiple threads.</li>
@@ -1577,7 +1554,7 @@ just HTML strings.</li>
 </div>
 <div class="section" id="alpha1-2008-11-23">
 <h1>2.2alpha1 (2008-11-23)</h1>
-<div class="section" id="id197">
+<div class="section" id="id194">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for XSLT result tree fragments in XPath/XSLT extension
@@ -1587,7 +1564,7 @@ functions.</li>
 <li>Instantiating a custom Element classes creates a new Element.</li>
 </ul>
 </div>
-<div class="section" id="id198">
+<div class="section" id="id195">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>XSLT didn't inherit the parse options of the input document.</li>
@@ -1598,16 +1575,16 @@ that end in a parenthesis, will be linked in their entirety (typical
 with Wikipedia links).</li>
 </ul>
 </div>
-<div class="section" id="id199">
+<div class="section" id="id196">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id200">
+<div class="section" id="id197">
 <h1>2.1.3 (2008-11-17)</h1>
-<div class="section" id="id201">
+<div class="section" id="id198">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id202">
+<div class="section" id="id199">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Ref-count leaks when lxml enters a try-except statement while an
@@ -1626,13 +1603,13 @@ ElementTrees.</li>
 <li>Overriding the parser encoding didn't work for many encodings.</li>
 </ul>
 </div>
-<div class="section" id="id203">
+<div class="section" id="id200">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id204">
+<div class="section" id="id201">
 <h1>2.0.10 (2008-11-17)</h1>
-<div class="section" id="id205">
+<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
@@ -1641,9 +1618,9 @@ Cython, not lxml itself.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id206">
+<div class="section" id="id203">
 <h1>2.1.2 (2008-09-05)</h1>
-<div class="section" id="id207">
+<div class="section" id="id204">
 <h2>Features added</h2>
 <ul class="simple">
 <li>lxml.etree now tries to find the absolute path name of files when
@@ -1652,7 +1629,7 @@ resolving relative URLs, as lixbml2 can prepend them with the path
 of the source document.</li>
 </ul>
 </div>
-<div class="section" id="id208">
+<div class="section" id="id205">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory problem when passing documents between threads.</li>
@@ -1660,13 +1637,13 @@ of the source document.</li>
 exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
 </ul>
 </div>
-<div class="section" id="id209">
+<div class="section" id="id206">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id210">
+<div class="section" id="id207">
 <h1>2.0.9 (2008-09-05)</h1>
-<div class="section" id="id211">
+<div class="section" id="id208">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory problem when passing documents between threads.</li>
@@ -1675,12 +1652,12 @@ exception instead of calling <tt class="docutils literal">.close()</tt> on the t
 </ul>
 </div>
 </div>
-<div class="section" id="id212">
+<div class="section" id="id209">
 <h1>2.1.1 (2008-07-24)</h1>
-<div class="section" id="id213">
+<div class="section" id="id210">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id214">
+<div class="section" id="id211">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when parsing XSLT stylesheets in a thread and using them in
@@ -1689,20 +1666,20 @@ another.</li>
 Python 3.</li>
 </ul>
 </div>
-<div class="section" id="id215">
+<div class="section" id="id212">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id216">
+<div class="section" id="id213">
 <h1>2.0.8 (2008-07-24)</h1>
-<div class="section" id="id217">
+<div class="section" id="id214">
 <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">
+<div class="section" id="id215">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when parsing XSLT stylesheets in a thread and using them in
@@ -1711,13 +1688,13 @@ another.</li>
 with parameters.</li>
 </ul>
 </div>
-<div class="section" id="id219">
+<div class="section" id="id216">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id220">
+<div class="section" id="id217">
 <h1>2.1 (2008-07-09)</h1>
-<div class="section" id="id221">
+<div class="section" id="id218">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Smart strings can be switched off in XPath (<tt class="docutils literal">smart_strings</tt>
@@ -1726,7 +1703,7 @@ keyword option).</li>
 with whitespace in URL attributes.</li>
 </ul>
 </div>
-<div class="section" id="id222">
+<div class="section" id="id219">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Custom resolvers were not used for XMLSchema includes/imports and
@@ -1735,7 +1712,7 @@ XInclude processing.</li>
 with parameters.</li>
 </ul>
 </div>
-<div class="section" id="id223">
+<div class="section" id="id220">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
@@ -1744,15 +1721,15 @@ with parameters.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id224">
+<div class="section" id="id221">
 <h1>2.0.7 (2008-06-20)</h1>
-<div class="section" id="id225">
+<div class="section" id="id222">
 <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">
+<div class="section" id="id223">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Descending dot-separated classes in CSS selectors were not resolved
@@ -1763,7 +1740,7 @@ correctly.</li>
 the super class is not called from Python subclasses.</li>
 </ul>
 </div>
-<div class="section" id="id227">
+<div class="section" id="id224">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Non-ASCII characters in attribute values are no longer escaped on
@@ -1773,7 +1750,7 @@ serialisation.</li>
 </div>
 <div class="section" id="beta3-2008-06-19">
 <h1>2.1beta3 (2008-06-19)</h1>
-<div class="section" id="id228">
+<div class="section" id="id225">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Major overhaul of <tt class="docutils literal">tools/xpathgrep.py</tt> script.</li>
@@ -1799,7 +1776,7 @@ lxml.html (experimental).</li>
 (experimental).</li>
 </ul>
 </div>
-<div class="section" id="id229">
+<div class="section" id="id226">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
@@ -1814,7 +1791,7 @@ platform.</li>
 <li>Rare crash when serialising to a file object with certain encodings.</li>
 </ul>
 </div>
-<div class="section" id="id230">
+<div class="section" id="id227">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Non-ASCII characters in attribute values are no longer escaped on
@@ -1827,12 +1804,12 @@ lxml.objectify.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id231">
+<div class="section" id="id228">
 <h1>2.0.6 (2008-05-31)</h1>
-<div class="section" id="id232">
+<div class="section" id="id229">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id233">
+<div class="section" id="id230">
 <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>
@@ -1843,7 +1820,7 @@ 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">
+<div class="section" id="id231">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>lxml should now build without problems on MacOS-X.</li>
@@ -1852,7 +1829,7 @@ document is deleted while the subtree is still in use.</li>
 </div>
 <div class="section" id="beta2-2008-05-02">
 <h1>2.1beta2 (2008-05-02)</h1>
-<div class="section" id="id235">
+<div class="section" id="id232">
 <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>
@@ -1861,7 +1838,7 @@ attribute <tt class="docutils literal">xhtml_parser</tt> that provide XML parser
 pre-configured for the lxml.html package.</li>
 </ul>
 </div>
-<div class="section" id="id236">
+<div class="section" id="id233">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Moving a subtree from a document created in one thread into a
@@ -1872,7 +1849,7 @@ 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">
+<div class="section" id="id234">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>If the default namespace is redundantly defined with a prefix on the
@@ -1884,12 +1861,12 @@ namespace (i.e. they would end up in the wrong namespace).</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id238">
+<div class="section" id="id235">
 <h1>2.0.5 (2008-05-01)</h1>
-<div class="section" id="id239">
+<div class="section" id="id236">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id240">
+<div class="section" id="id237">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Resolving to a filename in custom resolvers didn't work.</li>
@@ -1898,13 +1875,13 @@ 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">
+<div class="section" id="id238">
 <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">
+<div class="section" id="id239">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
@@ -1914,7 +1891,7 @@ 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">
+<div class="section" id="id240">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Resolving to a filename in custom resolvers didn't work.</li>
@@ -1924,7 +1901,7 @@ let some XSLT errors pass silently.</li>
 <li>lxml.etree accepted non well-formed namespace prefix names.</li>
 </ul>
 </div>
-<div class="section" id="id244">
+<div class="section" id="id241">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Major cleanup in internal <tt class="docutils literal">moveNodeToDocument()</tt> function, which
@@ -1938,12 +1915,12 @@ context.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id245">
+<div class="section" id="id242">
 <h1>2.0.4 (2008-04-13)</h1>
-<div class="section" id="id246">
+<div class="section" id="id243">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id247">
+<div class="section" id="id244">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Hanging thread in conjunction with GTK threading.</li>
@@ -1952,13 +1929,13 @@ context.</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">
+<div class="section" id="id245">
 <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">
+<div class="section" id="id246">
 <h2>Features added</h2>
 <ul class="simple">
 <li>New event types 'comment' and 'pi' in <tt class="docutils literal">iterparse()</tt>.</li>
@@ -1972,14 +1949,14 @@ an Element.</li>
 <li><tt class="docutils literal">docinfo.URL</tt> property is writable.</li>
 </ul>
 </div>
-<div class="section" id="id250">
+<div class="section" id="id247">
 <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">
+<div class="section" id="id248">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Minor API speed-ups.</li>
@@ -2023,9 +2000,9 @@ instead.</p>
 </ul>
 </div>
 </div>
-<div class="section" id="id252">
+<div class="section" id="id249">
 <h1>2.0.3 (2008-03-26)</h1>
-<div class="section" id="id253">
+<div class="section" id="id250">
 <h2>Features added</h2>
 <ul class="simple">
 <li>soupparser.parse() allows passing keyword arguments on to
@@ -2033,7 +2010,7 @@ 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">
+<div class="section" id="id251">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.html.diff</tt> didn't treat empty tags properly (e.g.,
@@ -2046,7 +2023,7 @@ which made them turn up in text content.</li>
 correctly serialise the value to a string.</li>
 </ul>
 </div>
-<div class="section" id="id255">
+<div class="section" id="id252">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.html.ElementSoup</tt> was replaced by a new module
@@ -2062,16 +2039,16 @@ option.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id256">
+<div class="section" id="id253">
 <h1>2.0.2 (2008-02-22)</h1>
-<div class="section" id="id257">
+<div class="section" id="id254">
 <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">
+<div class="section" id="id255">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The prefix for objectify's pytype namespace was missing from the set
@@ -2081,7 +2058,7 @@ of default prefixes.</li>
 <li>Slice deletion bug fixed in objectify.</li>
 </ul>
 </div>
-<div class="section" id="id259">
+<div class="section" id="id256">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Enabled doctests for some Python modules (especially <tt class="docutils literal">lxml.html</tt>).</li>
@@ -2092,9 +2069,9 @@ of default prefixes.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id260">
+<div class="section" id="id257">
 <h1>2.0.1 (2008-02-13)</h1>
-<div class="section" id="id261">
+<div class="section" id="id258">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
@@ -2102,7 +2079,7 @@ of default prefixes.</li>
 methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
 </ul>
 </div>
-<div class="section" id="id262">
+<div class="section" id="id259">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The module <tt class="docutils literal">lxml.html.builder</tt> was duplicated as
@@ -2114,7 +2091,7 @@ ignored.</li>
 elements at the wrong position.</li>
 </ul>
 </div>
-<div class="section" id="id263">
+<div class="section" id="id260">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The generated API documentation was cleaned up and disburdened from
@@ -2129,9 +2106,9 @@ compiler options.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id264">
+<div class="section" id="id261">
 <h1>2.0 (2008-02-01)</h1>
-<div class="section" id="id265">
+<div class="section" id="id262">
 <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
@@ -2236,7 +2213,7 @@ instead of a string</li>
 <li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
 </ul>
 </div>
-<div class="section" id="id266">
+<div class="section" id="id263">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Missing import in <tt class="docutils literal">lxml.html.clean</tt>.</li>
@@ -2273,7 +2250,7 @@ evaluators now reports the first error that occurred instead of the last</li>
 <li>Thread safety in XPath evaluators</li>
 </ul>
 </div>
-<div class="section" id="id267">
+<div class="section" id="id264">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Exceptions carry only the part of the error log that is related to
@@ -2331,16 +2308,16 @@ generic <tt class="docutils literal">findOrBuildNodeNsPrefix</tt></li>
 </ul>
 </div>
 </div>
-<div class="section" id="id268">
+<div class="section" id="id265">
 <h1>1.3.6 (2007-10-29)</h1>
-<div class="section" id="id269">
+<div class="section" id="id266">
 <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">
+<div class="section" id="id267">
 <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>
@@ -2350,12 +2327,12 @@ problems that would otherwise appear in later tests.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id271">
+<div class="section" id="id268">
 <h1>1.3.5 (2007-10-22)</h1>
-<div class="section" id="id272">
+<div class="section" id="id269">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id273">
+<div class="section" id="id270">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>lxml.etree could crash when adding more than 10000 namespaces to a
@@ -2365,9 +2342,9 @@ than the root node of a tree</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id274">
+<div class="section" id="id271">
 <h1>1.3.4 (2007-08-30)</h1>
-<div class="section" id="id275">
+<div class="section" id="id272">
 <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
@@ -2381,13 +2358,13 @@ 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">
+<div class="section" id="id273">
 <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">
+<div class="section" id="id274">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>lxml now raises a TagNameWarning about tag names containing ':' instead of
@@ -2403,9 +2380,9 @@ ElementTree serialisation includes them).</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id278">
+<div class="section" id="id275">
 <h1>1.3.3 (2007-07-26)</h1>
-<div class="section" id="id279">
+<div class="section" id="id276">
 <h2>Features added</h2>
 <ul class="simple">
 <li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
@@ -2416,7 +2393,7 @@ 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">
+<div class="section" id="id277">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Parsing from Python Unicode strings failed on some platforms</li>
@@ -2426,21 +2403,21 @@ the parser you pass.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id281">
+<div class="section" id="id278">
 <h1>1.3.2 (2007-07-03)</h1>
-<div class="section" id="id282">
+<div class="section" id="id279">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id283">
+<div class="section" id="id280">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>&quot;deallocating None&quot; crash bug</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id284">
+<div class="section" id="id281">
 <h1>1.3.1 (2007-07-02)</h1>
-<div class="section" id="id285">
+<div class="section" id="id282">
 <h2>Features added</h2>
 <ul class="simple">
 <li>objectify.DataElement now supports setting values from existing data
@@ -2448,7 +2425,7 @@ 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">
+<div class="section" id="id283">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Better way to prevent crashes in Element proxy cleanup code</li>
@@ -2458,9 +2435,9 @@ elements (not just plain Python types) and reuses defined namespaces etc.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id287">
+<div class="section" id="id284">
 <h1>1.3 (2007-06-24)</h1>
-<div class="section" id="id288">
+<div class="section" id="id285">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Module <tt class="docutils literal">lxml.pyclasslookup</tt> module implements an Element class lookup
@@ -2489,7 +2466,7 @@ keys/values/items for a libxml2 node</li>
 a better handling of namespaces when moving elements between documents.</li>
 </ul>
 </div>
-<div class="section" id="id289">
+<div class="section" id="id286">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Removing Elements from a tree could make them lose their namespace
@@ -2513,16 +2490,16 @@ PIs are copied.</li>
 documents</li>
 </ul>
 </div>
-<div class="section" id="id290">
+<div class="section" id="id287">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>major restructuring in the documentation</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id291">
+<div class="section" id="id288">
 <h1>1.2.1 (2007-02-27)</h1>
-<div class="section" id="id292">
+<div class="section" id="id289">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Build fixes for MS compiler</li>
@@ -2533,9 +2510,9 @@ to access</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id293">
+<div class="section" id="id290">
 <h1>1.2 (2007-02-20)</h1>
-<div class="section" id="id294">
+<div class="section" id="id291">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Rich comparison of QName objects</li>
@@ -2551,7 +2528,7 @@ possible to pass an --rpath directly to distutils; previously this was being
 shadowed.</li>
 </ul>
 </div>
-<div class="section" id="id295">
+<div class="section" id="id292">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Element instantiation now uses locks to prevent race conditions with threads</li>
@@ -2561,7 +2538,7 @@ support in these environments</li>
 <li>Element.find*() did not accept QName objects as path</li>
 </ul>
 </div>
-<div class="section" id="id296">
+<div class="section" id="id293">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>code cleanup: redundant _NodeBase super class merged into _Element class
@@ -2570,9 +2547,9 @@ the compatibility of the public C-API</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id297">
+<div class="section" id="id294">
 <h1>1.1.2 (2006-10-30)</h1>
-<div class="section" id="id298">
+<div class="section" id="id295">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Data elements in objectify support repr(), which is now used by dump()</li>
@@ -2583,7 +2560,7 @@ tail, attributes and namespaces</li>
 <li>Simplified support for handling XSLT processing instructions</li>
 </ul>
 </div>
-<div class="section" id="id299">
+<div class="section" id="id296">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Parser resources were not freed before the next parser run</li>
@@ -2599,9 +2576,9 @@ closed/freed</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id300">
+<div class="section" id="id297">
 <h1>1.1.1 (2006-09-21)</h1>
-<div class="section" id="id301">
+<div class="section" id="id298">
 <h2>Features added</h2>
 <ul class="simple">
 <li>XSLT profiling support (<tt class="docutils literal">profile_run</tt> keyword)</li>
@@ -2609,7 +2586,7 @@ closed/freed</li>
 <li>Support custom elements for tree nodes in lxml.objectify</li>
 </ul>
 </div>
-<div class="section" id="id302">
+<div class="section" id="id299">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>lxml.objectify failed to support long data values (e.g., &quot;123L&quot;)</li>
@@ -2624,9 +2601,9 @@ elements)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id303">
+<div class="section" id="id300">
 <h1>1.1 (2006-09-13)</h1>
-<div class="section" id="id304">
+<div class="section" id="id301">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Comments and processing instructions return '&lt;!-- comment --&gt;' and
@@ -2679,7 +2656,7 @@ generated elements</li>
 element</li>
 </ul>
 </div>
-<div class="section" id="id305">
+<div class="section" id="id302">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>filenames with local 8-bit encoding were not supported</li>
@@ -2703,30 +2680,30 @@ change from 1.0.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id306">
+<div class="section" id="id303">
 <h1>1.0.4 (2006-09-09)</h1>
-<div class="section" id="id307">
+<div class="section" id="id304">
 <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">
+<div class="section" id="id305">
 <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">
+<div class="section" id="id306">
 <h1>1.0.3 (2006-08-08)</h1>
-<div class="section" id="id310">
+<div class="section" id="id307">
 <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">
+<div class="section" id="id308">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when mixing elements from XSLT results into other trees</li>
@@ -2736,16 +2713,16 @@ change from 1.0.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id312">
+<div class="section" id="id309">
 <h1>1.0.2 (2006-06-27)</h1>
-<div class="section" id="id313">
+<div class="section" id="id310">
 <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">
+<div class="section" id="id311">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Rare exceptions in Python list functions were not handled</li>
@@ -2757,15 +2734,15 @@ cases</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id315">
+<div class="section" id="id312">
 <h1>1.0.1 (2006-06-09)</h1>
-<div class="section" id="id316">
+<div class="section" id="id313">
 <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">
+<div class="section" id="id314">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Document deallocation could crash in certain garbage collection scenarios</li>
@@ -2781,9 +2758,9 @@ stylesheet and crash on repeated calls</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id318">
+<div class="section" id="id315">
 <h1>1.0 (2006-06-01)</h1>
-<div class="section" id="id319">
+<div class="section" id="id316">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Element.getiterator() and the findall() methods support finding arbitrary
@@ -2830,7 +2807,7 @@ enabled by default, can be switched off with 'regexp=False' keyword argument</li
 implementation of libxml2 (as opposed to ET compatible XMLID)</li>
 </ul>
 </div>
-<div class="section" id="id320">
+<div class="section" id="id317">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory leak in Element.__setitem__</li>
@@ -2872,9 +2849,9 @@ ElementTree root node as reference point</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id321">
+<div class="section" id="id318">
 <h1>0.9.2 (2006-05-10)</h1>
-<div class="section" id="id322">
+<div class="section" id="id319">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Speedup for Element.makeelement(): the new element reuses the original
@@ -2884,7 +2861,7 @@ libxml2 document instead of creating a new empty one</li>
 <li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
 </ul>
 </div>
-<div class="section" id="id323">
+<div class="section" id="id320">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>str(xslt_result) was broken for XSLT output other than UTF-8</li>
@@ -2894,9 +2871,9 @@ libxml2 document instead of creating a new empty one</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id324">
+<div class="section" id="id321">
 <h1>0.9.1 (2006-03-30)</h1>
-<div class="section" id="id325">
+<div class="section" id="id322">
 <h2>Features added</h2>
 <ul class="simple">
 <li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
@@ -2908,7 +2885,7 @@ argument)</li>
 <li>Minor API performance improvements</li>
 </ul>
 </div>
-<div class="section" id="id326">
+<div class="section" id="id323">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory deallocation bug when using XSLT output method &quot;html&quot;</li>
@@ -2917,9 +2894,9 @@ argument)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id327">
+<div class="section" id="id324">
 <h1>0.9 (2006-03-20)</h1>
-<div class="section" id="id328">
+<div class="section" id="id325">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Error logging API for libxml2 error messages</li>
@@ -2944,7 +2921,7 @@ parent element.</li>
 doc/sax.txt for more information.</li>
 </ul>
 </div>
-<div class="section" id="id329">
+<div class="section" id="id326">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Segfaults and memory leaks in various API functions of Element</li>
@@ -2956,9 +2933,9 @@ cannot support this due to libxslt deficiencies)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id330">
+<div class="section" id="id327">
 <h1>0.8 (2005-11-03)</h1>
-<div class="section" id="id331">
+<div class="section" id="id328">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for copy.deepcopy() on elements. copy.copy() works also, but
@@ -2972,7 +2949,7 @@ supported and parsing of gzipped XML files works.</li>
 SubElement.</li>
 </ul>
 </div>
-<div class="section" id="id332">
+<div class="section" id="id329">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Use xslt-config instead of xml2-config to find out libxml2
@@ -2995,9 +2972,9 @@ fixed.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id333">
+<div class="section" id="id330">
 <h1>0.7 (2005-06-15)</h1>
-<div class="section" id="id334">
+<div class="section" id="id331">
 <h2>Features added</h2>
 <ul class="simple">
 <li>parameters (XPath expressions) can be passed to XSLT using keyword
@@ -3027,7 +3004,7 @@ prefix declarations on these elements and these prefixes will show up
 in XML serialization.</li>
 </ul>
 </div>
-<div class="section" id="id335">
+<div class="section" id="id332">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Killed yet another memory management related bug: trees created
@@ -3048,9 +3025,9 @@ test both serializing to StringIO as well as serializing to a real file.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id336">
+<div class="section" id="id333">
 <h1>0.6 (2005-05-14)</h1>
-<div class="section" id="id337">
+<div class="section" id="id334">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Changed setup.py so that library_dirs is also guessed. This should
@@ -3059,7 +3036,7 @@ 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">
+<div class="section" id="id335">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Do the right thing when handling namespaced attributes.</li>
@@ -3068,7 +3045,7 @@ had very nasty side-effects before this fix, sorry!</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id339">
+<div class="section" id="id336">
 <h1>0.5.1 (2005-04-09)</h1>
 <ul class="simple">
 <li>Python 2.2 compatibility fixes.</li>
@@ -3076,14 +3053,14 @@ had very nasty side-effects before this fix, sorry!</li>
 input wasn't properly being UTF-8 encoded.</li>
 </ul>
 </div>
-<div class="section" id="id340">
+<div class="section" id="id337">
 <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.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 3cd4cc1..6c0158f 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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>
@@ -199,7 +199,7 @@ enough to replace a shallow copy in your case.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 158723e..ed366b4 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="credits">
-<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="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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></div><h1 class="title">Credits</h1>
 
 <div class="section" id="main-contributors">
 <h1>Main contributors</h1>
@@ -88,7 +88,7 @@ Holger Krekel for originally hosting lxml on codespeak.net</li>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 3338c6a..89b318e 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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
@@ -108,7 +108,7 @@ namespace URIs: the <tt class="docutils literal">CSSSelector</tt> class accepts
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 6e0d0b5..06a793a 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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
@@ -459,7 +459,7 @@ subclasses for elements of this namespace:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index ac7536a..cfc87ea 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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
@@ -203,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-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 2752906..eaed87c 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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>
@@ -240,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 a
+<p>The optional second argument to <tt class="docutils literal">Extension</tt> can either be 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
@@ -521,7 +521,7 @@ will work:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
diff --git a/doc/html/funding.html b/doc/html/funding.html
new file mode 100644 (file)
index 0000000..d30c9a8
--- /dev/null
@@ -0,0 +1,167 @@
+<!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>Projects for Crowd Funding</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+<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="projects-for-crowd-funding">
+<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><ul class="menu current" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></div><h1 class="title">Projects for Crowd Funding</h1>
+
+<p>This is a list of project proposals that are currently open for <a class="reference external" href="https://en.wikipedia.org/wiki/Crowd_funding">crowd
+funding</a>.  If you have other ideas that are not listed here yet,
+please speak up on the <a class="reference external" href="http://lxml.de/mailinglist/">mailing list</a>.  To get more information about
+the projects below, either ask on the mailing list or contact <a class="reference external" href="http://consulting.behnel.de/">Stefan
+Behnel</a>.</p>
+<p>Each proposal below is preceded by a <strong>project name</strong> that you can use
+as a project reference when sending money via PayPal.  See the <a class="reference external" href="http://lxml.de/">home
+page</a> on how to make payments in general.  By
+assigning a valid project name to your payment, instead of making a
+normal donation, you are dedicating it explicitly for that proposal.
+Note that invalid project names will be ignored and the payment will
+be considered a normal donation to the lxml project in that case.  You
+can also name more than one project, separated by commas, in order to
+reassign your payment if your favourite project turns out to have
+already been completed.</p>
+<p>Once a substantial part of the money that is required for a project
+implementation has been collected, work on this project will be
+started as soon as possible.  The status of a running project will be
+communicated through the lxml project home page and the lxml mailing
+list.</p>
+<p>In case the sum of the project specific payments, summed up in the
+order of their reception, overshoots the final price of the
+implementation of that proposal, the <strong>overpayments</strong> will normally be
+kept as a donation for the general development on lxml.  If, instead,
+you really want to restrict your payment to the named project and not
+open it for general development of the lxml library, you can request a
+refund in the case of overpayments by adding the word "refund" to your
+payment message.  Note that we will not refund any fees or charges
+that PayPal takes for either your original payment or our refunding
+payment.</p>
+<div class="section" id="really-simple-projects">
+<h1>Really simple projects</h1>
+<dl class="docutils">
+<dt>nsassign</dt>
+<dd><ul class="first last simple">
+<li>status: open</li>
+<li>what: add 'nsmap' parameter to cleanup_namespaces() to make it use
+a specific prefix-namespace mapping, i.e. reassign specific
+prefixes to namespace URIs</li>
+</ul>
+</dd>
+</dl>
+</div>
+<div class="section" id="projects-taking-just-a-few-days">
+<h1>Projects taking just a few days</h1>
+<dl class="docutils">
+<dt>userdtd</dt>
+<dd><ul class="first last simple">
+<li>status: open</li>
+<li>what: parse-time validation against a user provided DTD</li>
+<li>currently only works for XML Schema</li>
+<li>how: register</li>
+</ul>
+</dd>
+<dt>zlibmem</dt>
+<dd><ul class="first last simple">
+<li>status: open</li>
+<li>what: zlib-based parsing/serialising of compressed in-memory data</li>
+<li>how: requires a libxml2 I/O OutputBuffer with appropriate I/O
+functions that call into the zlib compression routines</li>
+</ul>
+</dd>
+<dt>xmlgen</dt>
+<dd><ul class="first last simple">
+<li>status: open</li>
+<li>what: generating XML using the <tt class="docutils literal">with</tt> statement</li>
+<li>how: see <a class="reference external" href="http://comments.gmane.org/gmane.comp.python.general/579950?set_lines=100000">http://comments.gmane.org/gmane.comp.python.general/579950?set_lines=100000</a></li>
+</ul>
+</dd>
+<dt>htmlenc</dt>
+<dd><ul class="first last simple">
+<li>status: open</li>
+<li>what: provide an HTMLParser wrapper that handles broken encodings
+in broken HTML better, e.g. using BeautifulSoup's "unicode dammit"
+charset analyser</li>
+</ul>
+</dd>
+</dl>
+</div>
+<div class="section" id="projects-taking-more-than-a-week">
+<h1>Projects taking more than a week</h1>
+<dl class="docutils">
+<dt>lzma</dt>
+<dd><ul class="first last simple">
+<li>status: open</li>
+<li>what: lzma-based parsing/serialising of compressed in-memory and file data</li>
+<li>how: requires a libxml2 I/O OutputBuffer with appropriate I/O
+functions that call into the lzma compression routines</li>
+<li>advantage over zlib: probably faster and better compression</li>
+<li>maybe embed the lzma C sources in the distro
+<a class="reference external" href="http://www.7-zip.org/sdk.html">http://www.7-zip.org/sdk.html</a></li>
+</ul>
+</dd>
+</dl>
+</div>
+<div class="section" id="projects-in-pre-design-phase">
+<h1>Projects in pre-design phase</h1>
+<p>Here are some project proposals that cannot currently be funded
+directly due to a lack of design consideration, so no realistic
+estimate about the amount of work they require can be made.  If you
+are interested in any of these projects, please contact either the
+lxml mailing list of Stefan Behnel.</p>
+<p><strong>Note</strong>: If you dedicate payments to the lxml project to any of the
+following projects in their current state, the dedication will be
+ignored and the payment will be considered a general donation to the
+lxml project.</p>
+<dl class="docutils">
+<dt>rnc</dt>
+<dd><ul class="first last simple">
+<li>status: open</li>
+<li>what: somehow integrate RelaxNG compact notation (rnc versus rng)</li>
+<li>currently not supported by libxml2 (patch exists)</li>
+<li>how: either integrate the libxml2 RNC patch or rewrite the mapping
+in Python</li>
+</ul>
+</dd>
+<dt>iterparse-rewrite</dt>
+<dd><ul class="first last simple">
+<li>status: open</li>
+<li>what: reimplement iterparse() using the libxml2 xmlReader API</li>
+<li>maybe: let iterparse() accept a parser as argument instead of
+being one</li>
+<li>Advantage: the implementation can be made safer than the current
+SAX implementation, as the parser would no longer interact with
+the tree that is user modifiable at the Python-level.</li>
+<li>Disadvantage: the tree has to be built manually. In the current
+SAX based implementation, libxml2 does it for us.</li>
+</ul>
+</dd>
+</dl>
+</div>
+</div>
+<div class="footer">
+<hr class="footer" />
+Generated on: 2016-05-05.
+
+</div>
+</body>
+</html>
\ No newline at end of file
index b859576..2961a2c 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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
@@ -63,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
@@ -90,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-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index cbecd70..84406d1 100644 (file)
@@ -26,7 +26,7 @@ function hide_menu() {
 </script><meta content="width=device-width, initial-scale=1" name="viewport" /></head>
 <body onclick="hide_menu()">
 <div class="document" id="lxml">
-<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="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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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>
@@ -67,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.1.pdf">PDF
+<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-3.6.0.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">
@@ -130,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.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>
+<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>
 are listed below.</p>
 <p>Please take a look at the
 <a class="reference external" href="installation.html">installation instructions</a> !</p>
@@ -139,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.1.pdf">PDF documentation</a>.</p>
+<a class="reference external" href="lxmldoc-3.6.0.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
@@ -192,7 +192,6 @@ 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>
@@ -224,7 +223,7 @@ donation is non-refundable.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index b1aec4e..cf29ba0 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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="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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></div><h1 class="title">Installing lxml</h1>
 
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
@@ -204,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 with them out of the
+versions than they used to be, so lxml should work them 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
@@ -215,7 +215,7 @@ read the
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index ec92e6b..f8c2f6e 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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="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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></div><h1 class="title">Why lxml?</h1>
 
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
@@ -82,7 +82,7 @@ having to learn new things -- XML is complicated enough.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 119c533..4d03c58 100644 (file)
@@ -27,7 +27,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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" />
@@ -197,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 source code.</dd>
+start reading lxml's soure code.</dd>
 <dt>parsertarget.pxi</dt>
 <dd>An ElementTree compatible parser target implementation based on
 the SAX2 interface of libxml2.</dd>
@@ -286,7 +286,7 @@ implemented in pure Python.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index f828e1f..4f18033 100644 (file)
@@ -25,7 +25,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></div><h1 class="title">lxml.html</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -96,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>
@@ -689,7 +689,7 @@ microformat.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index b63ddb4..d4bda16 100644 (file)
@@ -25,7 +25,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></div><h1 class="title">lxml.objectify</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -1165,7 +1165,7 @@ support any XPath expression.</li>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index d9b0e0e..08f13cd 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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
@@ -867,7 +867,7 @@ with UTF-8 is also considerably faster in most cases.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 34ef345..5f2239b 100644 (file)
@@ -27,7 +27,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></div><h1 class="title">Benchmarks and Speed</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -630,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>
@@ -798,7 +798,7 @@ random.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 01b2e00..9ed6d79 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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="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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></div><h1 class="title">Document loading and URL resolving</h1>
 
 <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
@@ -250,7 +250,7 @@ documents or raises exceptions if access is denied.</li>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 4ab21dd..8cc7d3e 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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
@@ -109,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 cannot generate SAX events from a DOM tree.</p>
+DOM implementation connot 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>
@@ -124,7 +124,7 @@ DOM implementation cannot generate SAX events from a DOM tree.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 606f889..f213f8c 100644 (file)
@@ -8,5 +8,5 @@
   </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>
+  <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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></ul><li><a href="http://lxml.de/files/">Download files</a></li></div></div></body>
 </html>
\ No newline at end of file
index f9d653e..bdbc0ce 100644 (file)
@@ -27,7 +27,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></div><h1 class="title">The lxml.etree Tutorial</h1>
 <table class="docinfo" frame="void" rules="none">
 <col class="docinfo-name" />
 <col class="docinfo-content" />
@@ -454,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="c"># or 'str' in Python 3</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">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>
@@ -1179,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-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 4a7f9ed..8abd17a 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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
@@ -66,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 to activate DTD loading is with the
+<p>The third way 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>
@@ -556,7 +556,7 @@ reporting during validation.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 9fc3990..292d532 100644 (file)
@@ -24,7 +24,7 @@ function hide_menu() {
 </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" 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>
+<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><ul class="menu foreign" id="funding-menu"><li class="menu title"><a href="funding.html">Projects for Crowd Funding</a><ul class="submenu"><li class="menu item"><a href="funding.html#really-simple-projects">Really simple projects</a></li><li class="menu item"><a href="funding.html#projects-taking-just-a-few-days">Projects taking just a few days</a></li><li class="menu item"><a href="funding.html#projects-taking-more-than-a-week">Projects taking more than a week</a></li><li class="menu item"><a href="funding.html#projects-in-pre-design-phase">Projects in pre-design phase</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></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>
@@ -605,7 +605,7 @@ If you want to free it from memory, just do:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2016-07-24.
+Generated on: 2016-05-05.
 
 </div>
 </body>
index 63fe6d7..b4d159d 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.1`_, released 2016-07-24
-(`changes for 3.6.1`_).  `Older versions <#old-versions>`_
+The latest version is `lxml 3.6.2`_, released 2016-08-18
+(`changes for 3.6.2`_).  `Older versions <#old-versions>`_
 are listed below.
 
 Please take a look at the
@@ -245,6 +245,8 @@ and the `latest in-development version <http://lxml.de/dev/>`_.
 
 .. _`PDF documentation`: lxmldoc-3.6.1.pdf
 
+* `lxml 3.6.2`_, released 2016-08-18 (`changes for 3.6.2`_)
+
 * `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`_)
@@ -265,6 +267,7 @@ and the `latest in-development version <http://lxml.de/dev/>`_.
 
 * `older releases <http://lxml.de/3.4/#old-versions>`_
 
+.. _`lxml 3.6.2`: /files/lxml-3.6.2.tgz
 .. _`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
@@ -275,6 +278,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.2`: /changes-3.6.2.html
 .. _`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
diff --git a/doc/pdf/pubkey.asc b/doc/pdf/pubkey.asc
deleted file mode 100644 (file)
index f72804c..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.2 (GNU/Linux)
-
-mQGiBEQf3JQRBACciSqxoX0q3VurkRENVVtG/pVqtFh/d2CohbVJlLCrO4s7nnPj
-CTfZFt6tmykZjsLJl24XpEJt0O/C0jLcaBqvXVgVvRXHz4DjEYYuQF4LPthhI4MA
-4T7ExptX4lU5g3BVJ46vPU8uRBbbxarBRas9rYewgnrYKWpZZCa7yMq+9wCgnyyR
-Si4E3viLwi77jda135nA6vcD/iqu8zIl9/dFuUcOvxJrhrm+UdY72puZ1TVczSAH
-GOqMjrKkfyHlaJh/ZzWENpTZIfOdVhy7Chvva18vH4Wz7jKj5UeIpRrBvjAD28r3
-Y3W5bfsnpPkvDOyU1vqBsw4q+/250GXEX0JqV2Rbf5yLVgEZPdGrswO460dr4UVS
-8RS0BACYTmyrz57AugHc5tRkqNw6o7ux2deOT0c3AbUcOWtOocGumCsUf+M1nOrc
-VWkeBWTv4HIIiecWYY/KwIemTthQGjxywaZDxOlBT0BOL/+vfYTq/plZULXr+g90
-rSe82+kLl9N5onkBDJKeDIcJDzRoxIRPV1i0Om/5JBI4jmUnv7QnU3RlZmFuIEJl
-aG5lbCA8c2NvZGVyQHVzZXJzLmJlcmxpb3MuZGU+iF8EExECACAFAkQiqKYCGwMG
-CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRANPVNpCNOgHi+2AJ0a0JH8iP3RqrOL
-JefvHz1dSl3MxACYo7Ma6CeIgsGnyaSSdNOmNVXn+IhGBBARAgAGBQJEIqk0AAoJ
-ELO5mMzzmgZbmCcAoKZ2En1IlsxBpaPPxgWYrUOWfc6hAKCBWODMMOYptCBkSrjg
-m3gsrjHgYbQsU3RlZmFuIEJlaG5lbCA8c2NvZGVyQHVzZXJzLnNvdXJjZWZvcmdl
-Lm5ldD6IYAQTEQIAIAUCRB/clAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ
-EA09U2kI06Aen2YAn0hvuDs+Gslq9vPRFFbsFNJI40PmAJ0chjiiEy0xV5C+n6YX
-XFuldRDILYhGBBARAgAGBQJEIp4AAAoJELO5mMzzmgZbgKQAn3pWrmFdj8YaEyuR
-tEjKVZJDQ6ZVAJ0Y1igwADT40BPra+G/xiLa3YbCrrkCDQREH9ynEAgAiR4/0r0d
-doViNECfSLClllu5K0Bo1SEiMtvVNC3sJYgVzBddD8Xn8UAdjyAgmaL5FC2FsNQu
-RxxKkNlHNYCq8ZSWtZaL2MQ+SyMUyHv6VXVCGuSW0COpzbx58u+SZpjyESJ1kaZc
-73SaIw6kv/dVQHjurwmlo1lg3dLZ3PG08WGCYUMqkkv2K+J7+puzE2Cjo31gTq4s
-LYDCV26wjVQ6BqT2EcHQhVEjh0xq5ugc908cr/2FQAKkTifEbF+OVBGWiFMGgri+
-6+G54/BV/RakpvNCFYBiZHn/M9mQaWt7XoTmnEQ1ldq5KNlRhkqnQRF/NK5VpGcQ
-29As28aqpZTECwADBgf/WlRvBRI1Q1eIv2falEv7C6sOxqc3kr5z1uUBTRG5v9t6
-ff9k/J4oC6cnQx00GK3ZR8ija6bl8zwu+0m0M3rW49Krb1rsiT7r4ahOZ7p9RRro
-oG3NbUJYgMG10D1nxpaioYqa/m+PpILJM0wfYZZEuX0xkZcOB24yb+J7EIcGR09T
-mMd5sXtdTU+w/p7Xi2cP61uQ8qixyHBH8E06qgW2JtVFV9rGn7CNUOvkNaUBRnY5
-QxhdkvKJRx7voOLYWZFUBIWgto+6vmTgKmc2Ho6qddzME9UgwUNcknRgm0cf6Cxr
-6zPtxZl8a6KemjQcK7kARSmMNCDkqp/Pohe519A5vYhJBBgRAgAJBQJEH9ynAhsM
-AAoJEA09U2kI06Aesv4AnjiVQVLzqnNS/64vvMMP1UARY3HtAJ90YxNGhRNIhWYL
-UU16oJlGD/9M1Q==
-=gWy2
------END PGP PUBLIC KEY BLOCK-----
diff --git a/doc/sitemap.txt b/doc/sitemap.txt
new file mode 100644 (file)
index 0000000..7e7bea2
--- /dev/null
@@ -0,0 +1,38 @@
+Sitemap
+========
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   main
+   intro
+   api
+   ../INSTALL
+   performance
+   compatibility
+   FAQ
+
+   tutorial
+   API reference <api/>
+   parsing
+   validation
+   xpathxslt
+   objectify
+   lxmlhtml
+   cssselect
+   elementsoup
+   html5parser
+
+   resolvers
+   extensions
+   element_classes
+   sax
+   capi
+
+   build
+   lxml-source-howto
+   ../CREDITS
+
+   self
diff --git a/doc/sphinx/FAQ.html b/doc/sphinx/FAQ.html
new file mode 100644 (file)
index 0000000..d34b4cb
--- /dev/null
@@ -0,0 +1,938 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta content="Frequently Asked Questions about lxml (FAQ)" name="description" />
+<meta content="lxml, lxml.etree, FAQ, frequently asked questions" name="keywords" />
+
+    <title>lxml FAQ - Frequently Asked Questions &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="lxml-faq-frequently-asked-questions">
+<h1><a class="toc-backref" href="#id2">lxml FAQ - Frequently Asked Questions</a><a class="headerlink" href="#lxml-faq-frequently-asked-questions" title="Permalink to this headline">¶</a></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>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#lxml-faq-frequently-asked-questions" id="id2">lxml FAQ - Frequently Asked Questions</a><ul>
+<li><a class="reference internal" href="#general-questions" id="id3">General Questions</a><ul>
+<li><a class="reference internal" href="#is-there-a-tutorial" id="id4">Is there a tutorial?</a></li>
+<li><a class="reference internal" href="#where-can-i-find-more-documentation-about-lxml" id="id5">Where can I find more documentation about lxml?</a></li>
+<li><a class="reference internal" href="#what-standards-does-lxml-implement" id="id6">What standards does lxml implement?</a></li>
+<li><a class="reference internal" href="#who-uses-lxml" id="id7">Who uses lxml?</a></li>
+<li><a class="reference internal" href="#what-is-the-difference-between-lxml-etree-and-lxml-objectify" id="id8">What is the difference between lxml.etree and lxml.objectify?</a></li>
+<li><a class="reference internal" href="#how-can-i-make-my-application-run-faster" id="id9">How can I make my application run faster?</a></li>
+<li><a class="reference internal" href="#what-about-that-trailing-text-on-serialised-elements" id="id10">What about that trailing text on serialised Elements?</a></li>
+<li><a class="reference internal" href="#how-can-i-find-out-if-an-element-is-a-comment-or-pi" id="id11">How can I find out if an Element is a comment or PI?</a></li>
+<li><a class="reference internal" href="#how-can-i-map-an-xml-tree-into-a-dict-of-dicts" id="id12">How can I map an XML tree into a dict of dicts?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#installation" id="id13">Installation</a><ul>
+<li><a class="reference internal" href="#which-version-of-libxml2-and-libxslt-should-i-use-or-require" id="id14">Which version of libxml2 and libxslt should I use or require?</a></li>
+<li><a class="reference internal" href="#where-are-the-binary-builds" id="id15">Where are the binary builds?</a></li>
+<li><a class="reference internal" href="#why-do-i-get-errors-about-missing-ucs4-symbols-when-installing-lxml" id="id16">Why do I get errors about missing UCS4 symbols when installing lxml?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#contributing" id="id17">Contributing</a><ul>
+<li><a class="reference internal" href="#why-is-lxml-not-written-in-python" id="id18">Why is lxml not written in Python?</a></li>
+<li><a class="reference internal" href="#how-can-i-contribute" id="id19">How can I contribute?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#bugs" id="id20">Bugs</a><ul>
+<li><a class="reference internal" href="#my-application-crashes" id="id21">My application crashes!</a></li>
+<li><a class="reference internal" href="#my-application-crashes-on-macos-x" id="id22">My application crashes on MacOS-X!</a></li>
+<li><a class="reference internal" href="#i-think-i-have-found-a-bug-in-lxml-what-should-i-do" id="id23">I think I have found a bug in lxml. What should I do?</a></li>
+<li><a class="reference internal" href="#how-do-i-know-a-bug-is-really-in-lxml-and-not-in-libxml2" id="id24">How do I know a bug is really in lxml and not in libxml2?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#id1" id="id25">Threading</a><ul>
+<li><a class="reference internal" href="#can-i-use-threads-to-concurrently-access-the-lxml-api" id="id26">Can I use threads to concurrently access the lxml API?</a></li>
+<li><a class="reference internal" href="#does-my-program-run-faster-if-i-use-threads" id="id27">Does my program run faster if I use threads?</a></li>
+<li><a class="reference internal" href="#would-my-single-threaded-program-run-faster-if-i-turned-off-threading" id="id28">Would my single-threaded program run faster if I turned off threading?</a></li>
+<li><a class="reference internal" href="#why-can-t-i-reuse-xslt-stylesheets-in-other-threads" id="id29">Why can&#8217;t I reuse XSLT stylesheets in other threads?</a></li>
+<li><a class="reference internal" href="#my-program-crashes-when-run-with-mod-python-pyro-zope-plone" id="id30">My program crashes when run with mod_python/Pyro/Zope/Plone/...</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#parsing-and-serialisation" id="id31">Parsing and Serialisation</a><ul>
+<li><a class="reference internal" href="#why-doesn-t-the-pretty-print-option-reformat-my-xml-output" id="id32">Why doesn&#8217;t the <tt class="docutils literal"><span class="pre">pretty_print</span></tt> option reformat my XML output?</a></li>
+<li><a class="reference internal" href="#why-can-t-lxml-parse-my-xml-from-unicode-strings" id="id33">Why can&#8217;t lxml parse my XML from unicode strings?</a></li>
+<li><a class="reference internal" href="#what-is-the-difference-between-str-xslt-doc-and-xslt-doc-write" id="id34">What is the difference between str(xslt(doc)) and xslt(doc).write() ?</a></li>
+<li><a class="reference internal" href="#why-can-t-i-just-delete-parents-or-clear-the-root-node-in-iterparse" id="id35">Why can&#8217;t I just delete parents or clear the root node in iterparse()?</a></li>
+<li><a class="reference internal" href="#how-do-i-output-null-characters-in-xml-text" id="id36">How do I output null characters in XML text?</a></li>
+<li><a class="reference internal" href="#is-lxml-vulnerable-to-xml-bombs" id="id37">Is lxml vulnerable to XML bombs?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#xpath-and-document-traversal" id="id38">XPath and Document Traversal</a><ul>
+<li><a class="reference internal" href="#what-are-the-findall-and-xpath-methods-on-element-tree" id="id39">What are the <tt class="docutils literal"><span class="pre">findall()</span></tt> and <tt class="docutils literal"><span class="pre">xpath()</span></tt> methods on Element(Tree)?</a></li>
+<li><a class="reference internal" href="#why-doesn-t-findall-support-full-xpath-expressions" id="id40">Why doesn&#8217;t <tt class="docutils literal"><span class="pre">findall()</span></tt> support full XPath expressions?</a></li>
+<li><a class="reference internal" href="#how-can-i-find-out-which-namespace-prefixes-are-used-in-a-document" id="id41">How can I find out which namespace prefixes are used in a document?</a></li>
+<li><a class="reference internal" href="#how-can-i-specify-a-default-namespace-for-xpath-expressions" id="id42">How can I specify a default namespace for XPath expressions?</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="general-questions">
+<h2><a class="toc-backref" href="#id3">General Questions</a><a class="headerlink" href="#general-questions" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="is-there-a-tutorial">
+<h3><a class="toc-backref" href="#id4">Is there a tutorial?</a><a class="headerlink" href="#is-there-a-tutorial" title="Permalink to this headline">¶</a></h3>
+<p>Read the <a class="reference external" href="tutorial.html">lxml.etree Tutorial</a>.  While this is still work in progress
+(just as any good documentation), it provides an overview of the most
+important concepts in <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>.  If you want to help out,
+improving the tutorial is a very good place to start.</p>
+<p>There is also a <a class="reference external" href="http://effbot.org/zone/element.htm">tutorial for ElementTree</a> which works for
+<tt class="docutils literal"><span class="pre">lxml.etree</span></tt>.  The documentation of the <a class="reference external" href="api.html">extended etree API</a> also
+contains many examples for <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>.  Fredrik Lundh&#8217;s <a class="reference external" href="http://effbot.org/zone/element-lib.htm">element
+library</a> contains a lot of nice recipes that show how to solve common
+tasks in ElementTree and lxml.etree.  To learn using
+<tt class="docutils literal"><span class="pre">lxml.objectify</span></tt>, read the <a class="reference external" href="objectify.html">objectify documentation</a>.</p>
+<p>John Shipman has written another tutorial called <a class="reference external" href="http://www.nmt.edu/tcc/help/pubs/pylxml/">Python XML
+processing with lxml</a> that contains lots of examples.  Liza Daly
+wrote a nice article about high-performance aspects when <a class="reference external" href="http://www.ibm.com/developerworks/xml/library/x-hiperfparse/">parsing
+large files with lxml</a>.</p>
+</div>
+<div class="section" id="where-can-i-find-more-documentation-about-lxml">
+<h3><a class="toc-backref" href="#id5">Where can I find more documentation about lxml?</a><a class="headerlink" href="#where-can-i-find-more-documentation-about-lxml" title="Permalink to this headline">¶</a></h3>
+<p>There is a lot of documentation on the web and also in the Python
+standard library documentation, as lxml implements the well-known
+<a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree API</a> and tries to follow its documentation as closely as
+possible.  The recipes in Fredrik Lundh&#8217;s <a class="reference external" href="http://effbot.org/zone/element-lib.htm">element library</a> are
+generally worth taking a look at.  There are a couple of issues where
+lxml cannot keep up compatibility.  They are described in the
+<a class="reference external" href="compatibility.html">compatibility</a> documentation.</p>
+<p>The lxml specific extensions to the API are described by individual
+files in the <tt class="docutils literal"><span class="pre">doc</span></tt> directory of the source distribution and on <a class="reference external" href="http://codespeak.net/lxml/#documentation">the
+web page</a>.</p>
+<p>The <a class="reference external" href="api/index.html">generated API documentation</a> is a comprehensive API reference
+for the lxml package.</p>
+</div>
+<div class="section" id="what-standards-does-lxml-implement">
+<h3><a class="toc-backref" href="#id6">What standards does lxml implement?</a><a class="headerlink" href="#what-standards-does-lxml-implement" title="Permalink to this headline">¶</a></h3>
+<p>The compliance to XML Standards depends on the support in libxml2 and libxslt.
+Here is a quote from <a class="reference external" href="http://xmlsoft.org/">http://xmlsoft.org/</a>:</p>
+<blockquote>
+<div>In most cases libxml2 tries to implement the specifications in a relatively
+strictly compliant way. As of release 2.4.16, libxml2 passed all 1800+ tests
+from the OASIS XML Tests Suite.</div></blockquote>
+<p>lxml currently supports libxml2 2.6.20 or later, which has even better
+support for various XML standards.  The important ones are:</p>
+<ul class="simple">
+<li>XML 1.0</li>
+<li>HTML 4</li>
+<li>XML namespaces</li>
+<li>XML Schema 1.0</li>
+<li>XPath 1.0</li>
+<li>XInclude 1.0</li>
+<li>XSLT 1.0</li>
+<li>EXSLT</li>
+<li>XML catalogs</li>
+<li>canonical XML</li>
+<li>RelaxNG</li>
+<li>xml:id</li>
+<li>xml:base</li>
+</ul>
+<p>Support for XML Schema is currently not 100% complete in libxml2, but
+is definitely very close to compliance.  Schematron is supported in
+two ways, the best being the original ISO Schematron reference
+implementation via XSLT.  libxml2 also supports loading documents
+through HTTP and FTP.</p>
+</div>
+<div class="section" id="who-uses-lxml">
+<h3><a class="toc-backref" href="#id7">Who uses lxml?</a><a class="headerlink" href="#who-uses-lxml" title="Permalink to this headline">¶</a></h3>
+<p>As an XML library, lxml is often used under the hood of in-house
+server applications, such as web servers or applications that
+facilitate some kind of document management.  Many people who deploy
+<a class="reference external" href="http://www.zope.org/">Zope</a> or <a class="reference external" href="http://www.plone.org/">Plone</a> use it together with lxml.  Therefore, it is hard to
+get an idea of who uses it, and the following list of &#8216;users and
+projects we know of&#8217; is very far from a complete list of lxml&#8217;s users.</p>
+<p>Also note that the compatibility to the ElementTree library does not
+require projects to set a hard dependency on lxml - as long as they do
+not take advantage of lxml&#8217;s enhanced feature set.</p>
+<ul class="simple">
+<li><a class="reference external" href="http://code.google.com/p/cssutils/source/browse/trunk/examples/style.py?r=917">cssutils</a>, a CSS parser and toolkit, can be used with <tt class="docutils literal"><span class="pre">lxml.cssselect</span></tt></li>
+<li><a class="reference external" href="http://www.openplans.org/projects/deliverance/project-home">Deliverance</a>, a content theming tool</li>
+<li><a class="reference external" href="http://www.enfoldsystems.com/Products/Proxy/4">Enfold Proxy 4</a>, a web server accelerator with on-the-fly XSLT processing</li>
+<li><a class="reference external" href="http://lists.wald.intevation.org/pipermail/inteproxy-devel/2007-February/000000.html">Inteproxy</a>, 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="http://permalink.gmane.org/gmane.comp.python.lxml.devel/3250">OpenXMLlib</a>, a library for handling OpenXML document meta data</li>
+<li><a class="reference external" href="http://pypi.python.org/pypi/pycoon">Pycoon</a>, a WSGI web development framework based on XML pipelines</li>
+<li><a class="reference external" href="http://pypi.python.org/pypi/pyquery">PyQuery</a>, a query framework for XML/HTML, similar to jQuery for JavaScript</li>
+<li><a class="reference external" href="http://github.com/mikemaccana/python-docx">python-docx</a>, a package for handling Microsoft&#8217;s Word OpenXML format</li>
+<li><a class="reference external" href="http://beta.rambler.ru/srch?query=python+lxml&amp;searchtype=web">Rambler</a>, a meta search engine that aggregates different data sources</li>
+<li><a class="reference external" href="http://pypi.python.org/pypi/rdfadict">rdfadict</a>, an RDFa parser with a simple dictionary-like interface.</li>
+<li><a class="reference external" href="http://pypi.python.org/pypi/xupdate-processor">xupdate-processor</a>, an XUpdate implementation for lxml.etree</li>
+</ul>
+<p>Zope3 and some of its extensions have good support for lxml:</p>
+<ul class="simple">
+<li><a class="reference external" href="http://pypi.python.org/pypi/gocept.lxml">gocept.lxml</a>, Zope3 interface bindings for lxml</li>
+<li><a class="reference external" href="http://pypi.python.org/pypi/z3c.rml">z3c.rml</a>, an implementation of ReportLab&#8217;s RML format</li>
+<li><a class="reference external" href="http://pypi.python.org/pypi/zif.sedna">zif.sedna</a>, an XQuery based interface to the Sedna OpenSource XML database</li>
+</ul>
+<p>And don&#8217;t miss the quotes by our generally <a class="reference external" href="http://thread.gmane.org/gmane.comp.python.lxml.devel/3244/focus=3244">happy</a> <a class="reference external" href="http://article.gmane.org/gmane.comp.python.lxml.devel/3246">users</a>, and other
+<a class="reference external" href="http://www.google.com/search?as_lq=http:%2F%2Flxml.de%2F">sites that link to lxml</a>.  As <a class="reference external" href="http://www.ibm.com/developerworks/xml/library/x-hiperfparse/">Liza Daly</a> puts it: &#8220;Many software
+products come with the pick-two caveat, meaning that you must choose
+only two: speed, flexibility, or readability.  When used carefully,
+lxml can provide all three.&#8221;</p>
+</div>
+<div class="section" id="what-is-the-difference-between-lxml-etree-and-lxml-objectify">
+<h3><a class="toc-backref" href="#id8">What is the difference between lxml.etree and lxml.objectify?</a><a class="headerlink" href="#what-is-the-difference-between-lxml-etree-and-lxml-objectify" title="Permalink to this headline">¶</a></h3>
+<p>The two modules provide different ways of handling XML.  However, objectify
+builds on top of lxml.etree and therefore inherits most of its capabilities
+and a large portion of its API.</p>
+<ul>
+<li><p class="first">lxml.etree is a generic API for XML and HTML handling.  It aims for
+ElementTree <a class="reference external" href="compatibility.html">compatibility</a> and supports the entire XML infoset.  It is well
+suited for both mixed content and data centric XML.  Its generality makes it
+the best choice for most applications.</p>
+</li>
+<li><p class="first">lxml.objectify is a specialized API for XML data handling in a Python object
+syntax.  It provides a very natural way to deal with data fields stored in a
+structurally well defined XML format.  Data is automatically converted to
+Python data types and can be manipulated with normal Python operators.  Look
+at the examples in the <a class="reference external" href="objectify.html">objectify documentation</a> to see what it feels like
+to use it.</p>
+<p>Objectify is not well suited for mixed contents or HTML documents.  As it is
+built on top of lxml.etree, however, it inherits the normal support for
+XPath, XSLT or validation.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="how-can-i-make-my-application-run-faster">
+<h3><a class="toc-backref" href="#id9">How can I make my application run faster?</a><a class="headerlink" href="#how-can-i-make-my-application-run-faster" title="Permalink to this headline">¶</a></h3>
+<p>lxml.etree is a very fast library for processing XML.  There are, however, <a class="reference external" href="performance.html#the-elementtree-api">a
+few caveats</a> involved in the mapping of the powerful libxml2 library to the
+simple and convenient ElementTree API.  Not all operations are as fast as the
+simplicity of the API might suggest, while some use cases can heavily benefit
+from finding the right way of doing them.  The <a class="reference external" href="performance.html">benchmark page</a> has a
+comparison to other ElementTree implementations and a number of tips for
+performance tweaking.  As with any Python application, the rule of thumb is:
+the more of your processing runs in C, the faster your application gets.  See
+also the section on <a class="reference external" href="#threading">threading</a>.</p>
+</div>
+<div class="section" id="what-about-that-trailing-text-on-serialised-elements">
+<h3><a class="toc-backref" href="#id10">What about that trailing text on serialised Elements?</a><a class="headerlink" href="#what-about-that-trailing-text-on-serialised-elements" title="Permalink to this headline">¶</a></h3>
+<p>The ElementTree tree model defines an Element as a container with a tag name,
+contained text, child Elements and a tail text.  This means that whenever you
+serialise an Element, you will get all parts of that Element:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;tag&gt;text&lt;child/&gt;&lt;/tag&gt;tail&lt;/root&gt;&quot;</span><span class="p">)</span>
+<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="mi">0</span><span class="p">]))</span>
+<span class="go">&lt;tag&gt;text&lt;child/&gt;&lt;/tag&gt;tail</span>
+</pre></div>
+</div>
+<p>Here is an example that shows why not serialising the tail would be
+even more surprising from an object point of view:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;test&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;TEXT&quot;</span>
+<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="go">&lt;test&gt;TEXT&lt;/test&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="s">&quot;TAIL&quot;</span>
+<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="go">&lt;test&gt;TEXT&lt;/test&gt;TAIL</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="bp">None</span>
+<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="go">&lt;test&gt;TEXT&lt;/test&gt;</span>
+</pre></div>
+</div>
+<p>Just imagine a Python list where you append an item and it doesn&#8217;t
+show up when you look at the list.</p>
+<p>The <tt class="docutils literal"><span class="pre">.tail</span></tt> property is a huge simplification for the tree model as
+it avoids text nodes to appear in the list of children and makes
+access to them quick and simple.  So this is a benefit in most
+applications and simplifies many, many XML tree algorithms.</p>
+<p>However, in document-like XML (and especially HTML), the above result can be
+unexpected to new users and can sometimes require a bit more overhead.  A good
+way to deal with this is to use helper functions that copy the Element without
+its tail.  The <tt class="docutils literal"><span class="pre">lxml.html</span></tt> package also deals with this in a couple of
+places, as most HTML algorithms benefit from a tail-free behaviour.</p>
+</div>
+<div class="section" id="how-can-i-find-out-if-an-element-is-a-comment-or-pi">
+<h3><a class="toc-backref" href="#id11">How can I find out if an Element is a comment or PI?</a><a class="headerlink" href="#how-can-i-find-out-if-an-element-is-a-comment-or-pi" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;?my PI?&gt;&lt;root&gt;&lt;!-- empty --&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;root&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">getprevious</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span> <span class="ow">is</span> <span class="n">etree</span><span class="o">.</span><span class="n">PI</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span> <span class="ow">is</span> <span class="n">etree</span><span class="o">.</span><span class="n">Comment</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="how-can-i-map-an-xml-tree-into-a-dict-of-dicts">
+<h3><a class="toc-backref" href="#id12">How can I map an XML tree into a dict of dicts?</a><a class="headerlink" href="#how-can-i-map-an-xml-tree-into-a-dict-of-dicts" title="Permalink to this headline">¶</a></h3>
+<p>I&#8217;m glad you asked.</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">recursive_dict</span><span class="p">(</span><span class="n">element</span><span class="p">):</span>
+     <span class="k">return</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> \
+            <span class="nb">dict</span><span class="p">(</span><span class="nb">map</span><span class="p">(</span><span class="n">recursive_dict</span><span class="p">,</span> <span class="n">element</span><span class="p">))</span> <span class="ow">or</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="installation">
+<h2><a class="toc-backref" href="#id13">Installation</a><a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="which-version-of-libxml2-and-libxslt-should-i-use-or-require">
+<h3><a class="toc-backref" href="#id14">Which version of libxml2 and libxslt should I use or require?</a><a class="headerlink" href="#which-version-of-libxml2-and-libxslt-should-i-use-or-require" title="Permalink to this headline">¶</a></h3>
+<p>It really depends on your application, but the rule of thumb is: more recent
+versions contain less bugs and provide more features.</p>
+<ul class="simple">
+<li>Do not use libxml2 2.6.27 if you want to use XPath (including XSLT).  You
+will get crashes when XPath errors occur during the evaluation (e.g. for
+unknown functions).  This happens inside the evaluation call to libxml2, so
+there is nothing that lxml can do about it.</li>
+<li>Try to use versions of both libraries that were released together.  At least
+the libxml2 version should not be older than the libxslt version.</li>
+<li>If you use XML Schema or Schematron which are still under development, the
+most recent version of libxml2 is usually a good bet.</li>
+<li>The same applies to XPath, where a substantial number of bugs and memory
+leaks were fixed over time.  If you encounter crashes or memory leaks in
+XPath applications, try a more recent version of libxml2.</li>
+<li>For parsing and fixing broken HTML, lxml requires at least libxml2 2.6.21.</li>
+<li>For the normal tree handling, however, any libxml2 version starting with
+2.6.20 should do.</li>
+</ul>
+<p>Read the <a class="reference external" href="http://xmlsoft.org/news.html">release notes of libxml2</a> and the <a class="reference external" href="http://xmlsoft.org/XSLT/news.html">release notes of libxslt</a> to
+see when (or if) a specific bug has been fixed.</p>
+</div>
+<div class="section" id="where-are-the-binary-builds">
+<h3><a class="toc-backref" href="#id15">Where are the binary builds?</a><a class="headerlink" href="#where-are-the-binary-builds" title="Permalink to this headline">¶</a></h3>
+<p>Sidnei da Silva regularly contributes Windows binaries for new
+releases.  This is because two of the major problems of Microsoft
+Windows make it non-trivial for users to build lxml on this platform:
+the lack of a pre-installed standard compiler and the missing package
+management.</p>
+<p>If there is not currently a binary distribution of the most recent
+lxml release for this platform available from the Python Package Index
+(PyPI), please look through the older versions to see if they provide
+a binary build.  This is done by appending the version number to the
+PyPI URL, e.g.:</p>
+<div class="highlight-python"><pre>http://pypi.python.org/pypi/lxml/2.1.5</pre>
+</div>
+<p>Christoph Gohlke also provides <a class="reference external" href="http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml">unofficial lxml binary builds for
+Windows</a> that are
+usually very up to date.</p>
+<p>Apart from that, we generally do not provide binary builds of lxml, as
+most of the other operating systems out there can build lxml without
+problems (with the exception of <a class="reference external" href="build.html#building-lxml-on-macos-x">MacOS-X</a>), and the sheer mass of
+variations between platforms makes it futile to provide builds for
+everyone.</p>
+</div>
+<div class="section" id="why-do-i-get-errors-about-missing-ucs4-symbols-when-installing-lxml">
+<h3><a class="toc-backref" href="#id16">Why do I get errors about missing UCS4 symbols when installing lxml?</a><a class="headerlink" href="#why-do-i-get-errors-about-missing-ucs4-symbols-when-installing-lxml" title="Permalink to this headline">¶</a></h3>
+<p>Most likely, you use a Python installation that was configured for internal
+use of UCS2 unicode, meaning 16-bit unicode.  The lxml egg distributions are
+generally compiled on platforms that use UCS4, a 32-bit unicode encoding, as
+this is used on the majority of platforms.  Sadly, both are not compatible, so
+the eggs can only support the one they were compiled with.</p>
+<p>This means that you have to compile lxml from sources for your system.  Note
+that you do not need Cython for this, the lxml source distribution is directly
+compilable on both platform types.  See the <a class="reference external" href="build.html">build instructions</a> on how to do
+this.</p>
+</div>
+</div>
+<div class="section" id="contributing">
+<h2><a class="toc-backref" href="#id17">Contributing</a><a class="headerlink" href="#contributing" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="why-is-lxml-not-written-in-python">
+<h3><a class="toc-backref" href="#id18">Why is lxml not written in Python?</a><a class="headerlink" href="#why-is-lxml-not-written-in-python" title="Permalink to this headline">¶</a></h3>
+<p>It <em>almost</em> is.</p>
+<p>lxml is not written in plain Python, because it interfaces with two C
+libraries: libxml2 and libxslt.  Accessing them at the C-level is
+required for performance reasons.</p>
+<p>However, to avoid writing plain C-code and caring too much about the
+details of built-in types and reference counting, lxml is written in
+<a class="reference external" href="http://www.cython.org/">Cython</a>, a Python-like language that is translated into C-code.
+Chances are that if you know Python, you can write <a class="reference external" href="http://docs.cython.org/docs/tutorial.html">code that Cython
+accepts</a>.  Again, the C-ish style used in the lxml code is just for
+performance optimisations.  If you want to contribute, don&#8217;t bother
+with the details, a Python implementation of your contribution is
+better than none.  And keep in mind that lxml&#8217;s flexible API often
+favours an implementation of features in pure Python, without
+bothering with C-code at all.  For example, the <tt class="docutils literal"><span class="pre">lxml.html</span></tt> package
+is entirely written in Python.</p>
+<p>Please contact the <a class="reference external" href="http://codespeak.net/mailman/listinfo/lxml-dev">mailing list</a> if you need any help.</p>
+</div>
+<div class="section" id="how-can-i-contribute">
+<h3><a class="toc-backref" href="#id19">How can I contribute?</a><a class="headerlink" href="#how-can-i-contribute" title="Permalink to this headline">¶</a></h3>
+<p>If you find something that you would like lxml to do (or do better),
+then please tell us about it on the <a class="reference external" href="http://codespeak.net/mailman/listinfo/lxml-dev">mailing list</a>.  Patches are
+always appreciated, especially when accompanied by unit tests and
+documentation (doctests would be great).  See the <tt class="docutils literal"><span class="pre">tests</span></tt>
+subdirectories in the lxml source tree (below the <tt class="docutils literal"><span class="pre">src</span></tt> directory)
+and the <a class="reference external" href="http://docutils.sourceforge.net/rst.html">ReST</a> <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/doc/">text files</a> in the <tt class="docutils literal"><span class="pre">doc</span></tt> directory.</p>
+<p>We also have a <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/IDEAS.txt">list of missing features</a> that we would like to
+implement but didn&#8217;t due to lack if time.  If <em>you</em> find the time,
+patches are very welcome.</p>
+<p>Besides enhancing the code, there are a lot of places where you can help the
+project and its user base.  You can</p>
+<ul class="simple">
+<li>spread the word and write about lxml.  Many users (especially new Python
+users) have not yet heared about lxml, although our user base is constantly
+growing.  If you write your own blog and feel like saying something about
+lxml, go ahead and do so.  If we think your contribution or criticism is
+valuable to other users, we may even put a link or a quote on the project
+page.</li>
+<li>provide code examples for the general usage of lxml or specific problems
+solved with lxml.  Readable code is a very good way of showing how a library
+can be used and what great things you can do with it.  Again, if we hear
+about it, we can set a link on the project page.</li>
+<li>work on the documentation.  The web page is generated from a set of <a class="reference external" href="http://docutils.sourceforge.net/rst.html">ReST</a>
+<a class="reference external" href="http://codespeak.net/svn/lxml/trunk/doc/">text files</a>.  It is meant both as a representative project page for lxml
+and as a site for documenting lxml&#8217;s API and usage.  If you have questions
+or an idea how to make it more readable and accessible while you are reading
+it, please send a comment to the <a class="reference external" href="http://codespeak.net/mailman/listinfo/lxml-dev">mailing list</a>.</li>
+<li>enhance the web site. We put some work into making the web site
+usable, understandable and also easy to find, but there&#8217;s always
+things that can be done better.  You may notice that we are not
+top-ranked when searching the web for &#8220;Python and XML&#8221;, so maybe you
+have an idea how to improve that.</li>
+<li>help with the tutorial.  A tutorial is the most important stating point for
+new users, so it is important for us to provide an easy to understand guide
+into lxml.  As allo documentation, the tutorial is work in progress, so we
+appreciate every helping hand.</li>
+<li>improve the docstrings.  lxml uses docstrings to support Python&#8217;s integrated
+online <tt class="docutils literal"><span class="pre">help()</span></tt> function.  However, sometimes these are not sufficient to
+grasp the details of the function in question.  If you find such a place,
+you can try to write up a better description and send it to the <a class="reference external" href="http://codespeak.net/mailman/listinfo/lxml-dev">mailing
+list</a>.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="bugs">
+<h2><a class="toc-backref" href="#id20">Bugs</a><a class="headerlink" href="#bugs" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="my-application-crashes">
+<h3><a class="toc-backref" href="#id21">My application crashes!</a><a class="headerlink" href="#my-application-crashes" title="Permalink to this headline">¶</a></h3>
+<p>One of the goals of lxml is &#8220;no segfaults&#8221;, so if there is no clear
+warning in the documentation that you were doing something potentially
+harmful, you have found a bug and we would like to hear about it.
+Please report this bug to the <a class="reference external" href="http://codespeak.net/mailman/listinfo/lxml-dev">mailing list</a>.  See the section on bug
+reporting to learn how to do that.</p>
+<p>If your application (or e.g. your web container) uses threads, please
+see the FAQ section on <a class="reference external" href="#threading">threading</a> to check if you touch on one of the
+potential pitfalls.</p>
+<p>In any case, try to reproduce the problem with the latest versions of
+libxml2 and libxslt.  From time to time, bugs and race conditions are found
+in these libraries, so a more recent version might already contain a fix for
+your problem.</p>
+<p>Remember: even if you see lxml appear in a crash stack trace, it is
+not necessarily lxml that <em>caused</em> the crash.</p>
+</div>
+<div class="section" id="my-application-crashes-on-macos-x">
+<h3><a class="toc-backref" href="#id22">My application crashes on MacOS-X!</a><a class="headerlink" href="#my-application-crashes-on-macos-x" title="Permalink to this headline">¶</a></h3>
+<p>This was a common problem up to lxml 2.1.x.  Since lxml 2.2, the only
+officially supported way to use it on this platform is through a
+static build against freshly downloaded versions of libxml2 and
+libxslt.  See the build instructions for <a class="reference external" href="build.html#building-lxml-on-macos-x">MacOS-X</a>.</p>
+</div>
+<div class="section" id="i-think-i-have-found-a-bug-in-lxml-what-should-i-do">
+<h3><a class="toc-backref" href="#id23">I think I have found a bug in lxml. What should I do?</a><a class="headerlink" href="#i-think-i-have-found-a-bug-in-lxml-what-should-i-do" title="Permalink to this headline">¶</a></h3>
+<p>First, you should look at the <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/CHANGES.txt">current developer changelog</a> to see if this
+is a known problem that has already been fixed in the SVN trunk since the
+release you are using.</p>
+<p>Also, the &#8216;crash&#8217; section above has a few good advices what to try to see if
+the problem is really in lxml - and not in your setup.  Believe it or not,
+that happens more often than you might think, especially when old libraries
+or even multiple library versions are installed.</p>
+<p>You should always try to reproduce the problem with the latest
+versions of libxml2 and libxslt - and make sure they are used.
+<tt class="docutils literal"><span class="pre">lxml.etree</span></tt> can tell you what it runs with:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">sys</span>
+<span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+
+<span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%-20s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s">&#39;Python&#39;</span><span class="p">,</span>           <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">))</span>
+<span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%-20s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s">&#39;lxml.etree&#39;</span><span class="p">,</span>       <span class="n">etree</span><span class="o">.</span><span class="n">LXML_VERSION</span><span class="p">))</span>
+<span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%-20s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s">&#39;libxml used&#39;</span><span class="p">,</span>      <span class="n">etree</span><span class="o">.</span><span class="n">LIBXML_VERSION</span><span class="p">))</span>
+<span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%-20s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s">&#39;libxml compiled&#39;</span><span class="p">,</span>  <span class="n">etree</span><span class="o">.</span><span class="n">LIBXML_COMPILED_VERSION</span><span class="p">))</span>
+<span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%-20s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s">&#39;libxslt used&#39;</span><span class="p">,</span>     <span class="n">etree</span><span class="o">.</span><span class="n">LIBXSLT_VERSION</span><span class="p">))</span>
+<span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%-20s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="s">&#39;libxslt compiled&#39;</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">LIBXSLT_COMPILED_VERSION</span><span class="p">))</span>
+</pre></div>
+</div>
+<p>If you can figure that the problem is not in lxml but in the
+underlying libxml2 or libxslt, you can ask right on the respective
+mailing lists, which may considerably reduce the time to find a fix or
+work-around.  See the next question for some hints on how to do that.</p>
+<p>Otherwise, we would really like to hear about it.  Please report it to
+the <a class="reference external" href="http://codespeak.net/mailman/listinfo/lxml-dev">mailing list</a> so that we can fix it.  It is very helpful in this
+case if you can come up with a short code snippet that demonstrates
+your problem.  If others can reproduce and see the problem, it is much
+easier for them to fix it - and maybe even easier for you to describe
+it and get people convinced that it really is a problem to fix.</p>
+<p>It is important that you always report the version of lxml, libxml2
+and libxslt that you get from the code snippet above.  If we do not
+know the library versions you are using, we will ask back, so it will
+take longer for you to get a helpful answer.</p>
+<p>Since as a user of lxml you are likely a programmer, you might find
+<a class="reference external" href="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">this article on bug reports</a> an interesting read.</p>
+</div>
+<div class="section" id="how-do-i-know-a-bug-is-really-in-lxml-and-not-in-libxml2">
+<h3><a class="toc-backref" href="#id24">How do I know a bug is really in lxml and not in libxml2?</a><a class="headerlink" href="#how-do-i-know-a-bug-is-really-in-lxml-and-not-in-libxml2" title="Permalink to this headline">¶</a></h3>
+<p>A large part of lxml&#8217;s functionality is implemented by libxml2 and
+libxslt, so problems that you encounter may be in one or the other.
+Knowing the right place to ask will reduce the time it takes to fix
+the problem, or to find a work-around.</p>
+<p>Both libxml2 and libxslt come with their own command line frontends,
+namely <tt class="docutils literal"><span class="pre">xmllint</span></tt> and <tt class="docutils literal"><span class="pre">xsltproc</span></tt>.  If you encounter problems with
+XSLT processing for specific stylesheets or with validation for
+specific schemas, try to run the XSLT with <tt class="docutils literal"><span class="pre">xsltproc</span></tt> or the
+validation with <tt class="docutils literal"><span class="pre">xmllint</span></tt> respectively to find out if it fails there
+as well.  If it does, please report directly to the mailing lists of
+the respective project, namely:</p>
+<ul class="simple">
+<li><a class="reference external" href="http://mail.gnome.org/mailman/listinfo/xml">libxml2 mailing list</a></li>
+<li><a class="reference external" href="http://mail.gnome.org/mailman/listinfo/xslt">libxslt mailing list</a></li>
+</ul>
+<p>On the other hand, everything that seems to be related to Python code,
+including custom resolvers, custom XPath functions, etc. is likely
+outside of the scope of libxml2/libxslt.  If you encounter problems
+here or you are not sure where there the problem may come from, please
+ask on the lxml mailing list first.</p>
+<p>In any case, a good explanation of the problem including some simple
+test code and some input data will help us (or the libxml2 developers)
+see and understand the problem, which largely increases your chance of
+getting help.  See the question above for a few hints on what is
+helpful here.</p>
+</div>
+</div>
+<div class="section" id="id1">
+<h2><a class="toc-backref" href="#id25">Threading</a><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="can-i-use-threads-to-concurrently-access-the-lxml-api">
+<h3><a class="toc-backref" href="#id26">Can I use threads to concurrently access the lxml API?</a><a class="headerlink" href="#can-i-use-threads-to-concurrently-access-the-lxml-api" title="Permalink to this headline">¶</a></h3>
+<p>Short answer: yes, if you use lxml 2.2 and later.</p>
+<p>Since version 1.1, lxml frees the GIL (Python&#8217;s global interpreter
+lock) internally when parsing from disk and memory, as long as you use
+either the default parser (which is replicated for each thread) or
+create a parser for each thread yourself.  lxml also allows
+concurrency during validation (RelaxNG and XMLSchema) and XSL
+transformation.  You can share RelaxNG, XMLSchema and XSLT objects
+between threads.</p>
+<p>While you can also share parsers between threads, this will serialize
+the access to each of them, so it is better to <tt class="docutils literal"><span class="pre">.copy()</span></tt> parsers or
+to just use the default parser if you do not need any special
+configuration.  The same applies to the XPath evaluators, which use an
+internal lock to protect their prepared evaluation contexts.  It is
+therefore best to use separate evaluator instances in threads.</p>
+<p>Warning: Before lxml 2.2, and especially before 2.1, there were
+various issues when moving subtrees between different threads, or when
+applying XSLT objects from one thread to trees parsed or modified in
+another.  If you need code to run with older versions, you should
+generally avoid modifying trees in other threads than the one it was
+generated in.  Although this should work in many cases, there are
+certain scenarios where the termination of a thread that parsed a tree
+can crash the application if subtrees of this tree were moved to other
+documents.  You should be on the safe side when passing trees between
+threads if you either</p>
+<ul class="simple">
+<li>do not modify these trees and do not move their elements to other
+trees, or</li>
+<li>do not terminate threads while the trees they parsed are still in
+use (e.g. by using a fixed size thread-pool or long-running threads
+in processing chains)</li>
+</ul>
+<p>Since lxml 2.2, even multi-thread pipelines are supported. However,
+note that it is more efficient to do all tree work inside one thread,
+than to let multiple threads work on a tree one after the other. This
+is because trees inherit state from the thread that created them,
+which must be maintained when the tree is modified inside another
+thread.</p>
+</div>
+<div class="section" id="does-my-program-run-faster-if-i-use-threads">
+<h3><a class="toc-backref" href="#id27">Does my program run faster if I use threads?</a><a class="headerlink" href="#does-my-program-run-faster-if-i-use-threads" title="Permalink to this headline">¶</a></h3>
+<p>Depends.  The best way to answer this is timing and profiling.</p>
+<p>The global interpreter lock (GIL) in Python serializes access to the
+interpreter, so if the majority of your processing is done in Python
+code (walking trees, modifying elements, etc.), your gain will be
+close to zero.  The more of your XML processing moves into lxml,
+however, the higher your gain.  If your application is bound by XML
+parsing and serialisation, or by very selective XPath expressions and
+complex XSLTs, your speedup on multi-processor machines can be
+substantial.</p>
+<p>See the question above to learn which operations free the GIL to support
+multi-threading.</p>
+</div>
+<div class="section" id="would-my-single-threaded-program-run-faster-if-i-turned-off-threading">
+<h3><a class="toc-backref" href="#id28">Would my single-threaded program run faster if I turned off threading?</a><a class="headerlink" href="#would-my-single-threaded-program-run-faster-if-i-turned-off-threading" title="Permalink to this headline">¶</a></h3>
+<p>Possibly, yes.  You can see for yourself by compiling lxml entirely
+without threading support.  Pass the <tt class="docutils literal"><span class="pre">--without-threading</span></tt> option to
+setup.py when building lxml from source.  You can also build libxml2
+without pthread support (<tt class="docutils literal"><span class="pre">--without-pthreads</span></tt> option), which may add
+another bit of performance.  Note that this will leave internal data
+structures entirely without thread protection, so make sure you really
+do not use lxml outside of the main application thread in this case.</p>
+</div>
+<div class="section" id="why-can-t-i-reuse-xslt-stylesheets-in-other-threads">
+<h3><a class="toc-backref" href="#id29">Why can&#8217;t I reuse XSLT stylesheets in other threads?</a><a class="headerlink" href="#why-can-t-i-reuse-xslt-stylesheets-in-other-threads" title="Permalink to this headline">¶</a></h3>
+<p>Since later lxml 2.0 versions, you can do this.  There is some
+overhead involved as the result document needs an additional cleanup
+traversal when the input document and/or the stylesheet were created
+in other threads.  However, on a multi-processor machine, the gain of
+freeing the GIL easily covers this drawback.</p>
+<p>If you need even the last bit of performance, consider keeping (a copy
+of) the stylesheet in thread-local storage, and try creating the input
+document(s) in the same thread.  And do not forget to benchmark your
+code to see if the increased code complexity is really worth it.</p>
+</div>
+<div class="section" id="my-program-crashes-when-run-with-mod-python-pyro-zope-plone">
+<h3><a class="toc-backref" href="#id30">My program crashes when run with mod_python/Pyro/Zope/Plone/...</a><a class="headerlink" href="#my-program-crashes-when-run-with-mod-python-pyro-zope-plone" title="Permalink to this headline">¶</a></h3>
+<p>These environments can use threads in a way that may not make it obvious when
+threads are created and what happens in which thread.  This makes it hard to
+ensure lxml&#8217;s threading support is used in a reliable way.  Sadly, if problems
+arise, they are as diverse as the applications, so it is difficult to provide
+any generally applicable solution.  Also, these environments are so complex
+that problems become hard to debug and even harder to reproduce in a
+predictable way.  If you encounter crashes in one of these systems, but your
+code runs perfectly when started by hand, the following gives you a few hints
+for possible approaches to solve your specific problem:</p>
+<ul>
+<li><p class="first">make sure you use recent versions of libxml2, libxslt and lxml.  The
+libxml2 developers keep fixing bugs in each release, and lxml also
+tries to become more robust against possible pitfalls.  So newer
+versions might already fix your problem in a reliable way.  Version
+2.2 of lxml contains many improvements.</p>
+</li>
+<li><p class="first">make sure the library versions you installed are really used.  Do
+not rely on what your operating system tells you!  Print the version
+constants in <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> from within your runtime environment to
+make sure it is the case.  This is especially a problem under
+MacOS-X when newer library versions were installed in addition to
+the outdated system libraries.  Please read the bugs section
+regarding MacOS-X in this FAQ.</p>
+</li>
+<li><p class="first">if you use <tt class="docutils literal"><span class="pre">mod_python</span></tt>, try setting this option:</p>
+<blockquote>
+<div><p>PythonInterpreter main_interpreter</p>
+</div></blockquote>
+<p>There was a discussion on the mailing list about this problem:</p>
+<blockquote>
+<div><p><a class="reference external" href="http://comments.gmane.org/gmane.comp.python.lxml.devel/2942">http://comments.gmane.org/gmane.comp.python.lxml.devel/2942</a></p>
+</div></blockquote>
+</li>
+<li><p class="first">compile lxml without threading support by running <tt class="docutils literal"><span class="pre">setup.py</span></tt> with the
+<tt class="docutils literal"><span class="pre">--without-threading</span></tt> option.  While this might be slower in certain
+scenarios on multi-processor systems, it <em>might</em> also keep your application
+from crashing, which should be worth more to you than peek performance.
+Remember that lxml is fast anyway, so concurrency may not even be worth it.</p>
+</li>
+<li><p class="first">look out for fancy XSLT stuff like foreign document access or
+passing in subtrees trough XSLT variables.  This might or might not
+work, depending on your specific usage.  Again, later versions of
+lxml and libxslt provide safer support here.</p>
+</li>
+<li><p class="first">try copying trees at suspicious places in your code and working with
+those instead of a tree shared between threads.  Note that the
+copying must happen inside the target thread to be effective, not in
+the thread that created the tree.  Serialising in one thread and
+parsing in another is also a simple (and fast) way of separating
+thread contexts.</p>
+</li>
+<li><p class="first">try keeping thread-local copies of XSLT stylesheets, i.e. one per thread,
+instead of sharing one.  Also see the question above.</p>
+</li>
+<li><p class="first">you can try to serialise suspicious parts of your code with explicit thread
+locks, thus disabling the concurrency of the runtime system.</p>
+</li>
+<li><p class="first">report back on the mailing list to see if there are other ways to work
+around your specific problems.  Do not forget to report the version numbers
+of lxml, libxml2 and libxslt you are using (see the question on reporting
+a bug).</p>
+</li>
+</ul>
+<p>Note that most of these options will degrade performance and/or your
+code quality.  If you are unsure what to do, please ask on the mailing
+list.</p>
+</div>
+</div>
+<div class="section" id="parsing-and-serialisation">
+<h2><a class="toc-backref" href="#id31">Parsing and Serialisation</a><a class="headerlink" href="#parsing-and-serialisation" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="why-doesn-t-the-pretty-print-option-reformat-my-xml-output">
+<h3><a class="toc-backref" href="#id32">Why doesn&#8217;t the <tt class="docutils literal"><span class="pre">pretty_print</span></tt> option reformat my XML output?</a><a class="headerlink" href="#why-doesn-t-the-pretty-print-option-reformat-my-xml-output" title="Permalink to this headline">¶</a></h3>
+<p>Pretty printing (or formatting) an XML document means adding white space to
+the content.  These modifications are harmless if they only impact elements in
+the document that do not carry (text) data.  They corrupt your data if they
+impact elements that contain data.  If lxml cannot distinguish between
+whitespace and data, it will not alter your data.  Whitespace is therefore
+only added between nodes that do not contain data.  This is always the case
+for trees constructed element-by-element, so no problems should be expected
+here.  For parsed trees, a good way to assure that no conflicting whitespace
+is left in the tree is the <tt class="docutils literal"><span class="pre">remove_blank_text</span></tt> option:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This will allow the parser to drop blank text nodes when constructing the
+tree.  If you now call a serialization function to pretty print this tree,
+lxml can add fresh whitespace to the XML tree to indent it.</p>
+<p>Note that the <tt class="docutils literal"><span class="pre">remove_blank_text</span></tt> option also uses a heuristic if it
+has no definite knowledge about the document&#8217;s ignorable whitespace.
+It will keep blank text nodes that appear after non-blank text nodes
+at the same level.  This is to prevent document-style XML from
+breaking.</p>
+<p>If you want to be sure all blank text is removed, you have to use
+either a DTD to tell the parser which whitespace it can safely ignore,
+or remove the ignorable whitespace manually after parsing, e.g. by
+setting all tail text to None:</p>
+<div class="highlight-python"><pre>.. sourcecode:: python</pre>
+</div>
+<blockquote>
+<div><dl class="docutils">
+<dt>for element in root.iter():</dt>
+<dd>element.tail = None</dd>
+</dl>
+</div></blockquote>
+<p>Fredrik Lundh also has a Python-level function for indenting XML by
+appending whitespace to tags.  It can be found on his <a class="reference external" href="http://effbot.org/zone/element-lib.htm">element
+library</a> recipe page.</p>
+</div>
+<div class="section" id="why-can-t-lxml-parse-my-xml-from-unicode-strings">
+<h3><a class="toc-backref" href="#id33">Why can&#8217;t lxml parse my XML from unicode strings?</a><a class="headerlink" href="#why-can-t-lxml-parse-my-xml-from-unicode-strings" title="Permalink to this headline">¶</a></h3>
+<p>lxml can read Python unicode strings and even tries to support them if libxml2
+does not.  However, if the unicode string declares an XML encoding internally
+(<tt class="docutils literal"><span class="pre">&lt;?xml</span> <span class="pre">encoding=&quot;...&quot;?&gt;</span></tt>), parsing is bound to fail, as this encoding is
+most likely not the real encoding used in Python unicode.  The same is true
+for HTML unicode strings that contain charset meta tags, although the problems
+may be more subtle here.  The libxml2 HTML parser may not be able to parse the
+meta tags in broken HTML and may end up ignoring them, so even if parsing
+succeeds, later handling may still fail with character encoding errors.</p>
+<p>Note that Python uses different encodings for unicode on different platforms,
+so even specifying the real internal unicode encoding is not portable between
+Python interpreters.  Don&#8217;t do it.</p>
+<p>Python unicode strings with XML data or HTML data that carry encoding
+information are broken.  lxml will not parse them.  You must provide parsable
+data in a valid encoding.</p>
+</div>
+<div class="section" id="what-is-the-difference-between-str-xslt-doc-and-xslt-doc-write">
+<h3><a class="toc-backref" href="#id34">What is the difference between str(xslt(doc)) and xslt(doc).write() ?</a><a class="headerlink" href="#what-is-the-difference-between-str-xslt-doc-and-xslt-doc-write" title="Permalink to this headline">¶</a></h3>
+<p>The str() implementation of the XSLTResultTree class (a subclass of the
+ElementTree class) knows about the output method chosen in the stylesheet
+(xsl:output), write() doesn&#8217;t.  If you call write(), the result will be a
+normal XML tree serialization in the requested encoding.  Calling this method
+may also fail for XSLT results that are not XML trees (e.g. string results).</p>
+<p>If you call str(), it will return the serialized result as specified by the
+XSL transform.  This correctly serializes string results to encoded Python
+strings and honours <tt class="docutils literal"><span class="pre">xsl:output</span></tt> options like <tt class="docutils literal"><span class="pre">indent</span></tt>.  This almost
+certainly does what you want, so you should only use <tt class="docutils literal"><span class="pre">write()</span></tt> if you are
+sure that the XSLT result is an XML tree and you want to override the encoding
+and indentation options requested by the stylesheet.</p>
+</div>
+<div class="section" id="why-can-t-i-just-delete-parents-or-clear-the-root-node-in-iterparse">
+<h3><a class="toc-backref" href="#id35">Why can&#8217;t I just delete parents or clear the root node in iterparse()?</a><a class="headerlink" href="#why-can-t-i-just-delete-parents-or-clear-the-root-node-in-iterparse" title="Permalink to this headline">¶</a></h3>
+<p>The <tt class="docutils literal"><span class="pre">iterparse()</span></tt> implementation is based on the libxml2 parser.  It
+requires the tree to be intact to finish parsing.  If you delete or modify
+parents of the current node, chances are you modify the structure in a way
+that breaks the parser.  Normally, this will result in a segfault.  Please
+refer to the <a class="reference external" href="parsing.html#iterparse-and-iterwalk">iterparse section</a> of the lxml API documentation to find out
+what you can do and what you can&#8217;t do.</p>
+</div>
+<div class="section" id="how-do-i-output-null-characters-in-xml-text">
+<h3><a class="toc-backref" href="#id36">How do I output null characters in XML text?</a><a class="headerlink" href="#how-do-i-output-null-characters-in-xml-text" title="Permalink to this headline">¶</a></h3>
+<p>Don&#8217;t.  What you would produce is not well-formed XML.  XML parsers
+will refuse to parse a document that contains null characters.  The
+right way to embed binary data in XML is using a text encoding such as
+uuencode or base64.</p>
+</div>
+<div class="section" id="is-lxml-vulnerable-to-xml-bombs">
+<h3><a class="toc-backref" href="#id37">Is lxml vulnerable to XML bombs?</a><a class="headerlink" href="#is-lxml-vulnerable-to-xml-bombs" title="Permalink to this headline">¶</a></h3>
+<p>This has nothing to do with lxml itself, only with the parser of
+libxml2.  Since libxml2 version 2.7, the parser imposes hard security
+limits on input documents to prevent DoS attacks with forged input
+data.  Since lxml 2.2.1, you can disable these limits with the
+<tt class="docutils literal"><span class="pre">huge_tree</span></tt> parser option if you need to parse <em>really</em> large,
+trusted documents.  All lxml versions will leave these restrictions
+enabled by default.</p>
+<p>Note that libxml2 versions of the 2.6 series do not restrict their
+parser and are therefore vulnerable to DoS attacks.</p>
+</div>
+</div>
+<div class="section" id="xpath-and-document-traversal">
+<h2><a class="toc-backref" href="#id38">XPath and Document Traversal</a><a class="headerlink" href="#xpath-and-document-traversal" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="what-are-the-findall-and-xpath-methods-on-element-tree">
+<h3><a class="toc-backref" href="#id39">What are the <tt class="docutils literal"><span class="pre">findall()</span></tt> and <tt class="docutils literal"><span class="pre">xpath()</span></tt> methods on Element(Tree)?</a><a class="headerlink" href="#what-are-the-findall-and-xpath-methods-on-element-tree" title="Permalink to this headline">¶</a></h3>
+<p><tt class="docutils literal"><span class="pre">findall()</span></tt> is part of the original <a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree API</a>.  It supports a
+<a class="reference external" href="http://effbot.org/zone/element-xpath.htm">simple subset of the XPath language</a>, without predicates, conditions and
+other advanced features.  It is very handy for finding specific tags in a
+tree.  Another important difference is namespace handling, which uses the
+<tt class="docutils literal"><span class="pre">{namespace}tagname</span></tt> notation.  This is not supported by XPath.  The
+findall, find and findtext methods are compatible with other ElementTree
+implementations and allow writing portable code that runs on ElementTree,
+cElementTree and lxml.etree.</p>
+<p><tt class="docutils literal"><span class="pre">xpath()</span></tt>, on the other hand, supports the complete power of the XPath
+language, including predicates, XPath functions and Python extension
+functions.  The syntax is defined by the <a class="reference external" href="http://www.w3.org/TR/xpath">XPath specification</a>.  If you need
+the expressiveness and selectivity of XPath, the <tt class="docutils literal"><span class="pre">xpath()</span></tt> method, the
+<tt class="docutils literal"><span class="pre">XPath</span></tt> class and the <tt class="docutils literal"><span class="pre">XPathEvaluator</span></tt> are the best <a class="reference external" href="performance.html#xpath">choice</a>.</p>
+</div>
+<div class="section" id="why-doesn-t-findall-support-full-xpath-expressions">
+<h3><a class="toc-backref" href="#id40">Why doesn&#8217;t <tt class="docutils literal"><span class="pre">findall()</span></tt> support full XPath expressions?</a><a class="headerlink" href="#why-doesn-t-findall-support-full-xpath-expressions" title="Permalink to this headline">¶</a></h3>
+<p>It was decided that it is more important to keep compatibility with
+<a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a> to simplify code migration between the libraries.  The main
+difference compared to XPath is the <tt class="docutils literal"><span class="pre">{namespace}tagname</span></tt> notation used in
+<tt class="docutils literal"><span class="pre">findall()</span></tt>, which is not valid XPath.</p>
+<p>ElementTree and lxml.etree use the same implementation, which assures 100%
+compatibility.  Note that <tt class="docutils literal"><span class="pre">findall()</span></tt> is <a class="reference external" href="performance.html#tree-traversal">so fast</a> in lxml that a native
+implementation would not bring any performance benefits.</p>
+</div>
+<div class="section" id="how-can-i-find-out-which-namespace-prefixes-are-used-in-a-document">
+<h3><a class="toc-backref" href="#id41">How can I find out which namespace prefixes are used in a document?</a><a class="headerlink" href="#how-can-i-find-out-which-namespace-prefixes-are-used-in-a-document" title="Permalink to this headline">¶</a></h3>
+<p>You can traverse the document (<tt class="docutils literal"><span class="pre">root.iter()</span></tt>) and collect the prefix
+attributes from all Elements into a set.  However, it is unlikely that you
+really want to do that.  You do not need these prefixes, honestly.  You only
+need the namespace URIs.  All namespace comparisons use these, so feel free to
+make up your own prefixes when you use XPath expressions or extension
+functions.</p>
+<p>The only place where you might consider specifying prefixes is the
+serialization of Elements that were created through the API.  Here, you can
+specify a prefix mapping through the <tt class="docutils literal"><span class="pre">nsmap</span></tt> argument when creating the root
+Element.  Its children will then inherit this prefix for serialization.</p>
+</div>
+<div class="section" id="how-can-i-specify-a-default-namespace-for-xpath-expressions">
+<h3><a class="toc-backref" href="#id42">How can I specify a default namespace for XPath expressions?</a><a class="headerlink" href="#how-can-i-specify-a-default-namespace-for-xpath-expressions" title="Permalink to this headline">¶</a></h3>
+<p>You can&#8217;t.  In XPath, there is no such thing as a default namespace.  Just use
+an arbitrary prefix and let the namespace dictionary of the XPath evaluators
+map it to your namespace.  See also the question above.</p>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">lxml FAQ - Frequently Asked Questions</a><ul>
+<li><a class="reference internal" href="#general-questions">General Questions</a><ul>
+<li><a class="reference internal" href="#is-there-a-tutorial">Is there a tutorial?</a></li>
+<li><a class="reference internal" href="#where-can-i-find-more-documentation-about-lxml">Where can I find more documentation about lxml?</a></li>
+<li><a class="reference internal" href="#what-standards-does-lxml-implement">What standards does lxml implement?</a></li>
+<li><a class="reference internal" href="#who-uses-lxml">Who uses lxml?</a></li>
+<li><a class="reference internal" href="#what-is-the-difference-between-lxml-etree-and-lxml-objectify">What is the difference between lxml.etree and lxml.objectify?</a></li>
+<li><a class="reference internal" href="#how-can-i-make-my-application-run-faster">How can I make my application run faster?</a></li>
+<li><a class="reference internal" href="#what-about-that-trailing-text-on-serialised-elements">What about that trailing text on serialised Elements?</a></li>
+<li><a class="reference internal" href="#how-can-i-find-out-if-an-element-is-a-comment-or-pi">How can I find out if an Element is a comment or PI?</a></li>
+<li><a class="reference internal" href="#how-can-i-map-an-xml-tree-into-a-dict-of-dicts">How can I map an XML tree into a dict of dicts?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#installation">Installation</a><ul>
+<li><a class="reference internal" href="#which-version-of-libxml2-and-libxslt-should-i-use-or-require">Which version of libxml2 and libxslt should I use or require?</a></li>
+<li><a class="reference internal" href="#where-are-the-binary-builds">Where are the binary builds?</a></li>
+<li><a class="reference internal" href="#why-do-i-get-errors-about-missing-ucs4-symbols-when-installing-lxml">Why do I get errors about missing UCS4 symbols when installing lxml?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#contributing">Contributing</a><ul>
+<li><a class="reference internal" href="#why-is-lxml-not-written-in-python">Why is lxml not written in Python?</a></li>
+<li><a class="reference internal" href="#how-can-i-contribute">How can I contribute?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#bugs">Bugs</a><ul>
+<li><a class="reference internal" href="#my-application-crashes">My application crashes!</a></li>
+<li><a class="reference internal" href="#my-application-crashes-on-macos-x">My application crashes on MacOS-X!</a></li>
+<li><a class="reference internal" href="#i-think-i-have-found-a-bug-in-lxml-what-should-i-do">I think I have found a bug in lxml. What should I do?</a></li>
+<li><a class="reference internal" href="#how-do-i-know-a-bug-is-really-in-lxml-and-not-in-libxml2">How do I know a bug is really in lxml and not in libxml2?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#id1">Threading</a><ul>
+<li><a class="reference internal" href="#can-i-use-threads-to-concurrently-access-the-lxml-api">Can I use threads to concurrently access the lxml API?</a></li>
+<li><a class="reference internal" href="#does-my-program-run-faster-if-i-use-threads">Does my program run faster if I use threads?</a></li>
+<li><a class="reference internal" href="#would-my-single-threaded-program-run-faster-if-i-turned-off-threading">Would my single-threaded program run faster if I turned off threading?</a></li>
+<li><a class="reference internal" href="#why-can-t-i-reuse-xslt-stylesheets-in-other-threads">Why can&#8217;t I reuse XSLT stylesheets in other threads?</a></li>
+<li><a class="reference internal" href="#my-program-crashes-when-run-with-mod-python-pyro-zope-plone">My program crashes when run with mod_python/Pyro/Zope/Plone/...</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#parsing-and-serialisation">Parsing and Serialisation</a><ul>
+<li><a class="reference internal" href="#why-doesn-t-the-pretty-print-option-reformat-my-xml-output">Why doesn&#8217;t the <tt class="docutils literal"><span class="pre">pretty_print</span></tt> option reformat my XML output?</a></li>
+<li><a class="reference internal" href="#why-can-t-lxml-parse-my-xml-from-unicode-strings">Why can&#8217;t lxml parse my XML from unicode strings?</a></li>
+<li><a class="reference internal" href="#what-is-the-difference-between-str-xslt-doc-and-xslt-doc-write">What is the difference between str(xslt(doc)) and xslt(doc).write() ?</a></li>
+<li><a class="reference internal" href="#why-can-t-i-just-delete-parents-or-clear-the-root-node-in-iterparse">Why can&#8217;t I just delete parents or clear the root node in iterparse()?</a></li>
+<li><a class="reference internal" href="#how-do-i-output-null-characters-in-xml-text">How do I output null characters in XML text?</a></li>
+<li><a class="reference internal" href="#is-lxml-vulnerable-to-xml-bombs">Is lxml vulnerable to XML bombs?</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#xpath-and-document-traversal">XPath and Document Traversal</a><ul>
+<li><a class="reference internal" href="#what-are-the-findall-and-xpath-methods-on-element-tree">What are the <tt class="docutils literal"><span class="pre">findall()</span></tt> and <tt class="docutils literal"><span class="pre">xpath()</span></tt> methods on Element(Tree)?</a></li>
+<li><a class="reference internal" href="#why-doesn-t-findall-support-full-xpath-expressions">Why doesn&#8217;t <tt class="docutils literal"><span class="pre">findall()</span></tt> support full XPath expressions?</a></li>
+<li><a class="reference internal" href="#how-can-i-find-out-which-namespace-prefixes-are-used-in-a-document">How can I find out which namespace prefixes are used in a document?</a></li>
+<li><a class="reference internal" href="#how-can-i-specify-a-default-namespace-for-xpath-expressions">How can I specify a default namespace for XPath expressions?</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/FAQ.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/Makefile b/doc/sphinx/Makefile
new file mode 100644 (file)
index 0000000..f219a2f
--- /dev/null
@@ -0,0 +1,64 @@
+# Makefile for Sphinx LaTeX output
+
+ALLDOCS = $(basename $(wildcard *.tex))
+ALLPDF = $(addsuffix .pdf,$(ALLDOCS))
+ALLDVI = $(addsuffix .dvi,$(ALLDOCS))
+
+# Prefix for archive names
+ARCHIVEPRREFIX =
+# Additional LaTeX options
+LATEXOPTS =
+
+all: $(ALLPDF)
+all-pdf: $(ALLPDF)
+all-dvi: $(ALLDVI)
+all-ps: all-dvi
+       for f in *.dvi; do dvips $$f; done
+all-pdf-ja: $(wildcard *.tex)
+       ebb $(wildcard *.pdf *.png *.gif *.jpeg)
+       platex -kanji=utf8 $(LATEXOPTS) '$<'
+       platex -kanji=utf8 $(LATEXOPTS) '$<'
+       platex -kanji=utf8 $(LATEXOPTS) '$<'
+       -mendex -U -f -d '$(basename $<).dic' -s python.ist '$(basename $<).idx'
+       platex -kanji=utf8 $(LATEXOPTS) '$<'
+       platex -kanji=utf8 $(LATEXOPTS) '$<'
+       dvipdfmx '$(basename $<).dvi'
+
+zip: all-$(FMT)
+       mkdir $(ARCHIVEPREFIX)docs-$(FMT)
+       cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
+       zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT)
+       rm -r $(ARCHIVEPREFIX)docs-$(FMT)
+
+tar: all-$(FMT)
+       mkdir $(ARCHIVEPREFIX)docs-$(FMT)
+       cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
+       tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT)
+       rm -r $(ARCHIVEPREFIX)docs-$(FMT)
+
+bz2: tar
+       bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
+
+# The number of LaTeX runs is quite conservative, but I don't expect it
+# to get run often, so the little extra time won't hurt.
+%.dvi: %.tex
+       latex $(LATEXOPTS) '$<'
+       latex $(LATEXOPTS) '$<'
+       latex $(LATEXOPTS) '$<'
+       -makeindex -s python.ist '$(basename $<).idx'
+       latex $(LATEXOPTS) '$<'
+       latex $(LATEXOPTS) '$<'
+
+%.pdf: %.tex
+       pdflatex $(LATEXOPTS) '$<'
+       pdflatex $(LATEXOPTS) '$<'
+       pdflatex $(LATEXOPTS) '$<'
+       -makeindex -s python.ist '$(basename $<).idx'
+       pdflatex $(LATEXOPTS) '$<'
+       pdflatex $(LATEXOPTS) '$<'
+
+clean:
+       rm -f *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla
+
+.PHONY: all all-pdf all-dvi all-ps clean
+
diff --git a/doc/sphinx/_images/tagpython.png b/doc/sphinx/_images/tagpython.png
new file mode 100644 (file)
index 0000000..1bedfc8
Binary files /dev/null and b/doc/sphinx/_images/tagpython.png differ
diff --git a/doc/sphinx/_sources/FAQ.txt b/doc/sphinx/_sources/FAQ.txt
new file mode 100644 (file)
index 0000000..f29498e
--- /dev/null
@@ -0,0 +1,989 @@
+=====================================
+lxml FAQ - Frequently Asked Questions
+=====================================
+
+.. meta::
+  :description: Frequently Asked Questions about lxml (FAQ)
+  :keywords: lxml, lxml.etree, FAQ, frequently asked questions
+
+Frequently asked questions on lxml.  See also the notes on compatibility_ to
+ElementTree_.
+
+.. _compatibility: compatibility.html
+.. _ElementTree:   http://effbot.org/zone/element-index.htm
+.. _`build instructions`: build.html
+.. _`MacOS-X` : build.html#building-lxml-on-macos-x
+
+.. contents::
+..
+   1  General Questions
+     1.1  Is there a tutorial?
+     1.2  Where can I find more documentation about lxml?
+     1.3  What standards does lxml implement?
+     1.4  Who uses lxml?
+     1.5  What is the difference between lxml.etree and lxml.objectify?
+     1.6  How can I make my application run faster?
+     1.7  What about that trailing text on serialised Elements?
+     1.8  How can I find out if an Element is a comment or PI?
+     1.9  How can I map an XML tree into a dict of dicts?
+   2  Installation
+     2.1  Which version of libxml2 and libxslt should I use or require?
+     2.2  Where are the binary builds?
+     2.3  Why do I get errors about missing UCS4 symbols when installing lxml?
+   3  Contributing
+     3.1  Why is lxml not written in Python?
+     3.2  How can I contribute?
+   4  Bugs
+     4.1  My application crashes!
+     4.2  My application crashes on MacOS-X!
+     4.3  I think I have found a bug in lxml. What should I do?
+     4.4  How do I know a bug is really in lxml and not in libxml2?
+   5  Threading
+     5.1  Can I use threads to concurrently access the lxml API?
+     5.2  Does my program run faster if I use threads?
+     5.3  Would my single-threaded program run faster if I turned off threading?
+     5.4  Why can't I reuse XSLT stylesheets in other threads?
+     5.5  My program crashes when run with mod_python/Pyro/Zope/Plone/...
+   6  Parsing and Serialisation
+     6.1  Why doesn't the ``pretty_print`` option reformat my XML output?
+     6.2  Why can't lxml parse my XML from unicode strings?
+     6.3  What is the difference between str(xslt(doc)) and xslt(doc).write() ?
+     6.4  Why can't I just delete parents or clear the root node in iterparse()?
+     6.5  How do I output null characters in XML text?
+     6.6  Is lxml vulnerable to XML bombs?
+   7  XPath and Document Traversal
+     7.1  What are the ``findall()`` and ``xpath()`` methods on Element(Tree)?
+     7.2  Why doesn't ``findall()`` support full XPath expressions?
+     7.3  How can I find out which namespace prefixes are used in a document?
+     7.4  How can I specify a default namespace for XPath expressions?
+
+..
+  >>> import sys
+  >>> from lxml import etree as _etree
+  >>> if sys.version_info[0] >= 3:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if isinstance(s, bytes): s = s.decode("utf-8") # CR
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  ... else:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  >>> etree = etree_mock()
+
+
+General Questions
+=================
+
+Is there a tutorial?
+--------------------
+
+Read the `lxml.etree Tutorial`_.  While this is still work in progress
+(just as any good documentation), it provides an overview of the most
+important concepts in ``lxml.etree``.  If you want to help out,
+improving the tutorial is a very good place to start.
+
+There is also a `tutorial for ElementTree`_ which works for
+``lxml.etree``.  The documentation of the `extended etree API`_ also
+contains many examples for ``lxml.etree``.  Fredrik Lundh's `element
+library`_ contains a lot of nice recipes that show how to solve common
+tasks in ElementTree and lxml.etree.  To learn using
+``lxml.objectify``, read the `objectify documentation`_.
+
+John Shipman has written another tutorial called `Python XML
+processing with lxml`_ that contains lots of examples.  Liza Daly
+wrote a nice article about high-performance aspects when `parsing
+large files with lxml`_.
+
+.. _`lxml.etree Tutorial`:      tutorial.html
+.. _`tutorial for ElementTree`: http://effbot.org/zone/element.htm
+.. _`extended etree API`:        api.html
+.. _`objectify documentation`:  objectify.html
+.. _`Python XML processing with lxml`: http://www.nmt.edu/tcc/help/pubs/pylxml/
+.. _`element library`:          http://effbot.org/zone/element-lib.htm
+.. _`parsing large files with lxml`: http://www.ibm.com/developerworks/xml/library/x-hiperfparse/
+
+
+Where can I find more documentation about lxml?
+-----------------------------------------------
+
+There is a lot of documentation on the web and also in the Python
+standard library documentation, as lxml implements the well-known
+`ElementTree API`_ and tries to follow its documentation as closely as
+possible.  The recipes in Fredrik Lundh's `element library`_ are
+generally worth taking a look at.  There are a couple of issues where
+lxml cannot keep up compatibility.  They are described in the
+compatibility_ documentation.
+
+The lxml specific extensions to the API are described by individual
+files in the ``doc`` directory of the source distribution and on `the
+web page`_.
+
+The `generated API documentation`_ is a comprehensive API reference
+for the lxml package.
+
+.. _`ElementTree API`: http://effbot.org/zone/element-index.htm
+.. _`the web page`:    http://codespeak.net/lxml/#documentation
+.. _`generated API documentation`: api/index.html
+
+
+What standards does lxml implement?
+-----------------------------------
+
+The compliance to XML Standards depends on the support in libxml2 and libxslt.
+Here is a quote from `http://xmlsoft.org/ <http://xmlsoft.org/>`_:
+
+  In most cases libxml2 tries to implement the specifications in a relatively
+  strictly compliant way. As of release 2.4.16, libxml2 passed all 1800+ tests
+  from the OASIS XML Tests Suite.
+
+lxml currently supports libxml2 2.6.20 or later, which has even better
+support for various XML standards.  The important ones are:
+
+* XML 1.0
+* HTML 4
+* XML namespaces
+* XML Schema 1.0
+* XPath 1.0
+* XInclude 1.0
+* XSLT 1.0
+* EXSLT
+* XML catalogs
+* canonical XML
+* RelaxNG
+* xml:id
+* xml:base
+
+Support for XML Schema is currently not 100% complete in libxml2, but
+is definitely very close to compliance.  Schematron is supported in
+two ways, the best being the original ISO Schematron reference
+implementation via XSLT.  libxml2 also supports loading documents
+through HTTP and FTP.
+
+
+Who uses lxml?
+--------------
+
+As an XML library, lxml is often used under the hood of in-house
+server applications, such as web servers or applications that
+facilitate some kind of document management.  Many people who deploy
+Zope_ or Plone_ use it together with lxml.  Therefore, it is hard to
+get an idea of who uses it, and the following list of 'users and
+projects we know of' is very far from a complete list of lxml's users.
+
+Also note that the compatibility to the ElementTree library does not
+require projects to set a hard dependency on lxml - as long as they do
+not take advantage of lxml's enhanced feature set.
+
+* cssutils_, a CSS parser and toolkit, can be used with ``lxml.cssselect``
+* Deliverance_, a content theming tool
+* `Enfold Proxy 4`_, a web server accelerator with on-the-fly XSLT processing
+* Inteproxy_, a secure HTTP proxy
+* lwebstring_, an XML template engine
+* OpenXMLlib_, a library for handling OpenXML document meta data
+* Pycoon_, a WSGI web development framework based on XML pipelines
+* PyQuery_, a query framework for XML/HTML, similar to jQuery for JavaScript
+* `python-docx`_, a package for handling Microsoft's Word OpenXML format
+* Rambler_, a meta search engine that aggregates different data sources
+* rdfadict_, an RDFa parser with a simple dictionary-like interface.
+* `xupdate-processor`_, an XUpdate implementation for lxml.etree
+
+Zope3 and some of its extensions have good support for lxml:
+
+* gocept.lxml_, Zope3 interface bindings for lxml
+* z3c.rml_, an implementation of ReportLab's RML format
+* zif.sedna_, an XQuery based interface to the Sedna OpenSource XML database
+
+And don't miss the quotes by our generally happy_ users_, and other
+`sites that link to lxml`_.  As `Liza Daly`_ puts it: "Many software
+products come with the pick-two caveat, meaning that you must choose
+only two: speed, flexibility, or readability.  When used carefully,
+lxml can provide all three."
+
+.. _Zope: http://www.zope.org/
+.. _Plone: http://www.plone.org/
+.. _cssutils: http://code.google.com/p/cssutils/source/browse/trunk/examples/style.py?r=917
+.. _Deliverance: http://www.openplans.org/projects/deliverance/project-home
+.. _`Enfold Proxy 4`: http://www.enfoldsystems.com/Products/Proxy/4
+.. _gocept.lxml: http://pypi.python.org/pypi/gocept.lxml
+.. _Inteproxy: http://lists.wald.intevation.org/pipermail/inteproxy-devel/2007-February/000000.html
+.. _lwebstring: http://pypi.python.org/pypi/lwebstring
+.. _OpenXMLlib: http://permalink.gmane.org/gmane.comp.python.lxml.devel/3250
+.. _Pycoon: http://pypi.python.org/pypi/pycoon
+.. _PyQuery: http://pypi.python.org/pypi/pyquery
+.. _Rambler: http://beta.rambler.ru/srch?query=python+lxml&searchtype=web
+.. _rdfadict: http://pypi.python.org/pypi/rdfadict
+.. _z3c.rml: http://pypi.python.org/pypi/z3c.rml
+.. _zif.sedna: http://pypi.python.org/pypi/zif.sedna
+.. _`python-docx`: http://github.com/mikemaccana/python-docx
+.. _`xupdate-processor`: http://pypi.python.org/pypi/xupdate-processor
+
+.. _happy: http://thread.gmane.org/gmane.comp.python.lxml.devel/3244/focus=3244
+.. _users: http://article.gmane.org/gmane.comp.python.lxml.devel/3246
+.. _`sites that link to lxml`: http://www.google.com/search?as_lq=http:%2F%2Flxml.de%2F
+.. _`Liza Daly`: http://www.ibm.com/developerworks/xml/library/x-hiperfparse/
+
+
+What is the difference between lxml.etree and lxml.objectify?
+-------------------------------------------------------------
+
+The two modules provide different ways of handling XML.  However, objectify
+builds on top of lxml.etree and therefore inherits most of its capabilities
+and a large portion of its API.
+
+* lxml.etree is a generic API for XML and HTML handling.  It aims for
+  ElementTree compatibility_ and supports the entire XML infoset.  It is well
+  suited for both mixed content and data centric XML.  Its generality makes it
+  the best choice for most applications.
+
+* lxml.objectify is a specialized API for XML data handling in a Python object
+  syntax.  It provides a very natural way to deal with data fields stored in a
+  structurally well defined XML format.  Data is automatically converted to
+  Python data types and can be manipulated with normal Python operators.  Look
+  at the examples in the `objectify documentation`_ to see what it feels like
+  to use it.
+
+  Objectify is not well suited for mixed contents or HTML documents.  As it is
+  built on top of lxml.etree, however, it inherits the normal support for
+  XPath, XSLT or validation.
+
+
+How can I make my application run faster?
+-----------------------------------------
+
+lxml.etree is a very fast library for processing XML.  There are, however, `a
+few caveats`_ involved in the mapping of the powerful libxml2 library to the
+simple and convenient ElementTree API.  Not all operations are as fast as the
+simplicity of the API might suggest, while some use cases can heavily benefit
+from finding the right way of doing them.  The `benchmark page`_ has a
+comparison to other ElementTree implementations and a number of tips for
+performance tweaking.  As with any Python application, the rule of thumb is:
+the more of your processing runs in C, the faster your application gets.  See
+also the section on threading_.
+
+.. _`a few caveats`:  performance.html#the-elementtree-api
+.. _`benchmark page`: performance.html
+.. _threading:        #threading
+
+
+What about that trailing text on serialised Elements?
+-----------------------------------------------------
+
+The ElementTree tree model defines an Element as a container with a tag name,
+contained text, child Elements and a tail text.  This means that whenever you
+serialise an Element, you will get all parts of that Element:
+
+.. sourcecode:: pycon
+
+    >>> root = etree.XML("<root><tag>text<child/></tag>tail</root>")
+    >>> print(etree.tostring(root[0]))
+    <tag>text<child/></tag>tail
+
+Here is an example that shows why not serialising the tail would be
+even more surprising from an object point of view:
+
+.. sourcecode:: pycon
+
+    >>> root = etree.Element("test")
+
+    >>> root.text = "TEXT"
+    >>> print(etree.tostring(root))
+    <test>TEXT</test>
+
+    >>> root.tail = "TAIL"
+    >>> print(etree.tostring(root))
+    <test>TEXT</test>TAIL
+
+    >>> root.tail = None
+    >>> print(etree.tostring(root))
+    <test>TEXT</test>
+
+Just imagine a Python list where you append an item and it doesn't
+show up when you look at the list.
+
+The ``.tail`` property is a huge simplification for the tree model as
+it avoids text nodes to appear in the list of children and makes
+access to them quick and simple.  So this is a benefit in most
+applications and simplifies many, many XML tree algorithms.
+
+However, in document-like XML (and especially HTML), the above result can be
+unexpected to new users and can sometimes require a bit more overhead.  A good
+way to deal with this is to use helper functions that copy the Element without
+its tail.  The ``lxml.html`` package also deals with this in a couple of
+places, as most HTML algorithms benefit from a tail-free behaviour.
+
+
+How can I find out if an Element is a comment or PI?
+----------------------------------------------------
+
+.. sourcecode:: pycon
+
+    >>> root = etree.XML("<?my PI?><root><!-- empty --></root>")
+
+    >>> root.tag
+    'root'
+    >>> root.getprevious().tag is etree.PI
+    True
+    >>> root[0].tag is etree.Comment
+    True
+
+
+How can I map an XML tree into a dict of dicts?
+-----------------------------------------------
+
+I'm glad you asked.
+
+.. sourcecode:: python
+
+    def recursive_dict(element):
+         return element.tag, \
+                dict(map(recursive_dict, element)) or element.text
+
+
+Installation
+============
+
+Which version of libxml2 and libxslt should I use or require?
+-------------------------------------------------------------
+
+It really depends on your application, but the rule of thumb is: more recent
+versions contain less bugs and provide more features.
+
+* Do not use libxml2 2.6.27 if you want to use XPath (including XSLT).  You
+  will get crashes when XPath errors occur during the evaluation (e.g. for
+  unknown functions).  This happens inside the evaluation call to libxml2, so
+  there is nothing that lxml can do about it.
+
+* Try to use versions of both libraries that were released together.  At least
+  the libxml2 version should not be older than the libxslt version.
+
+* If you use XML Schema or Schematron which are still under development, the
+  most recent version of libxml2 is usually a good bet.
+
+* The same applies to XPath, where a substantial number of bugs and memory
+  leaks were fixed over time.  If you encounter crashes or memory leaks in
+  XPath applications, try a more recent version of libxml2.
+
+* For parsing and fixing broken HTML, lxml requires at least libxml2 2.6.21.
+
+* For the normal tree handling, however, any libxml2 version starting with
+  2.6.20 should do.
+
+Read the `release notes of libxml2`_ and the `release notes of libxslt`_ to
+see when (or if) a specific bug has been fixed.
+
+.. _`release notes of libxml2`: http://xmlsoft.org/news.html
+.. _`release notes of libxslt`: http://xmlsoft.org/XSLT/news.html
+
+
+Where are the binary builds?
+----------------------------
+
+Sidnei da Silva regularly contributes Windows binaries for new
+releases.  This is because two of the major problems of Microsoft
+Windows make it non-trivial for users to build lxml on this platform:
+the lack of a pre-installed standard compiler and the missing package
+management.
+
+If there is not currently a binary distribution of the most recent
+lxml release for this platform available from the Python Package Index
+(PyPI), please look through the older versions to see if they provide
+a binary build.  This is done by appending the version number to the
+PyPI URL, e.g.::
+
+         http://pypi.python.org/pypi/lxml/2.1.5
+
+Christoph Gohlke also provides `unofficial lxml binary builds for
+Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml>`_ that are
+usually very up to date.
+
+Apart from that, we generally do not provide binary builds of lxml, as
+most of the other operating systems out there can build lxml without
+problems (with the exception of `MacOS-X`_), and the sheer mass of
+variations between platforms makes it futile to provide builds for
+everyone.
+
+
+Why do I get errors about missing UCS4 symbols when installing lxml?
+--------------------------------------------------------------------
+
+Most likely, you use a Python installation that was configured for internal
+use of UCS2 unicode, meaning 16-bit unicode.  The lxml egg distributions are
+generally compiled on platforms that use UCS4, a 32-bit unicode encoding, as
+this is used on the majority of platforms.  Sadly, both are not compatible, so
+the eggs can only support the one they were compiled with.
+
+This means that you have to compile lxml from sources for your system.  Note
+that you do not need Cython for this, the lxml source distribution is directly
+compilable on both platform types.  See the `build instructions`_ on how to do
+this.
+
+
+Contributing
+============
+
+Why is lxml not written in Python?
+----------------------------------
+
+It *almost* is.
+
+lxml is not written in plain Python, because it interfaces with two C
+libraries: libxml2 and libxslt.  Accessing them at the C-level is
+required for performance reasons.
+
+However, to avoid writing plain C-code and caring too much about the
+details of built-in types and reference counting, lxml is written in
+Cython_, a Python-like language that is translated into C-code.
+Chances are that if you know Python, you can write `code that Cython
+accepts`_.  Again, the C-ish style used in the lxml code is just for
+performance optimisations.  If you want to contribute, don't bother
+with the details, a Python implementation of your contribution is
+better than none.  And keep in mind that lxml's flexible API often
+favours an implementation of features in pure Python, without
+bothering with C-code at all.  For example, the ``lxml.html`` package
+is entirely written in Python.
+
+Please contact the `mailing list`_ if you need any help.
+
+.. _Cython: http://www.cython.org/
+.. _`code that Cython accepts`: http://docs.cython.org/docs/tutorial.html
+
+
+How can I contribute?
+---------------------
+
+If you find something that you would like lxml to do (or do better),
+then please tell us about it on the `mailing list`_.  Patches are
+always appreciated, especially when accompanied by unit tests and
+documentation (doctests would be great).  See the ``tests``
+subdirectories in the lxml source tree (below the ``src`` directory)
+and the ReST_ `text files`_ in the ``doc`` directory.
+
+We also have a `list of missing features`_ that we would like to
+implement but didn't due to lack if time.  If *you* find the time,
+patches are very welcome.
+
+.. _ReST: http://docutils.sourceforge.net/rst.html
+.. _`text files`: http://codespeak.net/svn/lxml/trunk/doc/
+.. _`list of missing features`: http://codespeak.net/svn/lxml/trunk/IDEAS.txt
+
+Besides enhancing the code, there are a lot of places where you can help the
+project and its user base.  You can
+
+* spread the word and write about lxml.  Many users (especially new Python
+  users) have not yet heared about lxml, although our user base is constantly
+  growing.  If you write your own blog and feel like saying something about
+  lxml, go ahead and do so.  If we think your contribution or criticism is
+  valuable to other users, we may even put a link or a quote on the project
+  page.
+
+* provide code examples for the general usage of lxml or specific problems
+  solved with lxml.  Readable code is a very good way of showing how a library
+  can be used and what great things you can do with it.  Again, if we hear
+  about it, we can set a link on the project page.
+
+* work on the documentation.  The web page is generated from a set of ReST_
+  `text files`_.  It is meant both as a representative project page for lxml
+  and as a site for documenting lxml's API and usage.  If you have questions
+  or an idea how to make it more readable and accessible while you are reading
+  it, please send a comment to the `mailing list`_.
+
+* enhance the web site. We put some work into making the web site
+  usable, understandable and also easy to find, but there's always
+  things that can be done better.  You may notice that we are not
+  top-ranked when searching the web for "Python and XML", so maybe you
+  have an idea how to improve that.
+
+* help with the tutorial.  A tutorial is the most important stating point for
+  new users, so it is important for us to provide an easy to understand guide
+  into lxml.  As allo documentation, the tutorial is work in progress, so we
+  appreciate every helping hand.
+
+* improve the docstrings.  lxml uses docstrings to support Python's integrated
+  online ``help()`` function.  However, sometimes these are not sufficient to
+  grasp the details of the function in question.  If you find such a place,
+  you can try to write up a better description and send it to the `mailing
+  list`_.
+
+
+Bugs
+====
+
+My application crashes!
+-----------------------
+
+One of the goals of lxml is "no segfaults", so if there is no clear
+warning in the documentation that you were doing something potentially
+harmful, you have found a bug and we would like to hear about it.
+Please report this bug to the `mailing list`_.  See the section on bug
+reporting to learn how to do that.
+
+If your application (or e.g. your web container) uses threads, please
+see the FAQ section on threading_ to check if you touch on one of the
+potential pitfalls.
+
+In any case, try to reproduce the problem with the latest versions of
+libxml2 and libxslt.  From time to time, bugs and race conditions are found
+in these libraries, so a more recent version might already contain a fix for
+your problem.
+
+Remember: even if you see lxml appear in a crash stack trace, it is
+not necessarily lxml that *caused* the crash.
+
+
+My application crashes on MacOS-X!
+----------------------------------
+
+This was a common problem up to lxml 2.1.x.  Since lxml 2.2, the only
+officially supported way to use it on this platform is through a
+static build against freshly downloaded versions of libxml2 and
+libxslt.  See the build instructions for `MacOS-X`_.
+
+
+I think I have found a bug in lxml. What should I do?
+-----------------------------------------------------
+
+First, you should look at the `current developer changelog`_ to see if this
+is a known problem that has already been fixed in the SVN trunk since the
+release you are using.
+
+.. _`current developer changelog`: http://codespeak.net/svn/lxml/trunk/CHANGES.txt
+
+Also, the 'crash' section above has a few good advices what to try to see if
+the problem is really in lxml - and not in your setup.  Believe it or not,
+that happens more often than you might think, especially when old libraries
+or even multiple library versions are installed.
+
+You should always try to reproduce the problem with the latest
+versions of libxml2 and libxslt - and make sure they are used.
+``lxml.etree`` can tell you what it runs with:
+
+.. sourcecode:: python
+
+   import sys
+   from lxml import etree
+
+   print("%-20s: %s" % ('Python',           sys.version_info))
+   print("%-20s: %s" % ('lxml.etree',       etree.LXML_VERSION))
+   print("%-20s: %s" % ('libxml used',      etree.LIBXML_VERSION))
+   print("%-20s: %s" % ('libxml compiled',  etree.LIBXML_COMPILED_VERSION))
+   print("%-20s: %s" % ('libxslt used',     etree.LIBXSLT_VERSION))
+   print("%-20s: %s" % ('libxslt compiled', etree.LIBXSLT_COMPILED_VERSION))
+
+If you can figure that the problem is not in lxml but in the
+underlying libxml2 or libxslt, you can ask right on the respective
+mailing lists, which may considerably reduce the time to find a fix or
+work-around.  See the next question for some hints on how to do that.
+
+Otherwise, we would really like to hear about it.  Please report it to
+the `mailing list`_ so that we can fix it.  It is very helpful in this
+case if you can come up with a short code snippet that demonstrates
+your problem.  If others can reproduce and see the problem, it is much
+easier for them to fix it - and maybe even easier for you to describe
+it and get people convinced that it really is a problem to fix.
+
+It is important that you always report the version of lxml, libxml2
+and libxslt that you get from the code snippet above.  If we do not
+know the library versions you are using, we will ask back, so it will
+take longer for you to get a helpful answer.
+
+Since as a user of lxml you are likely a programmer, you might find
+`this article on bug reports`_ an interesting read.
+
+.. _`mailing list`: http://codespeak.net/mailman/listinfo/lxml-dev
+.. _`this article on bug reports`: http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
+
+
+How do I know a bug is really in lxml and not in libxml2?
+---------------------------------------------------------
+
+A large part of lxml's functionality is implemented by libxml2 and
+libxslt, so problems that you encounter may be in one or the other.
+Knowing the right place to ask will reduce the time it takes to fix
+the problem, or to find a work-around.
+
+Both libxml2 and libxslt come with their own command line frontends,
+namely ``xmllint`` and ``xsltproc``.  If you encounter problems with
+XSLT processing for specific stylesheets or with validation for
+specific schemas, try to run the XSLT with ``xsltproc`` or the
+validation with ``xmllint`` respectively to find out if it fails there
+as well.  If it does, please report directly to the mailing lists of
+the respective project, namely:
+
+* `libxml2 mailing list <http://mail.gnome.org/mailman/listinfo/xml>`_
+* `libxslt mailing list <http://mail.gnome.org/mailman/listinfo/xslt>`_
+
+On the other hand, everything that seems to be related to Python code,
+including custom resolvers, custom XPath functions, etc. is likely
+outside of the scope of libxml2/libxslt.  If you encounter problems
+here or you are not sure where there the problem may come from, please
+ask on the lxml mailing list first.
+
+In any case, a good explanation of the problem including some simple
+test code and some input data will help us (or the libxml2 developers)
+see and understand the problem, which largely increases your chance of
+getting help.  See the question above for a few hints on what is
+helpful here.
+
+
+Threading
+=========
+
+Can I use threads to concurrently access the lxml API?
+------------------------------------------------------
+
+Short answer: yes, if you use lxml 2.2 and later.
+
+Since version 1.1, lxml frees the GIL (Python's global interpreter
+lock) internally when parsing from disk and memory, as long as you use
+either the default parser (which is replicated for each thread) or
+create a parser for each thread yourself.  lxml also allows
+concurrency during validation (RelaxNG and XMLSchema) and XSL
+transformation.  You can share RelaxNG, XMLSchema and XSLT objects
+between threads.
+
+While you can also share parsers between threads, this will serialize
+the access to each of them, so it is better to ``.copy()`` parsers or
+to just use the default parser if you do not need any special
+configuration.  The same applies to the XPath evaluators, which use an
+internal lock to protect their prepared evaluation contexts.  It is
+therefore best to use separate evaluator instances in threads.
+
+Warning: Before lxml 2.2, and especially before 2.1, there were
+various issues when moving subtrees between different threads, or when
+applying XSLT objects from one thread to trees parsed or modified in
+another.  If you need code to run with older versions, you should
+generally avoid modifying trees in other threads than the one it was
+generated in.  Although this should work in many cases, there are
+certain scenarios where the termination of a thread that parsed a tree
+can crash the application if subtrees of this tree were moved to other
+documents.  You should be on the safe side when passing trees between
+threads if you either
+
+- do not modify these trees and do not move their elements to other
+  trees, or
+
+- do not terminate threads while the trees they parsed are still in
+  use (e.g. by using a fixed size thread-pool or long-running threads
+  in processing chains)
+
+Since lxml 2.2, even multi-thread pipelines are supported. However,
+note that it is more efficient to do all tree work inside one thread,
+than to let multiple threads work on a tree one after the other. This
+is because trees inherit state from the thread that created them,
+which must be maintained when the tree is modified inside another
+thread.
+
+
+Does my program run faster if I use threads?
+--------------------------------------------
+
+Depends.  The best way to answer this is timing and profiling.
+
+The global interpreter lock (GIL) in Python serializes access to the
+interpreter, so if the majority of your processing is done in Python
+code (walking trees, modifying elements, etc.), your gain will be
+close to zero.  The more of your XML processing moves into lxml,
+however, the higher your gain.  If your application is bound by XML
+parsing and serialisation, or by very selective XPath expressions and
+complex XSLTs, your speedup on multi-processor machines can be
+substantial.
+
+See the question above to learn which operations free the GIL to support
+multi-threading.
+
+
+Would my single-threaded program run faster if I turned off threading?
+----------------------------------------------------------------------
+
+Possibly, yes.  You can see for yourself by compiling lxml entirely
+without threading support.  Pass the ``--without-threading`` option to
+setup.py when building lxml from source.  You can also build libxml2
+without pthread support (``--without-pthreads`` option), which may add
+another bit of performance.  Note that this will leave internal data
+structures entirely without thread protection, so make sure you really
+do not use lxml outside of the main application thread in this case.
+
+
+Why can't I reuse XSLT stylesheets in other threads?
+----------------------------------------------------
+
+Since later lxml 2.0 versions, you can do this.  There is some
+overhead involved as the result document needs an additional cleanup
+traversal when the input document and/or the stylesheet were created
+in other threads.  However, on a multi-processor machine, the gain of
+freeing the GIL easily covers this drawback.
+
+If you need even the last bit of performance, consider keeping (a copy
+of) the stylesheet in thread-local storage, and try creating the input
+document(s) in the same thread.  And do not forget to benchmark your
+code to see if the increased code complexity is really worth it.
+
+
+My program crashes when run with mod_python/Pyro/Zope/Plone/...
+---------------------------------------------------------------
+
+These environments can use threads in a way that may not make it obvious when
+threads are created and what happens in which thread.  This makes it hard to
+ensure lxml's threading support is used in a reliable way.  Sadly, if problems
+arise, they are as diverse as the applications, so it is difficult to provide
+any generally applicable solution.  Also, these environments are so complex
+that problems become hard to debug and even harder to reproduce in a
+predictable way.  If you encounter crashes in one of these systems, but your
+code runs perfectly when started by hand, the following gives you a few hints
+for possible approaches to solve your specific problem:
+
+* make sure you use recent versions of libxml2, libxslt and lxml.  The
+  libxml2 developers keep fixing bugs in each release, and lxml also
+  tries to become more robust against possible pitfalls.  So newer
+  versions might already fix your problem in a reliable way.  Version
+  2.2 of lxml contains many improvements.
+
+* make sure the library versions you installed are really used.  Do
+  not rely on what your operating system tells you!  Print the version
+  constants in ``lxml.etree`` from within your runtime environment to
+  make sure it is the case.  This is especially a problem under
+  MacOS-X when newer library versions were installed in addition to
+  the outdated system libraries.  Please read the bugs section
+  regarding MacOS-X in this FAQ.
+
+* if you use ``mod_python``, try setting this option:
+
+      PythonInterpreter main_interpreter
+
+  There was a discussion on the mailing list about this problem:
+
+      http://comments.gmane.org/gmane.comp.python.lxml.devel/2942
+
+* compile lxml without threading support by running ``setup.py`` with the
+  ``--without-threading`` option.  While this might be slower in certain
+  scenarios on multi-processor systems, it *might* also keep your application
+  from crashing, which should be worth more to you than peek performance.
+  Remember that lxml is fast anyway, so concurrency may not even be worth it.
+
+* look out for fancy XSLT stuff like foreign document access or
+  passing in subtrees trough XSLT variables.  This might or might not
+  work, depending on your specific usage.  Again, later versions of
+  lxml and libxslt provide safer support here.
+
+* try copying trees at suspicious places in your code and working with
+  those instead of a tree shared between threads.  Note that the
+  copying must happen inside the target thread to be effective, not in
+  the thread that created the tree.  Serialising in one thread and
+  parsing in another is also a simple (and fast) way of separating
+  thread contexts.
+
+* try keeping thread-local copies of XSLT stylesheets, i.e. one per thread,
+  instead of sharing one.  Also see the question above.
+
+* you can try to serialise suspicious parts of your code with explicit thread
+  locks, thus disabling the concurrency of the runtime system.
+
+* report back on the mailing list to see if there are other ways to work
+  around your specific problems.  Do not forget to report the version numbers
+  of lxml, libxml2 and libxslt you are using (see the question on reporting
+  a bug).
+
+Note that most of these options will degrade performance and/or your
+code quality.  If you are unsure what to do, please ask on the mailing
+list.
+
+
+Parsing and Serialisation
+=========================
+
+..
+    making doctest happy:
+
+    >>> try: from StringIO import StringIO
+    ... except ImportError: from io import StringIO # Py3
+    >>> filename = StringIO("<root/>")
+
+
+Why doesn't the ``pretty_print`` option reformat my XML output?
+---------------------------------------------------------------
+
+Pretty printing (or formatting) an XML document means adding white space to
+the content.  These modifications are harmless if they only impact elements in
+the document that do not carry (text) data.  They corrupt your data if they
+impact elements that contain data.  If lxml cannot distinguish between
+whitespace and data, it will not alter your data.  Whitespace is therefore
+only added between nodes that do not contain data.  This is always the case
+for trees constructed element-by-element, so no problems should be expected
+here.  For parsed trees, a good way to assure that no conflicting whitespace
+is left in the tree is the ``remove_blank_text`` option:
+
+.. sourcecode:: pycon
+
+   >>> parser = etree.XMLParser(remove_blank_text=True)
+   >>> tree = etree.parse(filename, parser)
+
+This will allow the parser to drop blank text nodes when constructing the
+tree.  If you now call a serialization function to pretty print this tree,
+lxml can add fresh whitespace to the XML tree to indent it.
+
+Note that the ``remove_blank_text`` option also uses a heuristic if it
+has no definite knowledge about the document's ignorable whitespace.
+It will keep blank text nodes that appear after non-blank text nodes
+at the same level.  This is to prevent document-style XML from
+breaking.
+
+If you want to be sure all blank text is removed, you have to use
+either a DTD to tell the parser which whitespace it can safely ignore,
+or remove the ignorable whitespace manually after parsing, e.g. by
+setting all tail text to None::
+
+.. sourcecode:: python
+
+   for element in root.iter():
+       element.tail = None
+
+Fredrik Lundh also has a Python-level function for indenting XML by
+appending whitespace to tags.  It can be found on his `element
+library`_ recipe page.
+
+
+Why can't lxml parse my XML from unicode strings?
+-------------------------------------------------
+
+lxml can read Python unicode strings and even tries to support them if libxml2
+does not.  However, if the unicode string declares an XML encoding internally
+(``<?xml encoding="..."?>``), parsing is bound to fail, as this encoding is
+most likely not the real encoding used in Python unicode.  The same is true
+for HTML unicode strings that contain charset meta tags, although the problems
+may be more subtle here.  The libxml2 HTML parser may not be able to parse the
+meta tags in broken HTML and may end up ignoring them, so even if parsing
+succeeds, later handling may still fail with character encoding errors.
+
+Note that Python uses different encodings for unicode on different platforms,
+so even specifying the real internal unicode encoding is not portable between
+Python interpreters.  Don't do it.
+
+Python unicode strings with XML data or HTML data that carry encoding
+information are broken.  lxml will not parse them.  You must provide parsable
+data in a valid encoding.
+
+
+What is the difference between str(xslt(doc)) and xslt(doc).write() ?
+---------------------------------------------------------------------
+
+The str() implementation of the XSLTResultTree class (a subclass of the
+ElementTree class) knows about the output method chosen in the stylesheet
+(xsl:output), write() doesn't.  If you call write(), the result will be a
+normal XML tree serialization in the requested encoding.  Calling this method
+may also fail for XSLT results that are not XML trees (e.g. string results).
+
+If you call str(), it will return the serialized result as specified by the
+XSL transform.  This correctly serializes string results to encoded Python
+strings and honours ``xsl:output`` options like ``indent``.  This almost
+certainly does what you want, so you should only use ``write()`` if you are
+sure that the XSLT result is an XML tree and you want to override the encoding
+and indentation options requested by the stylesheet.
+
+
+Why can't I just delete parents or clear the root node in iterparse()?
+----------------------------------------------------------------------
+
+The ``iterparse()`` implementation is based on the libxml2 parser.  It
+requires the tree to be intact to finish parsing.  If you delete or modify
+parents of the current node, chances are you modify the structure in a way
+that breaks the parser.  Normally, this will result in a segfault.  Please
+refer to the `iterparse section`_ of the lxml API documentation to find out
+what you can do and what you can't do.
+
+.. _`iterparse section`: parsing.html#iterparse-and-iterwalk
+
+
+How do I output null characters in XML text?
+--------------------------------------------
+
+Don't.  What you would produce is not well-formed XML.  XML parsers
+will refuse to parse a document that contains null characters.  The
+right way to embed binary data in XML is using a text encoding such as
+uuencode or base64.
+
+
+Is lxml vulnerable to XML bombs?
+--------------------------------
+
+This has nothing to do with lxml itself, only with the parser of
+libxml2.  Since libxml2 version 2.7, the parser imposes hard security
+limits on input documents to prevent DoS attacks with forged input
+data.  Since lxml 2.2.1, you can disable these limits with the
+``huge_tree`` parser option if you need to parse *really* large,
+trusted documents.  All lxml versions will leave these restrictions
+enabled by default.
+
+Note that libxml2 versions of the 2.6 series do not restrict their
+parser and are therefore vulnerable to DoS attacks.
+
+
+XPath and Document Traversal
+============================
+
+What are the ``findall()`` and ``xpath()`` methods on Element(Tree)?
+--------------------------------------------------------------------
+
+``findall()`` is part of the original `ElementTree API`_.  It supports a
+`simple subset of the XPath language`_, without predicates, conditions and
+other advanced features.  It is very handy for finding specific tags in a
+tree.  Another important difference is namespace handling, which uses the
+``{namespace}tagname`` notation.  This is not supported by XPath.  The
+findall, find and findtext methods are compatible with other ElementTree
+implementations and allow writing portable code that runs on ElementTree,
+cElementTree and lxml.etree.
+
+``xpath()``, on the other hand, supports the complete power of the XPath
+language, including predicates, XPath functions and Python extension
+functions.  The syntax is defined by the `XPath specification`_.  If you need
+the expressiveness and selectivity of XPath, the ``xpath()`` method, the
+``XPath`` class and the ``XPathEvaluator`` are the best choice_.
+
+.. _`simple subset of the XPath language`: http://effbot.org/zone/element-xpath.htm
+.. _`XPath specification`:                 http://www.w3.org/TR/xpath
+.. _choice:                                performance.html#xpath
+
+
+Why doesn't ``findall()`` support full XPath expressions?
+---------------------------------------------------------
+
+It was decided that it is more important to keep compatibility with
+ElementTree_ to simplify code migration between the libraries.  The main
+difference compared to XPath is the ``{namespace}tagname`` notation used in
+``findall()``, which is not valid XPath.
+
+ElementTree and lxml.etree use the same implementation, which assures 100%
+compatibility.  Note that ``findall()`` is `so fast`_ in lxml that a native
+implementation would not bring any performance benefits.
+
+.. _`so fast`: performance.html#tree-traversal
+
+
+How can I find out which namespace prefixes are used in a document?
+-------------------------------------------------------------------
+
+You can traverse the document (``root.iter()``) and collect the prefix
+attributes from all Elements into a set.  However, it is unlikely that you
+really want to do that.  You do not need these prefixes, honestly.  You only
+need the namespace URIs.  All namespace comparisons use these, so feel free to
+make up your own prefixes when you use XPath expressions or extension
+functions.
+
+The only place where you might consider specifying prefixes is the
+serialization of Elements that were created through the API.  Here, you can
+specify a prefix mapping through the ``nsmap`` argument when creating the root
+Element.  Its children will then inherit this prefix for serialization.
+
+
+How can I specify a default namespace for XPath expressions?
+------------------------------------------------------------
+
+You can't.  In XPath, there is no such thing as a default namespace.  Just use
+an arbitrary prefix and let the namespace dictionary of the XPath evaluators
+map it to your namespace.  See also the question above.
diff --git a/doc/sphinx/_sources/api.txt b/doc/sphinx/_sources/api.txt
new file mode 100644 (file)
index 0000000..a3aa280
--- /dev/null
@@ -0,0 +1,549 @@
+===========================
+APIs specific to lxml.etree
+===========================
+
+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
+new API.  This page describes the major differences and a few additions to the
+main ElementTree API.
+
+For a complete reference of the API, see the `generated API
+documentation`_.
+
+Separate pages describe the support for `parsing XML`_, executing `XPath and
+XSLT`_, `validating XML`_ and interfacing with other XML tools through the
+`SAX-API`_.
+
+lxml is extremely extensible through `XPath functions in Python`_, custom
+`Python element classes`_, custom `URL resolvers`_ and even `at the C-level`_.
+
+.. _`parsing XML`: parsing.html
+.. _`XPath and XSLT`: xpathxslt.html
+.. _`validating XML`: validation.html
+.. _`SAX-API`: sax.html
+.. _`XPath functions in Python`: extensions.html
+.. _`Python element classes`: element_classes.html
+.. _`at the C-level`: capi.html
+.. _`URL resolvers`: resolvers.html
+.. _`generated API documentation`: api/index.html
+
+
+.. contents::
+.. 
+   1   lxml.etree
+   2   Other Element APIs
+   3   Trees and Documents
+   4   Iteration
+   5   Error handling on exceptions
+   6   Error logging
+   7   Serialisation
+   8   CDATA
+   9   XInclude and ElementInclude
+   10  write_c14n on ElementTree
+
+..
+  >>> try: from StringIO import StringIO
+  ... except ImportError:
+  ...    from io import BytesIO
+  ...    def StringIO(s=None):
+  ...        if isinstance(s, str): s = s.encode("UTF-8")
+  ...        return BytesIO(s)
+
+  >>> try: from collections import deque
+  ... except ImportError:
+  ...    class deque(list):
+  ...        def popleft(self): return self.pop(0)
+
+  >>> try: unicode = __builtins__["unicode"]
+  ... except (NameError, KeyError): unicode = str
+
+
+lxml.etree
+----------
+
+lxml.etree tries to follow the `ElementTree API`_ wherever it can.  There are
+however some incompatibilities (see `compatibility`_).  The extensions are
+documented here.
+
+.. _`ElementTree API`: http://effbot.org/zone/element-index.htm
+.. _`compatibility`:   compatibility.html
+
+If you need to know which version of lxml is installed, you can access the
+``lxml.etree.LXML_VERSION`` attribute to retrieve a version tuple.  Note,
+however, that it did not exist before version 1.0, so you will get an
+AttributeError in older versions.  The versions of libxml2 and libxslt are
+available through the attributes ``LIBXML_VERSION`` and ``LIBXSLT_VERSION``.
+
+The following examples usually assume this to be executed first:
+
+.. sourcecode:: pycon
+
+  >>> from lxml import etree
+
+..
+  >>> import sys
+  >>> from lxml import etree as _etree
+  >>> if sys.version_info[0] >= 3:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if isinstance(s, bytes) and bytes([10]) in s: s = s.decode("utf-8") # CR
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  ... else:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  >>> etree = etree_mock()
+
+
+Other Element APIs
+------------------
+
+While lxml.etree itself uses the ElementTree API, it is possible to replace
+the Element implementation by `custom element subclasses`_.  This has been
+used to implement well-known XML APIs on top of lxml.  For example, lxml ships
+with a data-binding implementation called `objectify`_, which is similar to
+the `Amara bindery`_ tool.
+
+lxml.etree comes with a number of `different lookup schemes`_ to customize the
+mapping between libxml2 nodes and the Element classes used by lxml.etree.
+
+.. _`custom element subclasses`: element_classes.html
+.. _`objectify`: objectify.html
+.. _`different lookup schemes`: element_classes.html#setting-up-a-class-lookup-scheme
+.. _`Amara bindery`: http://uche.ogbuji.net/tech/4suite/amara/
+
+
+Trees and Documents
+-------------------
+
+Compared to the original ElementTree API, lxml.etree has an extended tree
+model.  It knows about parents and siblings of elements:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.Element("root")
+  >>> a = etree.SubElement(root, "a")
+  >>> b = etree.SubElement(root, "b")
+  >>> c = etree.SubElement(root, "c")
+  >>> d = etree.SubElement(root, "d")
+  >>> e = etree.SubElement(d,    "e")
+  >>> b.getparent() == root
+  True
+  >>> print(b.getnext().tag)
+  c
+  >>> print(c.getprevious().tag)
+  b
+
+Elements always live within a document context in lxml.  This implies that
+there is also a notion of an absolute document root.  You can retrieve an
+ElementTree for the root node of a document from any of its elements.
+
+.. sourcecode:: pycon
+
+  >>> tree = d.getroottree()
+  >>> print(tree.getroot().tag)
+  root
+
+Note that this is different from wrapping an Element in an ElementTree.  You
+can use ElementTrees to create XML trees with an explicit root node:
+
+.. sourcecode:: pycon
+
+  >>> tree = etree.ElementTree(d)
+  >>> print(tree.getroot().tag)
+  d
+  >>> etree.tostring(tree)
+  b'<d><e/></d>'
+
+ElementTree objects are serialised as complete documents, including
+preceding or trailing processing instructions and comments.
+
+All operations that you run on such an ElementTree (like XPath, XSLT, etc.)
+will understand the explicitly chosen root as root node of a document.  They
+will not see any elements outside the ElementTree.  However, ElementTrees do
+not modify their Elements:
+
+.. sourcecode:: pycon
+
+  >>> element = tree.getroot()
+  >>> print(element.tag)
+  d
+  >>> print(element.getparent().tag)
+  root
+  >>> print(element.getroottree().getroot().tag)
+  root
+
+The rule is that all operations that are applied to Elements use either the
+Element itself as reference point, or the absolute root of the document that
+contains this Element (e.g. for absolute XPath expressions).  All operations
+on an ElementTree use its explicit root node as reference.
+
+
+Iteration
+---------
+
+The ElementTree API makes Elements iterable to supports iteration over their
+children.  Using the tree defined above, we get:
+
+.. sourcecode:: pycon
+
+  >>> [ child.tag for child in root ]
+  ['a', 'b', 'c', 'd']
+
+To iterate in the opposite direction, use the ``reversed()`` function
+that exists in Python 2.4 and later.
+
+Tree traversal should use the ``element.iter()`` method:
+
+.. sourcecode:: pycon
+
+  >>> [ el.tag for el in root.iter() ]
+  ['root', 'a', 'b', 'c', 'd', 'e']
+
+lxml.etree also supports this, but additionally features an extended API for
+iteration over the children, following/preceding siblings, ancestors and
+descendants of an element, as defined by the respective XPath axis:
+
+.. sourcecode:: pycon
+
+  >>> [ child.tag for child in root.iterchildren() ]
+  ['a', 'b', 'c', 'd']
+  >>> [ child.tag for child in root.iterchildren(reversed=True) ]
+  ['d', 'c', 'b', 'a']
+  >>> [ sibling.tag for sibling in b.itersiblings() ]
+  ['c', 'd']
+  >>> [ sibling.tag for sibling in c.itersiblings(preceding=True) ]
+  ['b', 'a']
+  >>> [ ancestor.tag for ancestor in e.iterancestors() ]
+  ['d', 'root']
+  >>> [ el.tag for el in root.iterdescendants() ]
+  ['a', 'b', 'c', 'd', 'e']
+
+Note how ``element.iterdescendants()`` does not include the element
+itself, as opposed to ``element.iter()``.  The latter effectively
+implements the 'descendant-or-self' axis in XPath.
+
+All of these iterators support an additional ``tag`` keyword argument that
+filters the generated elements by tag name:
+
+.. sourcecode:: pycon
+
+  >>> [ child.tag for child in root.iterchildren(tag='a') ]
+  ['a']
+  >>> [ child.tag for child in d.iterchildren(tag='a') ]
+  []
+  >>> [ el.tag for el in root.iterdescendants(tag='d') ]
+  ['d']
+  >>> [ el.tag for el in root.iter(tag='d') ]
+  ['d']
+
+The most common way to traverse an XML tree is depth-first, which
+traverses the tree in document order.  This is implemented by the
+``.iter()`` method.  While there is no dedicated method for
+breadth-first traversal, it is almost as simple if you use the
+``collections.deque`` type from Python 2.4.
+
+.. sourcecode:: pycon
+
+    >>> root = etree.XML('<root><a><b/><c/></a><d><e/></d></root>')
+    >>> print(etree.tostring(root, pretty_print=True, encoding=unicode))
+    <root>
+      <a>
+        <b/>
+        <c/>
+      </a>
+      <d>
+        <e/>
+      </d>
+    </root>
+
+    >>> queue = deque([root])
+    >>> while queue:
+    ...    el = queue.popleft()  # pop next element
+    ...    queue.extend(el)      # append its children
+    ...    print(el.tag)
+    root
+    a
+    d
+    b
+    c
+    e
+
+See also the section on the utility functions ``iterparse()`` and
+``iterwalk()`` in the `parser documentation`_.
+
+.. _`parser documentation`: parsing.html#iterparse-and-iterwalk
+
+
+Error handling on exceptions
+----------------------------
+
+Libxml2 provides error messages for failures, be it during parsing, XPath
+evaluation or schema validation.  The preferred way of accessing them is
+through the local ``error_log`` property of the respective evaluator or
+transformer object.  See their documentation for details.
+
+However, lxml also keeps a global error log of all errors that occurred at the
+application level.  Whenever an exception is raised, you can retrieve the
+errors that occured and "might have" lead to the problem from the error log
+copy attached to the exception:
+
+.. sourcecode:: pycon
+
+  >>> etree.clear_error_log()
+  >>> broken_xml = '''
+  ... <root>
+  ...   <a>
+  ... </root>
+  ... '''
+  >>> try:
+  ...   etree.parse(StringIO(broken_xml))
+  ... except etree.XMLSyntaxError, e:
+  ...   pass # just put the exception into e
+
+..
+  >>> etree.clear_error_log()
+  >>> try:
+  ...   etree.parse(StringIO(broken_xml))
+  ... except etree.XMLSyntaxError:
+  ...   import sys; e = sys.exc_info()[1]
+
+Once you have caught this exception, you can access its ``error_log`` property
+to retrieve the log entries or filter them by a specific type, error domain or
+error level:
+
+.. sourcecode:: pycon
+
+  >>> log = e.error_log.filter_from_level(etree.ErrorLevels.FATAL)
+  >>> print(log)
+  <string>:4:8:FATAL:PARSER:ERR_TAG_NAME_MISMATCH: Opening and ending tag mismatch: a line 3 and root
+  <string>:5:1:FATAL:PARSER:ERR_TAG_NOT_FINISHED: Premature end of data in tag root line 2
+
+This might look a little cryptic at first, but it is the information that
+libxml2 gives you.  At least the message at the end should give you a hint
+what went wrong and you can see that the fatal errors (FATAL) happened during
+parsing (PARSER) lines 4, column 8 and line 5, column 1 of a string (<string>,
+or the filename if available).  Here, PARSER is the so-called error domain,
+see ``lxml.etree.ErrorDomains`` for that.  You can get it from a log entry
+like this:
+
+.. sourcecode:: pycon
+
+  >>> entry = log[0]
+  >>> print(entry.domain_name)
+  PARSER
+  >>> print(entry.type_name)
+  ERR_TAG_NAME_MISMATCH
+  >>> print(entry.filename)
+  <string>
+
+There is also a convenience attribute ``last_error`` that returns the last
+error or fatal error that occurred:
+
+.. sourcecode:: pycon
+
+  >>> entry = e.error_log.last_error
+  >>> print(entry.domain_name)
+  PARSER
+  >>> print(entry.type_name)
+  ERR_TAG_NOT_FINISHED
+  >>> print(entry.filename)
+  <string>
+
+
+Error logging
+-------------
+
+lxml.etree supports logging libxml2 messages to the Python stdlib logging
+module.  This is done through the ``etree.PyErrorLog`` class.  It disables the
+error reporting from exceptions and forwards log messages to a Python logger.
+To use it, see the descriptions of the function ``etree.useGlobalPythonLog``
+and the class ``etree.PyErrorLog`` for help.  Note that this does not affect
+the local error logs of XSLT, XMLSchema, etc.
+
+
+Serialisation
+-------------
+
+lxml.etree has direct support for pretty printing XML output.  Functions like
+``ElementTree.write()`` and ``tostring()`` support it through a keyword
+argument:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML("<root><test/></root>")
+  >>> etree.tostring(root)
+  b'<root><test/></root>'
+
+  >>> print(etree.tostring(root, pretty_print=True))
+  <root>
+    <test/>
+  </root>
+
+Note the newline that is appended at the end when pretty printing the
+output.  It was added in lxml 2.0.
+
+By default, lxml (just as ElementTree) outputs the XML declaration only if it
+is required by the standard:
+
+.. sourcecode:: pycon
+
+  >>> unicode_root = etree.Element( u"t\u3120st" )
+  >>> unicode_root.text = u"t\u0A0Ast"
+  >>> etree.tostring(unicode_root, encoding="utf-8")
+  b'<t\xe3\x84\xa0st>t\xe0\xa8\x8ast</t\xe3\x84\xa0st>'
+
+  >>> print(etree.tostring(unicode_root, encoding="iso-8859-1"))
+  <?xml version='1.0' encoding='iso-8859-1'?>
+  <t&#12576;st>t&#2570;st</t&#12576;st>
+
+Also see the general remarks on `Unicode support`_.
+
+.. _`Unicode support`: parsing.html#python-unicode-strings
+
+You can enable or disable the declaration explicitly by passing another
+keyword argument for the serialisation:
+
+.. sourcecode:: pycon
+
+  >>> print(etree.tostring(root, xml_declaration=True))
+  <?xml version='1.0' encoding='ASCII'?>
+  <root><test/></root>
+
+  >>> unicode_root.clear()
+  >>> etree.tostring(unicode_root, encoding="UTF-16LE",
+  ...                              xml_declaration=False)
+  b'<\x00t\x00 1s\x00t\x00/\x00>\x00'
+
+Note that a standard compliant XML parser will not consider the last line
+well-formed XML if the encoding is not explicitly provided somehow, e.g. in an
+underlying transport protocol:
+
+.. sourcecode:: pycon
+
+  >>> notxml = etree.tostring(unicode_root, encoding="UTF-16LE",
+  ...                                       xml_declaration=False)
+  >>> root = etree.XML(notxml)        #doctest: +ELLIPSIS
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XMLSyntaxError: ...
+
+Since version 2.3, the serialisation can override the internal subset
+of the document with a user provided DOCTYPE:
+
+.. sourcecode:: pycon
+
+  >>> xml = '<!DOCTYPE root>\n<root/>'
+  >>> tree = etree.parse(StringIO(xml))
+
+  >>> print(etree.tostring(tree))
+  <!DOCTYPE root>
+  <root/>
+
+  >>> print(etree.tostring(tree,
+  ...     doctype='<!DOCTYPE root SYSTEM "/tmp/test.dtd">'))
+  <!DOCTYPE root SYSTEM "/tmp/test.dtd">
+  <root/>
+
+The content will be encoded, but otherwise copied verbatimly into the
+output stream.  It is therefore left to the user to take care for a
+correct doctype format, including the name of the root node.
+
+
+CDATA
+-----
+
+By default, lxml's parser will strip CDATA sections from the tree and
+replace them by their plain text content.  As real applications for
+CDATA are rare, this is the best way to deal with this issue.
+
+However, in some cases, keeping CDATA sections or creating them in a
+document is required to adhere to existing XML language definitions.
+For these special cases, you can instruct the parser to leave CDATA
+sections in the document:
+
+.. sourcecode:: pycon
+
+  >>> parser = etree.XMLParser(strip_cdata=False)
+  >>> root = etree.XML('<root><![CDATA[test]]></root>', parser)
+  >>> root.text
+  'test'
+
+  >>> etree.tostring(root)
+  b'<root><![CDATA[test]]></root>'
+
+Note how the ``.text`` property does not give any indication that the
+text content is wrapped by a CDATA section.  If you want to make sure
+your data is wrapped by a CDATA block, you can use the ``CDATA()``
+text wrapper:
+
+.. sourcecode:: pycon
+
+  >>> root.text = 'test'
+
+  >>> root.text
+  'test'
+  >>> etree.tostring(root)
+  b'<root>test</root>'
+
+  >>> root.text = etree.CDATA(root.text)
+
+  >>> root.text
+  'test'
+  >>> etree.tostring(root)
+  b'<root><![CDATA[test]]></root>'
+
+
+XInclude and ElementInclude
+---------------------------
+
+You can let lxml process xinclude statements in a document by calling the
+xinclude() method on a tree:
+
+.. sourcecode:: pycon
+
+  >>> data = StringIO('''\
+  ... <doc xmlns:xi="http://www.w3.org/2001/XInclude">
+  ... <foo/>
+  ... <xi:include href="doc/test.xml" />
+  ... </doc>''')
+
+  >>> tree = etree.parse(data)
+  >>> tree.xinclude()
+  >>> print(etree.tostring(tree.getroot()))
+  <doc xmlns:xi="http://www.w3.org/2001/XInclude">
+  <foo/>
+  <a xml:base="doc/test.xml"/>
+  </doc>
+
+Note that the ElementTree compatible ElementInclude_ module is also supported
+as ``lxml.ElementInclude``.  It has the additional advantage of supporting
+custom `URL resolvers`_ at the Python level.  The normal XInclude mechanism
+cannot deploy these.  If you need ElementTree compatibility or custom
+resolvers, you have to stick to the external Python module.
+
+.. _ElementInclude: http://effbot.org/zone/element-xinclude.htm
+
+
+write_c14n on ElementTree
+-------------------------
+
+The lxml.etree.ElementTree class has a method write_c14n, which takes a file
+object as argument.  This file object will receive an UTF-8 representation of
+the canonicalized form of the XML, following the W3C C14N recommendation.  For
+example:
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO('<a><b/></a>')
+  >>> tree = etree.parse(f)
+  >>> f2 = StringIO()
+  >>> tree.write_c14n(f2)
+  >>> print(f2.getvalue().decode("utf-8"))
+  <a><b></b></a>
diff --git a/doc/sphinx/_sources/build.txt b/doc/sphinx/_sources/build.txt
new file mode 100644 (file)
index 0000000..3791b85
--- /dev/null
@@ -0,0 +1,334 @@
+How to build lxml from source
+=============================
+
+To build lxml from source, you need libxml2 and libxslt properly
+installed, *including the header files*.  These are likely shipped in
+separate ``-dev`` or ``-devel`` packages like ``libxml2-dev``, which
+you must install before trying to build lxml.  The build process also
+requires setuptools_.  The lxml source distribution comes with a
+script called ``ez_setup.py`` that can be used to install them.
+
+.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools
+
+.. contents::
+..
+   1  Cython
+   2  Github, git and hg
+   3  Setuptools
+   4  Running the tests and reporting errors
+   5  Building an egg
+   6  Building lxml on MacOS-X
+   7  Static linking on Windows
+   8  Building Debian packages from SVN sources
+
+
+Cython
+------
+
+.. _EasyInstall: http://peak.telecommunity.com/DevCenter/EasyInstall
+.. _Cython: http://www.cython.org
+
+The lxml.etree and lxml.objectify modules are written in Cython_.
+Since we distribute the Cython-generated .c files with lxml releases,
+however, you do not need Cython to build lxml from the normal release
+sources.  We even encourage you to *not install Cython* for a normal
+release build, as the generated C code can vary quite heavily between
+Cython versions, which may or may not generate correct code for lxml.
+The pre-generated release sources were tested and therefore are known
+to work.
+
+So, if you want a reliable build of lxml, we suggest to a) use a
+source release of lxml and b) disable or uninstall Cython for the
+build.
+
+*Only* if you are interested in building lxml from a checkout of the
+developer sources (e.g. to test a bug fix that has not been release
+yet) or if you want to be an lxml developer, then you do need a
+working Cython installation.  You can use EasyInstall_ to install it::
+
+    easy_install "Cython>=0.14.1"
+
+lxml currently requires Cython 0.14.1, later release versions should
+work as well.
+
+
+Github, git and hg
+-------------------
+
+The lxml package is developed in a repository on Github_ using
+Mercurial_ and the `hg-git`_ plugin.  You can retrieve the current
+developer version using::
+
+  hg clone git://github.com/lxml/lxml.git lxml
+
+This will create a directory ``lxml`` and download the source into it,
+including the complete development history.  Don't be afraid, the
+download is fairly quick.  You can also browse the `lxml repository`_
+through the web.
+
+.. _Github: https://github.com/lxml/
+.. _Mercurial: http://mercurial.selenic.com/
+.. _`hg-git`: http://hg-git.github.com/
+.. _`lxml repository`: https://github.com/lxml/lxml
+.. _`source tar-ball`: https://github.com/lxml/lxml/tarball/master
+
+
+Setuptools
+----------
+
+Usually, building lxml is done through setuptools.  Clone the source
+repository as described above (or download the `source tar-ball`_ and
+unpack it) and then type::
+
+  python setup.py build
+
+or::
+
+  python setup.py bdist_egg
+
+If you want to test lxml from the source directory, it is better to build it
+in-place like this::
+
+  python setup.py  build_ext -i
+
+or, in Unix-like environments::
+
+  make
+
+If you get errors about missing header files (e.g. ``Python.h`` or
+``libxml/xmlversion.h``) then you need to make sure the development
+packages of Python, libxml2 and libxslt are properly installed.  On
+Linux distributions, they are usually called something like
+``libxml2-dev`` or ``libxslt-devel``.  If these packages were
+installed in non-standard places, try passing the following option to
+setup.py to make sure the right config is found::
+
+  python setup.py build --with-xslt-config=/path/to/xslt-config
+
+If this doesn't help, you may have to add the location of the header
+files to the include path like::
+
+  python setup.py build_ext -i  -I /usr/include/libxml2
+
+where the file is in ``/usr/include/libxml2/libxml/xmlversion.h``
+
+To use lxml.etree in-place, you can place lxml's ``src`` directory on your
+Python module search path (PYTHONPATH) and then import ``lxml.etree`` to play
+with it::
+
+  # cd lxml
+  # PYTHONPATH=src python
+  Python 2.5.1
+  Type "help", "copyright", "credits" or "license" for more information.
+  >>> from lxml import etree
+  >>>
+
+To make sure everything gets recompiled cleanly after changes, you can
+run ``make clean`` or delete the file ``src/lxml/etree.c``.  Distutils
+do not automatically pick up changes that affect files other than the
+main file ``src/lxml/etree.pyx``.
+
+
+Running the tests and reporting errors
+--------------------------------------
+
+The source distribution (tgz) and the source repository contain a test
+suite for lxml.  You can run it from the top-level directory::
+
+  python test.py
+
+Note that the test script only tests the in-place build (see distutils
+building above), as it searches the ``src`` directory.  You can use the
+following one-step command to trigger an in-place build and test it::
+
+  make test
+
+This also runs the ElementTree and cElementTree compatibility tests.  To call
+them separately, make sure you have lxml on your PYTHONPATH first, then run::
+
+  python selftest.py
+
+and::
+
+  python selftest2.py
+
+If the tests give failures, errors, or worse, segmentation faults, we'd really
+like to know.  Please contact us on the `mailing list`_, and please specify
+the version of lxml, libxml2, libxslt and Python you were using, as well as
+your operating system type (Linux, Windows, MacOs, ...).
+
+.. _`mailing list`: http://codespeak.net/mailman/listinfo/lxml-dev
+
+
+Building an egg
+---------------
+
+This is the procedure to make an lxml egg for your platform (assuming
+that you have setuptools_ installed):
+
+* Download the lxml-x.y.tar.gz release.  This contains the pregenerated C so
+  that you can be sure you build exactly from the release sources.  Unpack
+  them and cd into the resulting directory.
+
+* python setup.py build
+
+* If you're on a unixy platform, cd into ``build/lib.your.platform`` and strip
+  any ``.so`` file you find there.  This reduces the size of the egg
+  considerably.
+
+* ``python setup.py bdist_egg``
+
+This will put the egg into the ``dist`` directory.
+
+
+Building lxml on MacOS-X
+------------------------
+
+Apple regularly ships new system releases with horribly outdated
+system libraries.  This is specifically the case for libxml2 and
+libxslt, where the system provided versions are too old to build lxml.
+
+While the Unix environment in MacOS-X makes it relatively easy to
+install Unix/Linux style package management tools and new software, it
+actually seems to be hard to get libraries set up for exclusive usage
+that MacOS-X ships in an older version.  Alternative distributions
+(like macports) install their libraries in addition to the system
+libraries, but the compiler and the runtime loader on MacOS still sees
+the system libraries before the new libraries.  This can lead to
+undebuggable crashes where the newer library seems to be loaded but
+the older system library is used.
+
+Apple discourages static building against libraries, which would help
+working around this problem.  Apple does not ship static library
+binaries with its system and several package management systems follow
+this decision.  Therefore, building static binaries requires building
+the dependencies first.  The ``setup.py`` script does this
+automatically when you call it like this::
+
+  python setup.py build --static-deps
+
+This will download and build the latest versions of libxml2 and
+libxslt from the official FTP download site.  If you want to use
+specific versions, or want to prevent any online access, you can
+download both ``tar.gz`` release files yourself, place them into a
+subdirectory ``libs`` in the lxml distribution, and call ``setup.py``
+with the desired target versions like this::
+
+  python setup.py build --static-deps \
+         --libxml2-version=2.7.3 \
+         --libxslt-version=1.1.24 \
+
+  sudo python setup.py install
+
+Instead of ``build``, you can use any target, like ``bdist_egg`` if
+you want to use setuptools to build an installable egg.
+
+Note that this also works with EasyInstall_.  Since you can't pass
+command line options in this case, you have to use an environment
+variable instead::
+
+  STATIC_DEPS=true easy_install lxml
+
+Some machines may require an additional run with "sudo" to install the
+package into the Python package directory::
+
+  STATIC_DEPS=true sudo easy_install lxml
+
+The ``STATICBUILD`` environment variable is handled equivalently to
+the ``STATIC_DEPS`` variable, but is used by some other extension
+packages, too.
+
+
+Static linking on Windows
+-------------------------
+
+Most operating systems have proper package management that makes installing
+current versions of libxml2 and libxslt easy.  The most famous exception is
+Microsoft Windows, which entirely lacks these capabilities.  It can therefore
+be interesting to statically link the external libraries into lxml.etree to
+avoid having to install them separately.
+
+Download lxml and all required libraries to the same directory.  The iconv,
+libxml2, libxslt, and zlib libraries are all available from the ftp site
+ftp://ftp.zlatkovic.com/pub/libxml/.
+
+Your directory should now have the following files in it (although most likely
+different versions)::
+
+  iconv-1.9.1.win32.zip
+  libxml2-2.6.23.win32.zip
+  libxslt-1.1.15.win32.zip
+  lxml-1.0.0.tgz
+  zlib-1.2.3.win32.zip
+
+Now extract each of those files in the *same* directory.  This should give you
+something like this::
+
+  iconv-1.9.1.win32/
+  iconv-1.9.1.win32.zip
+  libxml2-2.6.23.win32/
+  libxml2-2.6.23.win32.zip
+  libxslt-1.1.15.win32/
+  libxslt-1.1.15.win32.zip
+  lxml-1.0.0/
+  lxml-1.0.0.tgz
+  zlib-1.2.3.win32/
+  zlib-1.2.3.win32.zip
+
+Go to the lxml directory and edit the file ``setup.py``.  There should
+be a section near the top that looks like this::
+
+  STATIC_INCLUDE_DIRS = []
+  STATIC_LIBRARY_DIRS = []
+  STATIC_CFLAGS = []
+
+Change this section to something like this, but take care to use the correct
+version numbers::
+
+  STATIC_INCLUDE_DIRS = [
+         "..\\libxml2-2.6.23.win32\\include",
+         "..\\libxslt-1.1.15.win32\\include",
+         "..\\zlib-1.2.3.win32\\include",
+         "..\\iconv-1.9.1.win32\\include"
+         ]
+
+  STATIC_LIBRARY_DIRS = [
+         "..\\libxml2-2.6.23.win32\\lib",
+         "..\\libxslt-1.1.15.win32\\lib",
+         "..\\zlib-1.2.3.win32\\lib",
+         "..\\iconv-1.9.1.win32\\lib"
+         ]
+
+  STATIC_CFLAGS = []
+
+Add any CFLAGS you might consider useful to the third list.  Now you
+should be able to pass the ``--static`` option to setup.py and
+everything should work well.  Try calling::
+
+  python setup.py bdist_wininst --static
+
+This will create a windows installer in the ``pkg`` directory.
+
+
+Building Debian packages from SVN sources
+-----------------------------------------
+
+`Andreas Pakulat`_ proposed the following approach.
+
+.. _`Andreas Pakulat`: http://codespeak.net/pipermail/lxml-dev/2006-May/001254.html
+
+* ``apt-get source lxml``
+* remove the unpacked directory
+* tar.gz the lxml SVN version and replace the orig.tar.gz that lies in the
+  directory
+* check md5sum of created tar.gz file and place new sum and size in dsc file
+* do ``dpkg-source -x lxml-[VERSION].dsc`` and cd into the newly created directory
+* run ``dch -i`` and add a comment like "use trunk version", this will
+  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
+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
+installed using ``dpkg -i``.
diff --git a/doc/sphinx/_sources/capi.txt b/doc/sphinx/_sources/capi.txt
new file mode 100644 (file)
index 0000000..4b9c808
--- /dev/null
@@ -0,0 +1,94 @@
+==============================
+The public C-API of lxml.etree
+==============================
+
+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,
+without going through the Python API.
+
+The API is described in the file `etreepublic.pxd`_, which is directly
+c-importable by extension modules implemented in Pyrex_ or Cython_.
+
+.. _`etreepublic.pxd`: http://codespeak.net/svn/lxml/trunk/src/lxml/etreepublic.pxd
+.. _Cython: http://www.cython.org
+.. _Pyrex: http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/
+
+.. contents::
+..
+   1  Writing external modules in Cython
+   2  Writing external modules in C
+
+
+Writing external modules in Cython
+----------------------------------
+
+This is the easiest way of extending lxml at the C level.  A Cython_
+(or Pyrex_) module should start like this::
+
+    # My Cython extension
+
+    # import the public functions and classes of lxml.etree
+    cimport etreepublic as cetree
+
+    # import the lxml.etree module in Python
+    cdef object etree
+    from lxml import etree
+
+    # initialize the access to the C-API of lxml.etree
+    cetree.import_lxml__etree()
+
+From this line on, you can access all public functions of lxml.etree
+from the ``cetree`` namespace like this::
+
+    # build a tag name from namespace and element name
+    py_tag = cetree.namespacedNameFromNsName("http://some/url", "myelement")
+
+Public lxml classes are easily subclassed.  For example, to implement
+and set a new default element class, you can write Cython code like
+the following::
+
+    from etreepublic cimport ElementBase
+    cdef class NewElementClass(ElementBase):
+         def set_value(self, myval):
+             self.set("my_attribute", myval)
+
+    etree.set_element_class_lookup(
+         etree.DefaultElementClassLookup(element=NewElementClass))
+
+
+Writing external modules in C
+-----------------------------
+
+If you really feel like it, you can also interface with lxml.etree straight
+from C code.  All you have to do is include the header file for the public
+API, import the ``lxml.etree`` module and then call the import function:
+
+.. sourcecode:: c
+
+    /* My C extension */
+
+    /* common includes */
+    #include "Python.h"
+    #include "stdio.h"
+    #include "string.h"
+    #include "stdarg.h"
+    #include "libxml/xmlversion.h"
+    #include "libxml/encoding.h"
+    #include "libxml/hash.h"
+    #include "libxml/tree.h"
+    #include "libxml/xmlIO.h"
+    #include "libxml/xmlsave.h"
+    #include "libxml/globals.h"
+    #include "libxml/xmlstring.h"
+
+    /* lxml.etree specific includes */
+    #include "lxml-version.h"
+    #include "etree_defs.h"
+    #include "etree.h"
+
+    /* setup code */
+    import_lxml__etree()
+
+Note that including ``etree.h`` does not automatically include the
+header files it requires.  Note also that the above list of common
+includes may not be sufficient.
diff --git a/doc/sphinx/_sources/compatibility.txt b/doc/sphinx/_sources/compatibility.txt
new file mode 100644 (file)
index 0000000..e23d181
--- /dev/null
@@ -0,0 +1,196 @@
+=======================================
+ElementTree compatibility of lxml.etree
+=======================================
+
+A lot of care has been taken to ensure compatibility between etree and
+ElementTree.  Nonetheless, some differences and incompatibilities exist:
+
+* Importing etree is obviously different; etree uses a lower-case
+  package name, while ElementTree uses a combination of upper-case and
+  lower case in imports:
+
+  .. sourcecode:: python
+
+    # etree
+    from lxml.etree import Element
+
+    # ElementTree
+    from elementtree.ElementTree import Element
+
+    # ElementTree in the Python 2.5 standard library
+    from xml.etree.ElementTree import Element
+
+  When switching over code from ElementTree to lxml.etree, and you're using
+  the package name prefix 'ElementTree', you can do the following:
+
+  .. sourcecode:: python
+
+    # instead of
+    from elementtree import ElementTree
+    # use
+    from lxml import etree as ElementTree
+
+* lxml.etree offers a lot more functionality, such as XPath, XSLT, Relax NG,
+  and XML Schema support, which (c)ElementTree does not offer.
+
+* etree has a different idea about Python unicode strings than ElementTree.
+  In most parts of the API, ElementTree uses plain strings and unicode strings
+  as what they are.  This includes Element.text, Element.tail and many other
+  places.  However, the ElementTree parsers assume by default that any string
+  (`str` or `unicode`) contains ASCII data.  They raise an exception if
+  strings do not match the expected encoding.
+
+  etree has the same idea about plain strings (`str`) as ElementTree.  For
+  unicode strings, however, etree assumes throughout the API that they are
+  Python unicode encoded strings rather than byte data.  This includes the
+  parsers.  It is therefore perfectly correct to pass XML unicode data into
+  the etree parsers in form of Python unicode strings.  It is an error, on the
+  other hand, if unicode strings specify an encoding in their XML declaration,
+  as this conflicts with the characteristic encoding of Python unicode
+  strings.
+
+* ElementTree allows you to place an Element in two different trees at the
+  same time.  Thus, this:
+
+  .. sourcecode:: python
+
+    a = Element('a')
+    b = SubElement(a, 'b')
+    c = Element('c')
+    c.append(b)
+
+  will result in the following tree a:
+
+  .. sourcecode:: xml
+
+    <a><b /></a>
+
+  and the following tree c:
+
+  .. sourcecode:: xml
+
+    <c><b /></c>
+
+  In lxml, this behavior is different, because lxml is built on top of a tree
+  that maintains parent relationships for elements (like W3C DOM).  This means
+  an element can only exist in a single tree at the same time.  Adding an
+  element in some tree to another tree will cause this element to be moved.
+
+  So, for tree a we will get:
+
+  .. sourcecode:: xml
+
+    <a></a>
+
+  and for tree c we will get:
+
+  .. sourcecode:: xml
+
+    <c><b/></c>
+
+  Unfortunately this is a rather fundamental difference in behavior, which is
+  hard to change.  It won't affect some applications, but if you want to port
+  code you must unfortunately make sure that it doesn't affect yours.
+
+* etree allows navigation to the parent of a node by the ``getparent()``
+  method and to the siblings by calling ``getnext()`` and ``getprevious()``.
+  This is not possible in ElementTree as the underlying tree model does not
+  have this information.
+
+* When trying to set a subelement using __setitem__ that is in fact not an
+  Element but some other object, etree raises a TypeError, and ElementTree
+  raises an AssertionError.  This also applies to some other places of the
+  API.  In general, etree tries to avoid AssertionErrors in favour of being
+  more specific about the reason for the exception.
+
+* When parsing fails in ``iterparse()``, ElementTree up to version
+  1.2.x raises a low-level ``ExpatError`` instead of a ``SyntaxError``
+  as the other parsers.  Both lxml and ElementTree 1.3 raise a
+  ``ParseError`` for parser errors.
+
+* The ``iterparse()`` function in lxml is implemented based on the libxml2
+  parser and tree generator.  This means that modifications of the document
+  root or the ancestors of the current element during parsing can irritate the
+  parser and even segfault.  While this is not a problem in the Python object
+  structure used by ElementTree, the C tree underlying lxml suffers from it.
+  The golden rule for ``iterparse()`` on lxml therefore is: do not touch
+  anything that will have to be touched again by the parser later on.  See the
+  lxml parser documentation on this.
+
+* ElementTree ignores comments and processing instructions when parsing XML,
+  while etree will read them in and treat them as Comment or
+  ProcessingInstruction elements respectively.  This is especially visible
+  where comments are found inside text content, which is then split by the
+  Comment element.
+
+  You can disable this behaviour by passing the boolean ``remove_comments``
+  and/or ``remove_pis`` keyword arguments to the parser you use.  For
+  convenience and to support portable code, you can also use the
+  ``etree.ETCompatXMLParser`` instead of the default ``etree.XMLParser``.  It
+  tries to provide a default setup that is as close to the ElementTree parser
+  as possible.
+
+* The ``TreeBuilder`` class of ``lxml.etree`` uses a different
+  signature for the ``start()`` method.  It accepts an additional
+  argument ``nsmap`` to propagate the namespace declarations of an
+  element in addition to its own namespace.  To assure compatibility
+  with ElementTree (which does not support this argument), lxml checks
+  if the method accepts 3 arguments before calling it, and otherwise
+  drops the namespace mapping.  This should work with most existing
+  ElementTree code, although there may still be conflicting cases.
+
+* ElementTree 1.2 has a bug when serializing an empty Comment (no text
+  argument given) to XML, etree serializes this successfully.
+
+* ElementTree adds whitespace around comments on serialization, lxml does
+  not.  This means that a comment text "text" that ElementTree serializes as
+  "<!-- text -->" will become "<!--text-->" in lxml.
+
+* When the string '*' is used as tag filter in the ``Element.getiterator()``
+  method, ElementTree returns all elements in the tree, including comments and
+  processing instructions. lxml.etree only returns real Elements, i.e. tree
+  nodes that have a string tag name.  Without a filter, both libraries iterate
+  over all nodes.
+
+  Note that currently only lxml.etree supports passing the ``Element`` factory
+  function as filter to select only Elements.  Both libraries support passing
+  the ``Comment`` and ``ProcessingInstruction`` factories to select the
+  respective tree nodes.
+
+* ElementTree merges the target of a processing instruction into ``PI.text``,
+  while lxml.etree puts it into the ``.target`` property and leaves it out of
+  the ``.text`` property.  The ``pi.text`` in ElementTree therefore
+  correspondents to ``pi.target + " " + pi.text`` in lxml.etree.
+
+* Because etree is built on top of libxml2, which is namespace prefix aware,
+  etree preserves namespaces declarations and prefixes while ElementTree tends
+  to come up with its own prefixes (ns0, ns1, etc).  When no namespace prefix
+  is given, however, etree creates ElementTree style prefixes as well.
+
+* etree has a 'prefix' attribute (read-only) on elements giving the Element's
+  prefix, if this is known, and None otherwise (in case of no namespace at
+  all, or default namespace).
+
+* etree further allows passing an 'nsmap' dictionary to the Element and
+  SubElement element factories to explicitly map namespace prefixes to
+  namespace URIs.  These will be translated into namespace declarations on
+  that element.  This means that in the probably rare case that you need to
+  construct an attribute called 'nsmap', you need to be aware that unlike in
+  ElementTree, you cannot pass it as a keyword argument to the Element and
+  SubElement factories directly.
+
+* ElementTree allows QName objects as attribute values and resolves their
+  prefix on serialisation (e.g. an attribute value ``QName("{myns}myname")``
+  becomes "p:myname" if "p" is the namespace prefix of "myns").  lxml.etree
+  also allows you to set attribute values from QName instances (and also .text
+  values), but it resolves their prefix immediately and stores the plain text
+  value.  So, if prefixes are modified later on, e.g. by moving a subtree to a
+  different tree (which reassigns the prefix mappings), the text values will
+  not be updated and you might end up with an undefined prefix.
+
+* etree elements can be copied using ``copy.deepcopy()`` and ``copy.copy()``,
+  just like ElementTree's.  However, ``copy.copy()`` does *not* create a
+  shallow copy where elements are shared between trees, as this makes no sense
+  in the context of libxml2 trees.  Note that lxml can deep-copy trees
+  considerably faster than ElementTree, so a deep copy might still be fast
+  enough to replace a shallow copy in your case.
diff --git a/doc/sphinx/_sources/cssselect.txt b/doc/sphinx/_sources/cssselect.txt
new file mode 100644 (file)
index 0000000..a5bffdf
--- /dev/null
@@ -0,0 +1,108 @@
+==============
+lxml.cssselect
+==============
+
+lxml supports a number of interesting languages for tree traversal and element
+selection.  The most important is obviously XPath_, but there is also
+ObjectPath_ in the `lxml.objectify`_ module.  The newest child of this family
+is `CSS selection`_, which is implemented in the new ``lxml.cssselect`` module.
+
+.. _XPath: xpathxslt.html#xpath
+.. _ObjectPath: objectify.html#objectpath
+.. _`lxml.objectify`: objectify.html
+.. _`CSS selection`: http://www.w3.org/TR/CSS21/selector.html
+
+.. contents::
+..
+   1  The CSSSelector class
+   2  CSS Selectors
+     2.1  Namespaces
+   3  Limitations
+
+
+The CSSSelector class
+=====================
+
+The most important class in the ``cssselect`` module is ``CSSSelector``.  It
+provides the same interface as the XPath_ class, but accepts a CSS selector
+expression as input:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.cssselect import CSSSelector
+    >>> sel = CSSSelector('div.content')
+    >>> sel  #doctest: +ELLIPSIS
+    <CSSSelector ... for 'div.content'>
+    >>> sel.css
+    'div.content'
+
+The selector actually compiles to XPath, and you can see the
+expression by inspecting the object:
+
+.. sourcecode:: pycon
+
+    >>> sel.path
+    "descendant-or-self::div[contains(concat(' ', normalize-space(@class), ' '), ' content ')]"
+
+To use the selector, simply call it with a document or element
+object:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.etree import fromstring
+    >>> h = fromstring('''<div id="outer">
+    ...   <div id="inner" class="content body">
+    ...       text
+    ...   </div></div>''')
+    >>> [e.get('id') for e in sel(h)]
+    ['inner']
+
+
+CSS Selectors
+=============
+
+This libraries attempts to implement CSS selectors `as described in
+the w3c specification
+<http://www.w3.org/TR/2001/CR-css3-selectors-20011113/>`_.  Many of
+the pseudo-classes do not apply in this context, including all
+`dynamic pseudo-classes
+<http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#dynamic-pseudos>`_.
+In particular these will not be available:
+
+* link state: ``:link``, ``:visited``, ``:target``
+* actions: ``:hover``, ``:active``, ``:focus``
+* UI states: ``:enabled``, ``:disabled``, ``:indeterminate``
+  (``:checked`` and ``:unchecked`` *are* available)
+
+Also, none of the pseudo-elements apply, because the selector only
+returns elements and pseudo-elements select portions of text, like
+``::first-line``.
+
+
+Namespaces
+==========
+
+In CSS you can use ``namespace-prefix|element``, similar to
+``namespace-prefix:element`` in an XPath expression.  In fact, it maps
+one-to-one, and the same rules are used to map namespace prefixes to
+namespace URIs.
+
+
+Limitations
+===========
+
+These applicable pseudoclasses are not yet implemented:
+
+* ``:lang(language)``
+* ``:root``
+* ``*:first-of-type``, ``*:last-of-type``, ``*:nth-of-type``,
+  ``*:nth-last-of-type``, ``*:only-of-type``.  All of these work when
+  you specify an element type, but not with ``*``
+
+Unlike XPath you cannot provide parameters in your expressions -- all
+expressions are completely static.
+
+XPath has underspecified string quoting rules (there seems to be no
+string quoting at all), so if you use expressions that contain
+characters that requiring quoting you might have problems with the
+translation from CSS to XPath.
diff --git a/doc/sphinx/_sources/element_classes.txt b/doc/sphinx/_sources/element_classes.txt
new file mode 100644 (file)
index 0000000..c6bcb6d
--- /dev/null
@@ -0,0 +1,537 @@
+====================================
+Using custom Element classes in lxml
+====================================
+
+lxml has very sophisticated support for custom Element classes.  You
+can provide your own classes for Elements and have lxml use them by
+default for all elements generated by a specific parser, only for a
+specific tag name in a specific namespace or even for an exact element
+at a specific position in the tree.
+
+Custom Elements must inherit from the ``lxml.etree.ElementBase`` class, which
+provides the Element interface for subclasses:
+
+.. sourcecode:: pycon
+
+  >>> from lxml import etree
+
+  >>> class honk(etree.ElementBase):
+  ...    def honking(self):
+  ...       return self.get('honking') == 'true'
+  ...    honking = property(honking)
+
+This defines a new Element class ``honk`` with a property ``honking``.
+
+The following document describes how you can make lxml.etree use these
+custom Element classes.
+
+.. contents::
+..
+   1  Background on Element proxies
+   2  Element initialization
+   3  Setting up a class lookup scheme
+     3.1  Default class lookup
+     3.2  Namespace class lookup
+     3.3  Attribute based lookup
+     3.4  Custom element class lookup
+     3.5  Tree based element class lookup in Python
+   4  Generating XML with custom classes
+   5  Implementing namespaces
+
+..
+  >>> try: _ = unicode
+  ... except NameError: unicode = str
+
+
+Background on Element proxies
+=============================
+
+Being based on libxml2, lxml.etree holds the entire XML tree in a C
+structure.  To communicate with Python code, it creates Python proxy
+objects for the XML elements on demand.
+
+   .. image:: proxies.png
+
+The mapping between C elements and Python Element classes is
+completely configurable.  When you ask lxml.etree for an Element by
+using its API, it will instantiate your classes for you.  All you have
+to do is tell lxml which class to use for which kind of Element.  This
+is done through a class lookup scheme, as described in the sections
+below.
+
+
+Element initialization
+======================
+
+There is one thing to know up front.  Element classes *must not* have
+an ``__init___`` or ``__new__`` method.  There should not be any
+internal state either, except for the data stored in the underlying
+XML tree.  Element instances are created and garbage collected at
+need, so there is normally no way to predict when and how often a
+proxy is created for them.  Even worse, when the ``__init__`` method
+is called, the object is not even initialized yet to represent the XML
+tag, so there is not much use in providing an ``__init__`` method in
+subclasses.
+
+Most use cases will not require any class initialisation or proxy
+state, so you can content yourself with skipping to the next section
+for now.  However, if you really need to set up your element class on
+instantiation, or need a way to persistently store state in the proxy
+instances instead of the XML tree, here is a way to do so.
+
+There is one important guarantee regarding Element proxies.  Once a
+proxy has been instantiated, it will keep alive as long as there is a
+Python reference to it, and any access to the XML element in the tree
+will return this very instance.  Therefore, if you need to store local
+state in a custom Element class (which is generally discouraged), you
+can do so by keeping the Elements in a tree alive.  If the tree
+doesn't change, you can simply do this:
+
+.. sourcecode:: python
+
+  proxy_cache = list(root.iter())
+
+or
+
+.. sourcecode:: python
+
+  proxy_cache = set(root.iter())
+
+or use any other suitable container.  Note that you have to keep this
+cache manually up to date if the tree changes, which can get tricky in
+cases.
+
+For proxy initialisation, ElementBase classes have an ``_init()``
+method that can be overridden, as oppose to the normal ``__init__()``
+method.  It can be used to modify the XML tree, e.g. to construct
+special children or verify and update attributes.
+
+The semantics of ``_init()`` are as follows:
+
+* It is called once on Element class instantiation time.  That is,
+  when a Python representation of the element is created by lxml.  At
+  that time, the element object is completely initialized to represent
+  a specific XML element within the tree.
+
+* The method has complete access to the XML tree.  Modifications can be done
+  in exactly the same way as anywhere else in the program.
+
+* Python representations of elements may be created multiple times during the
+  lifetime of an XML element in the underlying C tree.  The ``_init()`` code
+  provided by subclasses must take special care by itself that multiple
+  executions either are harmless or that they are prevented by some kind of
+  flag in the XML tree.  The latter can be achieved by modifying an attribute
+  value or by removing or adding a specific child node and then verifying this
+  before running through the init process.
+
+* Any exceptions raised in ``_init()`` will be propagated throught the API
+  call that lead to the creation of the Element.  So be careful with the code
+  you write here as its exceptions may turn up in various unexpected places.
+
+
+Setting up a class lookup scheme
+================================
+
+The first thing to do when deploying custom element classes is to register a
+class lookup scheme on a parser.  lxml.etree provides quite a number of
+different schemes that also support class lookup based on namespaces or
+attribute values.  Most lookups support fallback chaining, which allows the
+next lookup mechanism to take over when the previous one fails to find a
+class.
+
+For example, setting the ``honk`` Element as a default element class
+for a parser works as follows:
+
+.. sourcecode:: pycon
+
+  >>> parser_lookup = etree.ElementDefaultClassLookup(element=honk)
+  >>> parser = etree.XMLParser()
+  >>> parser.set_element_class_lookup(parser_lookup)
+
+There is one drawback of the parser based scheme: the ``Element()`` factory
+does not know about your specialised parser and creates a new document that
+deploys the default parser:
+
+.. sourcecode:: pycon
+
+  >>> el = etree.Element("root")
+  >>> print(isinstance(el, honk))
+  False
+
+You should therefore avoid using this factory function in code that
+uses custom classes.  The ``makeelement()`` method of parsers provides
+a simple replacement:
+
+.. sourcecode:: pycon
+
+  >>> el = parser.makeelement("root")
+  >>> print(isinstance(el, honk))
+  True
+
+If you use a parser at the module level, you can easily redirect a module
+level ``Element()`` factory to the parser method by adding code like this:
+
+.. sourcecode:: pycon
+
+  >>> module_level_parser = etree.XMLParser()
+  >>> Element = module_level_parser.makeelement
+
+While the ``XML()`` and ``HTML()`` factories also depend on the default
+parser, you can pass them a different parser as second argument:
+
+.. sourcecode:: pycon
+
+  >>> element = etree.XML("<test/>")
+  >>> print(isinstance(element, honk))
+  False
+
+  >>> element = etree.XML("<test/>", parser)
+  >>> print(isinstance(element, honk))
+  True
+
+Whenever you create a document with a parser, it will inherit the lookup
+scheme and all subsequent element instantiations for this document will use
+it:
+
+.. sourcecode:: pycon
+
+  >>> element = etree.fromstring("<test/>", parser)
+  >>> print(isinstance(element, honk))
+  True
+  >>> el = etree.SubElement(element, "subel")
+  >>> print(isinstance(el, honk))
+  True
+
+For testing code in the Python interpreter and for small projects, you
+may also consider setting a lookup scheme on the default parser.  To
+avoid interfering with other modules, however, it is usually a better
+idea to use a dedicated parser for each module (or a parser pool when
+using threads) and then register the required lookup scheme only for
+this parser.
+
+
+Default class lookup
+--------------------
+
+This is the most simple lookup mechanism.  It always returns the default
+element class.  Consequently, no further fallbacks are supported, but this
+scheme is a nice fallback for other custom lookup mechanisms.
+
+Usage:
+
+.. sourcecode:: pycon
+
+  >>> lookup = etree.ElementDefaultClassLookup()
+  >>> parser = etree.XMLParser()
+  >>> parser.set_element_class_lookup(lookup)
+
+Note that the default for new parsers is to use the global fallback, which is
+also the default lookup (if not configured otherwise).
+
+To change the default element implementation, you can pass your new class to
+the constructor.  While it accepts classes for ``element``, ``comment`` and
+``pi`` nodes, most use cases will only override the element class:
+
+.. sourcecode:: pycon
+
+  >>> el = parser.makeelement("myelement")
+  >>> print(isinstance(el, honk))
+  False
+
+  >>> lookup = etree.ElementDefaultClassLookup(element=honk)
+  >>> parser.set_element_class_lookup(lookup)
+
+  >>> el = parser.makeelement("myelement")
+  >>> print(isinstance(el, honk))
+  True
+  >>> el.honking
+  False
+  >>> el = parser.makeelement("myelement", honking='true')
+  >>> etree.tostring(el)
+  b'<myelement honking="true"/>'
+  >>> el.honking
+  True
+
+
+Namespace class lookup
+----------------------
+
+This is an advanced lookup mechanism that supports namespace/tag-name specific
+element classes.  You can select it by calling:
+
+.. sourcecode:: pycon
+
+  >>> lookup = etree.ElementNamespaceClassLookup()
+  >>> parser = etree.XMLParser()
+  >>> parser.set_element_class_lookup(lookup)
+
+See the separate section on `implementing namespaces`_ below to learn how to
+make use of it.
+
+.. _`implementing namespaces`: #implementing-namespaces
+
+This scheme supports a fallback mechanism that is used in the case where the
+namespace is not found or no class was registered for the element name.
+Normally, the default class lookup is used here.  To change it, pass the
+desired fallback lookup scheme to the constructor:
+
+.. sourcecode:: pycon
+
+  >>> fallback = etree.ElementDefaultClassLookup(element=honk)
+  >>> lookup = etree.ElementNamespaceClassLookup(fallback)
+  >>> parser.set_element_class_lookup(lookup)
+
+
+Attribute based lookup
+----------------------
+
+This scheme uses a mapping from attribute values to classes.  An attribute
+name is set at initialisation time and is then used to find the corresponding
+value in a dictionary.  It is set up as follows:
+
+.. sourcecode:: pycon
+
+  >>> id_class_mapping = {'1234' : honk} # maps attribute values to classes
+
+  >>> lookup = etree.AttributeBasedElementClassLookup(
+  ...                                      'id', id_class_mapping)
+  >>> parser = etree.XMLParser()
+  >>> parser.set_element_class_lookup(lookup)
+
+This class uses its fallback if the attribute is not found or its value is not
+in the mapping.  Normally, the default class lookup is used here.  If you want
+to use the namespace lookup, for example, you can use this code:
+
+.. sourcecode:: pycon
+
+  >>> fallback = etree.ElementNamespaceClassLookup()
+  >>> lookup = etree.AttributeBasedElementClassLookup(
+  ...                       'id', id_class_mapping, fallback)
+  >>> parser = etree.XMLParser()
+  >>> parser.set_element_class_lookup(lookup)
+
+
+Custom element class lookup
+---------------------------
+
+This is the most customisable way of finding element classes on a per-element
+basis.  It allows you to implement a custom lookup scheme in a subclass:
+
+.. sourcecode:: pycon
+
+  >>> class MyLookup(etree.CustomElementClassLookup):
+  ...     def lookup(self, node_type, document, namespace, name):
+  ...         return honk # be a bit more selective here ...
+
+  >>> parser = etree.XMLParser()
+  >>> parser.set_element_class_lookup(MyLookup())
+
+The ``.lookup()`` method must return either None (which triggers the
+fallback mechanism) or a subclass of ``lxml.etree.ElementBase``.  It
+can take any decision it wants based on the node type (one of
+"element", "comment", "PI", "entity"), the XML document of the
+element, or its namespace or tag name.
+
+
+Tree based element class lookup in Python
+-----------------------------------------
+
+Taking more elaborate decisions than allowed by the custom scheme is
+difficult to achieve in pure Python, as it results in a
+chicken-and-egg problem.  It would require access to the tree - before
+the elements in the tree have been instantiated as Python Element
+proxies.
+
+Luckily, there is a way to do this.  The ``PythonElementClassLookup``
+works similar to the custom lookup scheme:
+
+.. sourcecode:: pycon
+
+  >>> class MyLookup(etree.PythonElementClassLookup):
+  ...     def lookup(self, document, element):
+  ...         return MyElementClass # defined elsewhere
+
+  >>> parser = etree.XMLParser()
+  >>> parser.set_element_class_lookup(MyLookup())
+
+As before, the first argument to the ``lookup()`` method is the opaque
+document instance that contains the Element.  The second arguments is a
+lightweight Element proxy implementation that is only valid during the lookup.
+Do not try to keep a reference to it.  Once the lookup is finished, the proxy
+will become invalid.  You will get an ``AssertionError`` if you access any of
+the properties or methods outside the scope of the lookup call where they were
+instantiated.
+
+During the lookup, the element object behaves mostly like a normal Element
+instance.  It provides the properties ``tag``, ``text``, ``tail`` etc. and
+supports indexing, slicing and the ``getchildren()``, ``getparent()``
+etc. methods.  It does *not* support iteration, nor does it support any kind
+of modification.  All of its properties are read-only and it cannot be removed
+or inserted into other trees.  You can use it as a starting point to freely
+traverse the tree and collect any kind of information that its elements
+provide.  Once you have taken the decision which class to use for this
+element, you can simply return it and have lxml take care of cleaning up the
+instantiated proxy classes.
+
+Sidenote: this lookup scheme originally lived in a separate module called
+``lxml.pyclasslookup``.
+
+
+Generating XML with custom classes
+==================================
+
+Up to lxml 2.1, you could not instantiate proxy classes yourself.
+Only lxml.etree could do that when creating an object representation
+of an existing XML element.  Since lxml 2.2, however, instantiating
+this class will simply create a new Element:
+
+.. sourcecode:: pycon
+
+  >>> el = honk(honking = 'true')
+  >>> el.tag
+  'honk'
+  >>> el.honking
+  True
+
+Note, however, that the proxy you create here will be garbage
+collected just like any other proxy.  You can therefore not count on
+lxml.etree using the same class that you instantiated when you access
+this Element a second time after letting its reference go.  You should
+therefore always use a corresponding class lookup scheme that returns
+your Element proxy classes for the elements that they create.  The
+``ElementNamespaceClassLookup`` is generally a good match.
+
+You can use custom Element classes to quickly create XML fragments:
+
+.. sourcecode:: pycon
+
+  >>> class hale(etree.ElementBase): pass
+  >>> class bopp(etree.ElementBase): pass
+
+  >>> el = hale( "some ", honk(honking = 'true'), bopp, " text" )
+
+  >>> print(etree.tostring(el, encoding=unicode))
+  <hale>some <honk honking="true"/><bopp/> text</hale>
+
+
+Implementing namespaces
+=======================
+
+lxml allows you to implement namespaces, in a rather literal sense.  After
+setting up the namespace class lookup mechanism as described above, you can
+build a new element namespace (or retrieve an existing one) by calling the
+``get_namespace(uri)`` method of the lookup:
+
+.. sourcecode:: pycon
+
+  >>> lookup = etree.ElementNamespaceClassLookup()
+  >>> parser = etree.XMLParser()
+  >>> parser.set_element_class_lookup(lookup)
+
+  >>> namespace = lookup.get_namespace('http://hui.de/honk')
+
+and then register the new element type with that namespace, say, under the tag
+name ``honk``:
+
+.. sourcecode:: pycon
+
+  >>> namespace['honk'] = honk
+
+If you have many Element classes declared in one module, and they are
+all named like the elements they create, you can simply use
+``namespace.update(vars())`` at the end of your module to declare them
+automatically.  The implementation is smart enough to ignore
+everything that is not an Element class.
+
+After this, you create and use your XML elements through the normal API of
+lxml:
+
+.. sourcecode:: pycon
+
+  >>> xml = '<honk xmlns="http://hui.de/honk" honking="true"/>'
+  >>> honk_element = etree.XML(xml, parser)
+  >>> print(honk_element.honking)
+  True
+
+The same works when creating elements by hand:
+
+.. sourcecode:: pycon
+
+  >>> honk_element = parser.makeelement('{http://hui.de/honk}honk',
+  ...                                   honking='true')
+  >>> print(honk_element.honking)
+  True
+
+Essentially, what this allows you to do, is to give Elements a custom API
+based on their namespace and tag name.
+
+A somewhat related topic are `extension functions`_ which use a similar
+mechanism for registering extension functions in XPath and XSLT.
+
+.. _`extension functions`: extensions.html
+
+In the setup example above, we associated the ``honk`` Element class
+only with the 'honk' element.  If an XML tree contains different
+elements in the same namespace, they do not pick up the same
+implementation:
+
+.. sourcecode:: pycon
+
+  >>> xml = '<honk xmlns="http://hui.de/honk" honking="true"><bla/></honk>'
+  >>> honk_element = etree.XML(xml, parser)
+  >>> print(honk_element.honking)
+  True
+  >>> print(honk_element[0].honking)
+  Traceback (most recent call last):
+  ...
+  AttributeError: 'lxml.etree._Element' object has no attribute 'honking'
+
+You can therefore provide one implementation per element name in each
+namespace and have lxml select the right one on the fly.  If you want one
+element implementation per namespace (ignoring the element name) or prefer
+having a common class for most elements except a few, you can specify a
+default implementation for an entire namespace by registering that class with
+the empty element name (None).
+
+You may consider following an object oriented approach here.  If you build a
+class hierarchy of element classes, you can also implement a base class for a
+namespace that is used if no specific element class is provided.  Again, you
+can just pass None as an element name:
+
+.. sourcecode:: pycon
+
+  >>> class HonkNSElement(etree.ElementBase):
+  ...    def honk(self):
+  ...       return "HONK"
+  >>> namespace[None] = HonkNSElement # default Element for namespace
+
+  >>> class HonkElement(HonkNSElement):
+  ...    def honking(self):
+  ...       return self.get('honking') == 'true'
+  ...    honking = property(honking)
+  >>> namespace['honk'] = HonkElement # Element for specific tag
+
+Now you can rely on lxml to always return objects of type HonkNSElement or its
+subclasses for elements of this namespace:
+
+.. sourcecode:: pycon
+
+  >>> xml = '<honk xmlns="http://hui.de/honk" honking="true"><bla/></honk>'
+  >>> honk_element = etree.XML(xml, parser)
+
+  >>> print(type(honk_element))
+  <class 'HonkElement'>
+  >>> print(type(honk_element[0]))
+  <class 'HonkNSElement'>
+
+  >>> print(honk_element.honking)
+  True
+  >>> print(honk_element.honk())
+  HONK
+
+  >>> print(honk_element[0].honk())
+  HONK
+  >>> print(honk_element[0].honking)
+  Traceback (most recent call last):
+  ...
+  AttributeError: 'HonkNSElement' object has no attribute 'honking'
diff --git a/doc/sphinx/_sources/elementsoup.txt b/doc/sphinx/_sources/elementsoup.txt
new file mode 100644 (file)
index 0000000..d412de2
--- /dev/null
@@ -0,0 +1,201 @@
+====================
+BeautifulSoup Parser
+====================
+
+BeautifulSoup_ is a Python package that parses broken HTML, just like
+lxml supports it based on the parser of libxml2.  BeautifulSoup uses a
+different parsing approach.  It is not a real HTML parser but uses
+regular expressions to dive through tag soup.  It is therefore more
+forgiving in some cases and less good in others.  It is not uncommon
+that lxml/libxml2 parses and fixes broken HTML better, but
+BeautifulSoup has superiour `support for encoding detection`_.  It
+very much depends on the input which parser works better.
+
+.. _BeautifulSoup: http://www.crummy.com/software/BeautifulSoup/
+.. _`support for encoding detection`: http://www.crummy.com/software/BeautifulSoup/documentation.html#Beautiful%20Soup%20Gives%20You%20Unicode%2C%20Dammit
+.. _ElementSoup: http://effbot.org/zone/element-soup.htm
+
+To prevent users from having to choose their parser library in
+advance, lxml can interface to the parsing capabilities of
+BeautifulSoup through the ``lxml.html.soupparser`` module.  It
+provides three main functions: ``fromstring()`` and ``parse()`` to
+parse a string or file using BeautifulSoup into an ``lxml.html``
+document, and ``convert_tree()`` to convert an existing BeautifulSoup
+tree into a list of top-level Elements.
+
+.. contents::
+..
+   1  Parsing with the soupparser
+   2  Entity handling
+   3  Using soupparser as a fallback
+   4  Using only the encoding detection
+
+
+Parsing with the soupparser
+===========================
+
+The functions ``fromstring()`` and ``parse()`` behave as known from
+ElementTree.  The first returns a root Element, the latter returns an
+ElementTree.
+
+There is also a legacy module called ``lxml.html.ElementSoup``, which
+mimics the interface provided by ElementTree's own ElementSoup_
+module.  Note that the ``soupparser`` module was added in lxml 2.0.3.
+Previous versions of lxml 2.0.x only have the ``ElementSoup`` module.
+
+Here is a document full of tag soup, similar to, but not quite like, HTML:
+
+.. sourcecode:: pycon
+
+    >>> tag_soup = '<meta><head><title>Hello</head><body onload=crash()>Hi all<p>'
+
+all you need to do is pass it to the ``fromstring()`` function:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.html.soupparser import fromstring
+    >>> root = fromstring(tag_soup)
+
+To see what we have here, you can serialise it:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.etree import tostring
+    >>> print tostring(root, pretty_print=True),
+    <html>
+      <meta/>
+      <head>
+        <title>Hello</title>
+      </head>
+      <body onload="crash()">Hi all<p/></body>
+    </html>
+
+Not quite what you'd expect from an HTML page, but, well, it was broken
+already, right?  BeautifulSoup did its best, and so now it's a tree.
+
+To control which Element implementation is used, you can pass a
+``makeelement`` factory function to ``parse()`` and ``fromstring()``.
+By default, this is based on the HTML parser defined in ``lxml.html``.
+
+For a quick comparison, libxml2 2.6.32 parses the same tag soup as
+follows.  The main difference is that libxml2 tries harder to adhere
+to the structure of an HTML document and moves misplaced tags where
+they (likely) belong.  Note, however, that the result can vary between
+parser versions.
+
+.. sourcecode:: html
+
+    <html>
+      <head>
+        <meta/>
+        <title>Hello</title>
+      </head>
+      <body>
+        <p>Hi all</p>
+        <p/>
+      </body>
+    </html>
+
+
+Entity handling
+===============
+
+By default, the BeautifulSoup parser also replaces the entities it
+finds by their character equivalent.
+
+.. sourcecode:: pycon
+
+    >>> tag_soup = '<body>&copy;&euro;&#45;&#245;&#445;<p>'
+    >>> body = fromstring(tag_soup).find('.//body')
+    >>> body.text
+    u'\xa9\u20ac-\xf5\u01bd'
+
+If you want them back on the way out, you can just serialise with the
+default encoding, which is 'US-ASCII'.
+
+.. sourcecode:: pycon
+
+    >>> tostring(body)
+    '<body>&#169;&#8364;-&#245;&#445;<p/></body>'
+
+    >>> tostring(body, method="html")
+    '<body>&#169;&#8364;-&#245;&#445;<p></p></body>'
+
+Any other encoding will output the respective byte sequences.
+
+.. sourcecode:: pycon
+
+    >>> tostring(body, encoding="utf-8")
+    '<body>\xc2\xa9\xe2\x82\xac-\xc3\xb5\xc6\xbd<p/></body>'
+
+    >>> tostring(body, method="html", encoding="utf-8")
+    '<body>\xc2\xa9\xe2\x82\xac-\xc3\xb5\xc6\xbd<p></p></body>'
+
+    >>> tostring(body, encoding=unicode)
+    u'<body>\xa9\u20ac-\xf5\u01bd<p/></body>'
+
+    >>> tostring(body, method="html", encoding=unicode)
+    u'<body>\xa9\u20ac-\xf5\u01bd<p></p></body>'
+
+
+Using soupparser as a fallback
+==============================
+
+The downside of using this parser is that it is `much slower`_ than
+the HTML parser of lxml.  So if performance matters, you might want to
+consider using ``soupparser`` only as a fallback for certain cases.
+
+.. _`much slower`: http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/
+
+One common problem of lxml's parser is that it might not get the
+encoding right in cases where the document contains a ``<meta>`` tag
+at the wrong place.  In this case, you can exploit the fact that lxml
+serialises much faster than most other HTML libraries for Python.
+Just serialise the document to unicode and if that gives you an
+exception, re-parse it with BeautifulSoup to see if that works
+better.
+
+.. sourcecode:: pycon
+
+    >>> tag_soup = '''\
+    ... <meta http-equiv="Content-Type"
+    ...       content="text/html;charset=utf-8" />
+    ... <html>
+    ...   <head>
+    ...     <title>Hello W\xc3\xb6rld!</title>
+    ...   </head>
+    ...   <body>Hi all</body>
+    ... </html>'''
+
+    >>> import lxml.html
+    >>> import lxml.html.soupparser
+
+    >>> root = lxml.html.fromstring(tag_soup)
+    >>> try:
+    ...     ignore = tostring(root, encoding=unicode)
+    ... except UnicodeDecodeError:
+    ...     root = lxml.html.soupparser.fromstring(tag_soup)
+
+
+Using only the encoding detection
+=================================
+
+If you prefer a 'real' (and fast) HTML parser instead of the regular
+expression based one in BeautifulSoup, you can still benefit from
+BeautifulSoup's `support for encoding detection`_ in the
+``UnicodeDammit`` class.
+
+.. sourcecode:: pycon
+
+    >>> from BeautifulSoup import UnicodeDammit
+
+    >>> def decode_html(html_string):
+    ...     converted = UnicodeDammit(html_string, isHTML=True)
+    ...     if not converted.unicode:
+    ...         raise UnicodeDecodeError(
+    ...             "Failed to detect encoding, tried [%s]",
+    ...             ', '.join(converted.triedEncodings))
+    ...     # print converted.originalEncoding
+    ...     return converted.unicode
+
+    >>> root = lxml.html.fromstring(decode_html(tag_soup))
diff --git a/doc/sphinx/_sources/extensions.txt b/doc/sphinx/_sources/extensions.txt
new file mode 100644 (file)
index 0000000..61c4179
--- /dev/null
@@ -0,0 +1,587 @@
+====================================
+Python extensions for XPath and XSLT
+====================================
+
+This document describes how to use Python extension functions in XPath
+and XSLT like this:
+
+.. sourcecode:: xml
+
+  <xsl:value-of select="f:myPythonFunction(.//sometag)" />
+
+and extension elements in XSLT as in the following example:
+
+.. sourcecode:: xml
+
+  <xsl:template match="*">
+      <my:python-extension>
+          <some-content />
+      </my:python-extension>
+  </xsl:template>
+
+
+.. contents::
+.. 
+   1  XPath Extension functions
+     1.1  The FunctionNamespace
+     1.2  Global prefix assignment
+     1.3  The XPath context
+     1.4  Evaluators and XSLT
+     1.5  Evaluator-local extensions
+     1.6  What to return from a function
+   2  XSLT extension elements
+     2.1  Declaring extension elements
+     2.2  Applying XSL templates
+     2.3  Working with read-only elements
+
+..
+  >>> try: from StringIO import StringIO
+  ... except ImportError:
+  ...    from io import BytesIO
+  ...    def StringIO(s):
+  ...        if isinstance(s, str): s = s.encode("UTF-8")
+  ...        return BytesIO(s)
+
+
+XPath Extension functions
+=========================
+
+Here is how an extension function looks like.  As the first argument,
+it always receives a context object (see below).  The other arguments
+are provided by the respective call in the XPath expression, one in
+the following examples.  Any number of arguments is allowed:
+
+.. sourcecode:: pycon
+
+  >>> def hello(dummy, a):
+  ...    return "Hello %s" % a
+  >>> def ola(dummy, a):
+  ...    return "Ola %s" % a
+  >>> def loadsofargs(dummy, *args):
+  ...    return "Got %d arguments." % len(args)
+
+
+The FunctionNamespace
+---------------------
+
+In order to use a function in XPath or XSLT, it needs to have a
+(namespaced) name by which it can be called during evaluation.  This
+is done using the FunctionNamespace class.  For simplicity, we choose
+the empty namespace (None):
+
+.. sourcecode:: pycon
+
+  >>> from lxml import etree
+  >>> ns = etree.FunctionNamespace(None)
+  >>> ns['hello'] = hello
+  >>> ns['countargs'] = loadsofargs
+
+This registers the function `hello` with the name `hello` in the default
+namespace (None), and the function `loadsofargs` with the name `countargs`.
+Now we're going to create a document that we can run XPath expressions
+against:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML('<a><b>Haegar</b></a>')
+  >>> doc = etree.ElementTree(root)
+
+Done. Now we can have XPath expressions call our new function:
+
+.. sourcecode:: pycon
+
+  >>> print(root.xpath("hello('world')"))
+  Hello world
+  >>> print(root.xpath('hello(local-name(*))'))
+  Hello b
+  >>> print(root.xpath('hello(string(b))'))
+  Hello Haegar
+  >>> print(root.xpath('countargs(., b, ./*)'))
+  Got 3 arguments.
+
+Note how we call both a Python function (`hello`) and an XPath built-in
+function (`string`) in exactly the same way.  Normally, however, you would
+want to separate the two in different namespaces.  The FunctionNamespace class
+allows you to do this:
+
+.. sourcecode:: pycon
+
+  >>> ns = etree.FunctionNamespace('http://mydomain.org/myfunctions')
+  >>> ns['hello'] = hello
+  >>> prefixmap = {'f' : 'http://mydomain.org/myfunctions'}
+  >>> print(root.xpath('f:hello(local-name(*))', namespaces=prefixmap))
+  Hello b
+
+
+Global prefix assignment
+------------------------
+
+In the last example, you had to specify a prefix for the function namespace.
+If you always use the same prefix for a function namespace, you can also
+register it with the namespace:
+
+.. sourcecode:: pycon
+
+  >>> ns = etree.FunctionNamespace('http://mydomain.org/myother/functions')
+  >>> ns.prefix = 'es'
+  >>> ns['hello'] = ola
+  >>> print(root.xpath('es:hello(local-name(*))'))
+  Ola b
+
+This is a global assignment, so take care not to assign the same prefix to
+more than one namespace.  The resulting behaviour in that case is completely
+undefined.  It is always a good idea to consistently use the same meaningful
+prefix for each namespace throughout your application.
+
+The prefix assignment only works with functions and FunctionNamespace objects,
+not with the general Namespace object that registers element classes.  The
+reasoning is that elements in lxml do not care about prefixes anyway, so it
+would rather complicate things than be of any help.
+
+
+The XPath context
+-----------------
+
+Functions get a context object as first parameter.  In lxml 1.x, this value
+was None, but since lxml 2.0 it provides two properties: ``eval_context`` and
+``context_node``.  The context node is the Element where the current function
+is called:
+
+.. sourcecode:: pycon
+
+  >>> def print_tag(context, nodes):
+  ...     print("%s: %s" % (context.context_node.tag, [ n.tag for n in nodes ]))
+
+  >>> ns = etree.FunctionNamespace('http://mydomain.org/printtag')
+  >>> ns.prefix = "pt"
+  >>> ns["print_tag"] = print_tag
+
+  >>> ignore = root.xpath("//*[pt:print_tag(.//*)]")
+  a: ['b']
+  b: []
+
+The ``eval_context`` is a dictionary that is local to the evaluation.  It
+allows functions to keep state:
+
+.. sourcecode:: pycon
+
+  >>> def print_context(context):
+  ...     context.eval_context[context.context_node.tag] = "done"
+  ...     entries = list(context.eval_context.items())
+  ...     entries.sort()
+  ...     print(entries)
+  >>> ns["print_context"] = print_context
+
+  >>> ignore = root.xpath("//*[pt:print_context()]")
+  [('a', 'done')]
+  [('a', 'done'), ('b', 'done')]
+
+
+Evaluators and XSLT
+-------------------
+
+Extension functions work for all ways of evaluating XPath expressions and for
+XSL transformations:
+
+.. sourcecode:: pycon
+
+  >>> e = etree.XPathEvaluator(doc)
+  >>> print(e('es:hello(local-name(/a))'))
+  Ola a
+
+  >>> namespaces = {'f' : 'http://mydomain.org/myfunctions'}
+  >>> e = etree.XPathEvaluator(doc, namespaces=namespaces)
+  >>> print(e('f:hello(local-name(/a))'))
+  Hello a
+
+  >>> xslt = etree.XSLT(etree.XML('''
+  ...   <stylesheet version="1.0"
+  ...          xmlns="http://www.w3.org/1999/XSL/Transform"
+  ...          xmlns:es="http://mydomain.org/myother/functions">
+  ...     <output method="text" encoding="ASCII"/>
+  ...     <template match="/">
+  ...       <value-of select="es:hello(string(//b))"/>
+  ...     </template>
+  ...   </stylesheet>
+  ... '''))
+  >>> print(xslt(doc))
+  Ola Haegar
+
+It is also possible to register namespaces with a single evaluator after its
+creation.  While the following example involves no functions, the idea should
+still be clear:
+
+.. sourcecode:: pycon
+  
+  >>> f = StringIO('<a xmlns="http://mydomain.org/myfunctions" />')
+  >>> ns_doc = etree.parse(f)
+  >>> e = etree.XPathEvaluator(ns_doc)
+  >>> e('/a')
+  []
+
+This returns nothing, as we did not ask for the right namespace.  When we
+register the namespace with the evaluator, however, we can access it via a
+prefix:
+
+.. sourcecode:: pycon
+
+  >>> e.register_namespace('foo', 'http://mydomain.org/myfunctions')
+  >>> e('/foo:a')[0].tag
+  '{http://mydomain.org/myfunctions}a'
+
+Note that this prefix mapping is only known to this evaluator, as opposed to
+the global mapping of the FunctionNamespace objects:
+
+.. sourcecode:: pycon
+
+  >>> e2 = etree.XPathEvaluator(ns_doc)
+  >>> e2('/foo:a')
+  Traceback (most recent call last):
+  ...
+  lxml.etree.XPathEvalError: Undefined namespace prefix
+
+
+Evaluator-local extensions
+--------------------------
+
+Apart from the global registration of extension functions, there is also a way
+of making extensions known to a single Evaluator or XSLT.  All evaluators and
+the XSLT object accept a keyword argument ``extensions`` in their constructor.
+The value is a dictionary mapping (namespace, name) tuples to functions:
+
+.. sourcecode:: pycon
+
+  >>> extensions = {('local-ns', 'local-hello') : hello}
+  >>> namespaces = {'l' : 'local-ns'}
+
+  >>> e = etree.XPathEvaluator(doc, namespaces=namespaces, extensions=extensions)
+  >>> print(e('l:local-hello(string(b))'))
+  Hello Haegar
+
+For larger numbers of extension functions, you can define classes or modules
+and use the ``Extension`` helper:
+
+.. sourcecode:: pycon
+
+  >>> class MyExt:
+  ...     def function1(self, _, arg):
+  ...         return '1'+arg
+  ...     def function2(self, _, arg):
+  ...         return '2'+arg
+  ...     def function3(self, _, arg):
+  ...         return '3'+arg
+
+  >>> ext_module = MyExt()
+  >>> functions = ('function1', 'function2')
+  >>> extensions = etree.Extension( ext_module, functions, ns='local-ns' )
+
+  >>> e = etree.XPathEvaluator(doc, namespaces=namespaces, extensions=extensions)
+  >>> print(e('l:function1(string(b))'))
+  1Haegar
+
+The optional second argument to ``Extension`` can either be 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
+original name (if their name does not start with '_').
+
+The additional ``ns`` keyword argument takes a namespace URI or
+``None`` (also if left out) for the default namespace.  The following
+examples will therefore all do the same thing:
+
+.. sourcecode:: pycon
+
+  >>> functions = ('function1', 'function2', 'function3')
+  >>> extensions = etree.Extension( ext_module, functions )
+  >>> e = etree.XPathEvaluator(doc, extensions=extensions)
+  >>> print(e('function1(function2(function3(string(b))))'))
+  123Haegar
+
+  >>> extensions = etree.Extension( ext_module, functions, ns=None )
+  >>> e = etree.XPathEvaluator(doc, extensions=extensions)
+  >>> print(e('function1(function2(function3(string(b))))'))
+  123Haegar
+
+  >>> extensions = etree.Extension(ext_module)
+  >>> e = etree.XPathEvaluator(doc, extensions=extensions)
+  >>> print(e('function1(function2(function3(string(b))))'))
+  123Haegar
+
+  >>> functions = {
+  ...     'function1' : 'function1',
+  ...     'function2' : 'function2',
+  ...     'function3' : 'function3'
+  ...     }
+  >>> extensions = etree.Extension(ext_module, functions)
+  >>> e = etree.XPathEvaluator(doc, extensions=extensions)
+  >>> print(e('function1(function2(function3(string(b))))'))
+  123Haegar
+
+For convenience, you can also pass a sequence of extensions:
+
+.. sourcecode:: pycon
+
+  >>> extensions1 = etree.Extension(ext_module)
+  >>> extensions2 = etree.Extension(ext_module, ns='local-ns')
+  >>> e = etree.XPathEvaluator(doc, extensions=[extensions1, extensions2],
+  ...                          namespaces=namespaces)
+  >>> print(e('function1(l:function2(function3(string(b))))'))
+  123Haegar
+
+
+What to return from a function
+------------------------------
+
+.. _`XPath return values`: xpathxslt.html#xpath-return-values
+
+Extension functions can return any data type for which there is an XPath
+equivalent (see the documentation on `XPath return values`).  This includes
+numbers, boolean values, elements and lists of elements.  Note that integers
+will also be returned as floats:
+
+.. sourcecode:: pycon
+
+  >>> def returnsFloat(_):
+  ...    return 1.7
+  >>> def returnsInteger(_):
+  ...    return 1
+  >>> def returnsBool(_):
+  ...    return True
+  >>> def returnFirstNode(_, nodes):
+  ...    return nodes[0]
+
+  >>> ns = etree.FunctionNamespace(None)
+  >>> ns['float'] = returnsFloat
+  >>> ns['int']   = returnsInteger
+  >>> ns['bool']  = returnsBool
+  >>> ns['first'] = returnFirstNode
+
+  >>> e = etree.XPathEvaluator(doc)
+  >>> e("float()")
+  1.7
+  >>> e("int()")
+  1.0
+  >>> int( e("int()") )
+  1
+  >>> e("bool()")
+  True
+  >>> e("count(first(//b))")
+  1.0
+
+As the last example shows, you can pass the results of functions back into
+the XPath expression.  Elements and sequences of elements are treated as
+XPath node-sets:
+
+.. sourcecode:: pycon
+
+  >>> def returnsNodeSet(_):
+  ...     results1 = etree.Element('results1')
+  ...     etree.SubElement(results1, 'result').text = "Alpha"
+  ...     etree.SubElement(results1, 'result').text = "Beta"
+  ...
+  ...     results2 = etree.Element('results2')
+  ...     etree.SubElement(results2, 'result').text = "Gamma"
+  ...     etree.SubElement(results2, 'result').text = "Delta"
+  ...
+  ...     results3 = etree.SubElement(results2, 'subresult')
+  ...     return [results1, results2, results3]
+
+  >>> ns['new-node-set'] = returnsNodeSet
+
+  >>> e = etree.XPathEvaluator(doc)
+
+  >>> r = e("new-node-set()/result")
+  >>> print([ t.text for t in r ])
+  ['Alpha', 'Beta', 'Gamma', 'Delta']
+
+  >>> r = e("new-node-set()")
+  >>> print([ t.tag for t in r ])
+  ['results1', 'results2', 'subresult']
+  >>> print([ len(t) for t in r ])
+  [2, 3, 0]
+  >>> r[0][0].text
+  'Alpha'
+
+  >>> etree.tostring(r[0])
+  b'<results1><result>Alpha</result><result>Beta</result></results1>'
+
+  >>> etree.tostring(r[1])
+  b'<results2><result>Gamma</result><result>Delta</result><subresult/></results2>'
+
+  >>> etree.tostring(r[2])
+  b'<subresult/>'
+
+The current implementation deep-copies newly created elements in node-sets.
+Only the elements and their children are passed on, no outlying parents or
+tail texts will be available in the result.  This also means that in the above
+example, the `subresult` elements in `results2` and `results3` are no longer
+identical within the node-set, they belong to independent trees:
+
+.. sourcecode:: pycon
+
+  >>> print("%s - %s" % (r[1][-1].tag, r[2].tag))
+  subresult - subresult
+  >>> print(r[1][-1] == r[2])
+  False
+  >>> print(r[1][-1].getparent().tag)
+  results2
+  >>> print(r[2].getparent())
+  None
+
+This is an implementation detail that you should be aware of, but you should
+avoid relying on it in your code.  Note that elements taken from the source
+document (the most common case) do not suffer from this restriction.  They
+will always be passed unchanged.
+
+
+XSLT extension elements
+=======================
+
+Just like the XPath extension functions described above, lxml supports
+custom extension *elements* in XSLT.  This means, you can write XSLT
+code like this:
+
+.. sourcecode:: xml
+
+  <xsl:template match="*">
+      <my:python-extension>
+          <some-content />
+      </my:python-extension>
+  </xsl:template>
+
+And then you can implement the element in Python like this:
+
+.. sourcecode:: pycon
+
+  >>> class MyExtElement(etree.XSLTExtension):
+  ...     def execute(self, context, self_node, input_node, output_parent):
+  ...         print("Hello from XSLT!")
+  ...         output_parent.text = "I did it!"
+  ...         # just copy own content input to output
+  ...         output_parent.extend( list(self_node) )
+
+The arguments passed to the ``.execute()`` method  are
+
+context
+    The opaque evaluation context.  You need this when calling back
+    into the XSLT processor.
+
+self_node
+    A read-only Element object that represents the extension element
+    in the stylesheet.
+
+input_node
+    The current context Element in the input document (also read-only).
+
+output_parent
+    The current insertion point in the output document.  You can
+    append elements or set the text value (not the tail).  Apart from
+    that, the Element is read-only.
+
+
+Declaring extension elements
+----------------------------
+
+In XSLT, extension elements can be used like any other XSLT element,
+except that they must be declared as extensions using the standard
+XSLT ``extension-element-prefixes`` option:
+
+.. sourcecode:: pycon
+
+  >>> xslt_ext_tree = etree.XML('''
+  ... <xsl:stylesheet version="1.0"
+  ...     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  ...     xmlns:my="testns"
+  ...     extension-element-prefixes="my">
+  ...     <xsl:template match="/">
+  ...         <foo><my:ext><child>XYZ</child></my:ext></foo>
+  ...     </xsl:template>
+  ...     <xsl:template match="child">
+  ...         <CHILD>--xyz--</CHILD>
+  ...     </xsl:template>
+  ... </xsl:stylesheet>''')
+
+To register the extension, add its namespace and name to the extension
+mapping of the XSLT object:
+
+.. sourcecode:: pycon
+
+  >>> my_extension = MyExtElement()
+  >>> extensions = { ('testns', 'ext') : my_extension }
+  >>> transform = etree.XSLT(xslt_ext_tree, extensions = extensions)
+
+Note how we pass an instance here, not the class of the extension.
+Now we can run the transformation and see how our extension is
+called:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML('<dummy/>')
+  >>> result = transform(root)
+  Hello from XSLT!
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>I did it!<child>XYZ</child></foo>\n'
+
+
+Applying XSL templates
+----------------------
+
+XSLT extensions are a very powerful feature that allows you to
+interact directly with the XSLT processor.  You have full read-only
+access to the input document and the stylesheet, and you can even call
+back into the XSLT processor to process templates.  Here is an example
+that passes an Element into the ``.apply_templates()`` method of the
+``XSLTExtension`` instance:
+
+.. sourcecode:: pycon
+
+  >>> class MyExtElement(etree.XSLTExtension):
+  ...     def execute(self, context, self_node, input_node, output_parent):
+  ...         child = self_node[0]
+  ...         results = self.apply_templates(context, child)
+  ...         output_parent.append(results[0])
+
+  >>> my_extension = MyExtElement()
+  >>> extensions = { ('testns', 'ext') : my_extension }
+  >>> transform = etree.XSLT(xslt_ext_tree, extensions = extensions)
+
+  >>> root = etree.XML('<dummy/>')
+  >>> result = transform(root)
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo><CHILD>--xyz--</CHILD></foo>\n'
+
+Note how we applied the templates to a child of the extension element
+itself, i.e. to an element inside the stylesheet instead of an element
+of the input document.
+
+
+Working with read-only elements
+-------------------------------
+
+There is one important thing to keep in mind: all Elements that the
+``execute()`` method gets to deal with are read-only Elements, so you
+cannot modify them.  They also will not easily work in the API.  For
+example, you cannot pass them to the ``tostring()`` function or wrap
+them in an ``ElementTree``.
+
+What you can do, however, is to deepcopy them to make them normal
+Elements, and then modify them using the normal etree API.  So this
+will work:
+
+.. sourcecode:: pycon
+
+  >>> from copy import deepcopy
+  >>> class MyExtElement(etree.XSLTExtension):
+  ...     def execute(self, context, self_node, input_node, output_parent):
+  ...         child = deepcopy(self_node[0])
+  ...         child.text = "NEW TEXT"
+  ...         output_parent.append(child)
+
+  >>> my_extension = MyExtElement()
+  >>> extensions = { ('testns', 'ext') : my_extension }
+  >>> transform = etree.XSLT(xslt_ext_tree, extensions = extensions)
+
+  >>> root = etree.XML('<dummy/>')
+  >>> result = transform(root)
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo><child>NEW TEXT</child></foo>\n'
diff --git a/doc/sphinx/_sources/html/api/api-objects.txt b/doc/sphinx/_sources/html/api/api-objects.txt
new file mode 100644 (file)
index 0000000..567fe82
--- /dev/null
@@ -0,0 +1,7284 @@
+lxml   lxml-module.html
+lxml.__package__       lxml-module.html#__package__
+lxml.ElementInclude    lxml.ElementInclude-module.html
+lxml.ElementInclude.include    lxml.ElementInclude-module.html#include
+lxml.ElementInclude.XINCLUDE_INCLUDE   lxml.ElementInclude-module.html#XINCLUDE_INCLUDE
+lxml.ElementInclude.XINCLUDE_FALLBACK  lxml.ElementInclude-module.html#XINCLUDE_FALLBACK
+lxml.ElementInclude._include   lxml.ElementInclude-module.html#_include
+lxml.ElementInclude.__package__        lxml.ElementInclude-module.html#__package__
+lxml.ElementInclude._lxml_default_loader       lxml.ElementInclude-module.html#_lxml_default_loader
+lxml.ElementInclude.XINCLUDE   lxml.ElementInclude-module.html#XINCLUDE
+lxml.ElementInclude._wrap_et_loader    lxml.ElementInclude-module.html#_wrap_et_loader
+lxml.ElementInclude.default_loader     lxml.ElementInclude-module.html#default_loader
+lxml.builder   lxml.builder-module.html
+lxml.builder.E lxml.builder-module.html#E
+lxml.builder.__package__       lxml.builder-module.html#__package__
+lxml.builder.callable  lxml.builder-module.html#callable
+lxml.cssselect lxml.cssselect-module.html
+lxml.cssselect._el_re  lxml.cssselect-module.html#_el_re
+lxml.cssselect.parse_attrib    lxml.cssselect-module.html#parse_attrib
+lxml.cssselect.parse_selector_group    lxml.cssselect-module.html#parse_selector_group
+lxml.cssselect.css_to_xpath    lxml.cssselect-module.html#css_to_xpath
+lxml.cssselect.parse_series    lxml.cssselect-module.html#parse_series
+lxml.cssselect.xpath_literal   lxml.cssselect-module.html#xpath_literal
+lxml.cssselect.__package__     lxml.cssselect-module.html#__package__
+lxml.cssselect.tokenize        lxml.cssselect-module.html#tokenize
+lxml.cssselect._illegal_symbol lxml.cssselect-module.html#_illegal_symbol
+lxml.cssselect.unescape_string_literal lxml.cssselect-module.html#unescape_string_literal
+lxml.cssselect.parse_simple_selector   lxml.cssselect-module.html#parse_simple_selector
+lxml.cssselect._match_count_number     lxml.cssselect-module.html#_match_count_number
+lxml.cssselect.ns      lxml.cssselect-module.html#ns
+lxml.cssselect._id_re  lxml.cssselect-module.html#_id_re
+lxml.cssselect._match_whitespace       lxml.cssselect-module.html#_match_whitespace
+lxml.cssselect.is_int  lxml.cssselect-module.html#is_int
+lxml.cssselect.split_at_string_escapes lxml.cssselect-module.html#split_at_string_escapes
+lxml.cssselect._replace_comments       lxml.cssselect-module.html#_replace_comments
+lxml.cssselect.tokenize_escaped_string lxml.cssselect-module.html#tokenize_escaped_string
+lxml.cssselect._make_lower_case        lxml.cssselect-module.html#_make_lower_case
+lxml.cssselect._class_re       lxml.cssselect-module.html#_class_re
+lxml.cssselect.split_at_single_quotes  lxml.cssselect-module.html#split_at_single_quotes
+lxml.cssselect.tokenize_symbol lxml.cssselect-module.html#tokenize_symbol
+lxml.cssselect.parse   lxml.cssselect-module.html#parse
+lxml.cssselect.parse_selector  lxml.cssselect-module.html#parse_selector
+lxml.doctestcompare    lxml.doctestcompare-module.html
+lxml.doctestcompare._norm_whitespace_re        lxml.doctestcompare-module.html#_norm_whitespace_re
+lxml.doctestcompare.norm_whitespace    lxml.doctestcompare-module.html#norm_whitespace
+lxml.doctestcompare.PARSE_XML  lxml.doctestcompare-module.html#PARSE_XML
+lxml.doctestcompare._IS_PYTHON_3       lxml.doctestcompare-module.html#_IS_PYTHON_3
+lxml.doctestcompare._find_doctest_frame        lxml.doctestcompare-module.html#_find_doctest_frame
+lxml.doctestcompare.strip      lxml.doctestcompare-module.html#strip
+lxml.doctestcompare._repr_re   lxml.doctestcompare-module.html#_repr_re
+lxml.doctestcompare._html_parser       lxml.doctestcompare-module.html#_html_parser
+lxml.doctestcompare.NOPARSE_MARKUP     lxml.doctestcompare-module.html#NOPARSE_MARKUP
+lxml.doctestcompare.__package__        lxml.doctestcompare-module.html#__package__
+lxml.doctestcompare.html_fromstring    lxml.doctestcompare-module.html#html_fromstring
+lxml.doctestcompare.temp_install       lxml.doctestcompare-module.html#temp_install
+lxml.doctestcompare.__test__   lxml.doctestcompare-module.html#__test__
+lxml.doctestcompare.install    lxml.doctestcompare-module.html#install
+lxml.doctestcompare.PARSE_HTML lxml.doctestcompare-module.html#PARSE_HTML
+lxml.etree     lxml.etree-module.html
+lxml.etree.XPathEvaluator      lxml.etree-module.html#XPathEvaluator
+lxml.etree.XMLID       lxml.etree-module.html#XMLID
+lxml.etree.LIBXSLT_VERSION     lxml.etree-module.html#LIBXSLT_VERSION
+lxml.etree.XMLDTDID    lxml.etree-module.html#XMLDTDID
+lxml.etree.ElementTree lxml.etree-module.html#ElementTree
+lxml.etree.cleanup_namespaces  lxml.etree-module.html#cleanup_namespaces
+lxml.etree.set_default_parser  lxml.etree-module.html#set_default_parser
+lxml.etree.parseid     lxml.etree-module.html#parseid
+lxml.etree.tostring    lxml.etree-module.html#tostring
+lxml.etree.iselement   lxml.etree-module.html#iselement
+lxml.etree.FunctionNamespace   lxml.etree-module.html#FunctionNamespace
+lxml.etree.strip_attributes    lxml.etree-module.html#strip_attributes
+lxml.etree.Entity      lxml.etree-module.html#Entity
+lxml.etree.__package__ lxml.etree-module.html#__package__
+lxml.etree.strip_elements      lxml.etree-module.html#strip_elements
+lxml.etree.HTML        lxml.etree-module.html#HTML
+lxml.etree.PI  lxml.etree-module.html#PI
+lxml.etree.Extension   lxml.etree-module.html#Extension
+lxml.etree.DEBUG       lxml.etree-module.html#DEBUG
+lxml.etree.Comment     lxml.etree-module.html#Comment
+lxml.etree.ProcessingInstruction       lxml.etree-module.html#ProcessingInstruction
+lxml.etree.LXML_VERSION        lxml.etree-module.html#LXML_VERSION
+lxml.etree.LIBXML_COMPILED_VERSION     lxml.etree-module.html#LIBXML_COMPILED_VERSION
+lxml.etree.strip_tags  lxml.etree-module.html#strip_tags
+lxml.etree.tounicode   lxml.etree-module.html#tounicode
+lxml.etree.LIBXSLT_COMPILED_VERSION    lxml.etree-module.html#LIBXSLT_COMPILED_VERSION
+lxml.etree.dump        lxml.etree-module.html#dump
+lxml.etree.__pyx_capi__        lxml.etree-module.html#__pyx_capi__
+lxml.etree.XML lxml.etree-module.html#XML
+lxml.etree.use_global_python_log       lxml.etree-module.html#use_global_python_log
+lxml.etree.LIBXML_VERSION      lxml.etree-module.html#LIBXML_VERSION
+lxml.etree.tostringlist        lxml.etree-module.html#tostringlist
+lxml.etree.SubElement  lxml.etree-module.html#SubElement
+lxml.etree.get_default_parser  lxml.etree-module.html#get_default_parser
+lxml.etree.register_namespace  lxml.etree-module.html#register_namespace
+lxml.etree.parse       lxml.etree-module.html#parse
+lxml.etree.set_element_class_lookup    lxml.etree-module.html#set_element_class_lookup
+lxml.etree.clear_error_log     lxml.etree-module.html#clear_error_log
+lxml.etree.fromstringlist      lxml.etree-module.html#fromstringlist
+lxml.etree.Element     lxml.etree-module.html#Element
+lxml.etree.fromstring  lxml.etree-module.html#fromstring
+lxml.etree.__test__    lxml.etree-module.html#__test__
+lxml.html      lxml.html-module.html
+lxml.html._css_import_re       lxml.html-module.html#_css_import_re
+lxml.html._css_url_re  lxml.html-module.html#_css_url_re
+lxml.html.parse        lxml.html-module.html#parse
+lxml.html._nons        lxml.html-module.html#_nons
+lxml.html._forms_xpath lxml.html-module.html#_forms_xpath
+lxml.html._contains_block_level_tag    lxml.html-module.html#_contains_block_level_tag
+lxml.html._element_name        lxml.html-module.html#_element_name
+lxml.html._archive_re  lxml.html-module.html#_archive_re
+lxml.html.iterlinks    lxml.html-module.html#iterlinks
+lxml.html.__package__  lxml.html-module.html#__package__
+lxml.html._collect_string_content      lxml.html-module.html#_collect_string_content
+lxml.html.submit_form  lxml.html-module.html#submit_form
+lxml.html.xhtml_parser lxml.html-module.html#xhtml_parser
+lxml.html.XHTML_NAMESPACE      lxml.html-module.html#XHTML_NAMESPACE
+lxml.html._id_xpath    lxml.html-module.html#_id_xpath
+lxml.html.make_links_absolute  lxml.html-module.html#make_links_absolute
+lxml.html.resolve_base_href    lxml.html-module.html#resolve_base_href
+lxml.html.__bytes_replace_meta_content_type    lxml.html-module.html#__bytes_replace_meta_content_type
+lxml.html.rewrite_links        lxml.html-module.html#rewrite_links
+lxml.html.fragment_fromstring  lxml.html-module.html#fragment_fromstring
+lxml.html.html_to_xhtml        lxml.html-module.html#html_to_xhtml
+lxml.html._unquote_match       lxml.html-module.html#_unquote_match
+lxml.html.fragments_fromstring lxml.html-module.html#fragments_fromstring
+lxml.html.__str_replace_meta_content_type      lxml.html-module.html#__str_replace_meta_content_type
+lxml.html._options_xpath       lxml.html-module.html#_options_xpath
+lxml.html.document_fromstring  lxml.html-module.html#document_fromstring
+lxml.html.Element      lxml.html-module.html#Element
+lxml.html.__fix_docstring      lxml.html-module.html#__fix_docstring
+lxml.html._class_xpath lxml.html-module.html#_class_xpath
+lxml.html._rel_links_xpath     lxml.html-module.html#_rel_links_xpath
+lxml.html.tostring     lxml.html-module.html#tostring
+lxml.html.find_class   lxml.html-module.html#find_class
+lxml.html.find_rel_links       lxml.html-module.html#find_rel_links
+lxml.html.html_parser  lxml.html-module.html#html_parser
+lxml.html.open_in_browser      lxml.html-module.html#open_in_browser
+lxml.html.fromstring   lxml.html-module.html#fromstring
+lxml.html._label_xpath lxml.html-module.html#_label_xpath
+lxml.html._transform_result    lxml.html-module.html#_transform_result
+lxml.html.open_http_urllib     lxml.html-module.html#open_http_urllib
+lxml.html.xhtml_to_html        lxml.html-module.html#xhtml_to_html
+lxml.html.ElementSoup  lxml.html.ElementSoup-module.html
+lxml.html.ElementSoup.parse    lxml.html.ElementSoup-module.html#parse
+lxml.html.ElementSoup._parse   lxml.html.soupparser-module.html#parse
+lxml.html.ElementSoup.convert_tree     lxml.html.ElementSoup-module.html#convert_tree
+lxml.html.ElementSoup.__doc__  lxml.html.ElementSoup-module.html#__doc__
+lxml.html.ElementSoup.__package__      lxml.html.ElementSoup-module.html#__package__
+lxml.html.builder      lxml.html.builder-module.html
+lxml.html.builder.BLOCKQUOTE   lxml.html.builder-module.html#BLOCKQUOTE
+lxml.html.builder.OBJECT       lxml.html.builder-module.html#OBJECT
+lxml.html.builder.LINK lxml.html.builder-module.html#LINK
+lxml.html.builder.BR   lxml.html.builder-module.html#BR
+lxml.html.builder.OPTGROUP     lxml.html.builder-module.html#OPTGROUP
+lxml.html.builder.__package__  lxml.html.builder-module.html#__package__
+lxml.html.builder.SUB  lxml.html.builder-module.html#SUB
+lxml.html.builder.PRE  lxml.html.builder-module.html#PRE
+lxml.html.builder.FRAME        lxml.html.builder-module.html#FRAME
+lxml.html.builder.BODY lxml.html.builder-module.html#BODY
+lxml.html.builder.TH   lxml.html.builder-module.html#TH
+lxml.html.builder.P    lxml.html.builder-module.html#P
+lxml.html.builder.BASE lxml.html.builder-module.html#BASE
+lxml.html.builder.TFOOT        lxml.html.builder-module.html#TFOOT
+lxml.html.builder.VAR  lxml.html.builder-module.html#VAR
+lxml.html.builder.MAP  lxml.html.builder-module.html#MAP
+lxml.html.builder.OL   lxml.html.builder-module.html#OL
+lxml.html.builder.TEXTAREA     lxml.html.builder-module.html#TEXTAREA
+lxml.html.builder.ACRONYM      lxml.html.builder-module.html#ACRONYM
+lxml.html.builder.MENU lxml.html.builder-module.html#MENU
+lxml.html.builder.DT   lxml.html.builder-module.html#DT
+lxml.html.builder.ADDRESS      lxml.html.builder-module.html#ADDRESS
+lxml.html.builder.CODE lxml.html.builder-module.html#CODE
+lxml.html.builder.HR   lxml.html.builder-module.html#HR
+lxml.html.builder.ISINDEX      lxml.html.builder-module.html#ISINDEX
+lxml.html.builder.HEAD lxml.html.builder-module.html#HEAD
+lxml.html.builder.LABEL        lxml.html.builder-module.html#LABEL
+lxml.html.builder.META lxml.html.builder-module.html#META
+lxml.html.builder.DEL  lxml.html.builder-module.html#DEL
+lxml.html.builder.FONT lxml.html.builder-module.html#FONT
+lxml.html.builder.SELECT       lxml.html.builder-module.html#SELECT
+lxml.html.builder.NOFRAMES     lxml.html.builder-module.html#NOFRAMES
+lxml.html.builder.CENTER       lxml.html.builder-module.html#CENTER
+lxml.html.builder.KBD  lxml.html.builder-module.html#KBD
+lxml.html.builder.HTML lxml.html.builder-module.html#HTML
+lxml.html.builder.EM   lxml.html.builder-module.html#EM
+lxml.html.builder.FRAMESET     lxml.html.builder-module.html#FRAMESET
+lxml.html.builder.FIELDSET     lxml.html.builder-module.html#FIELDSET
+lxml.html.builder.FOR  lxml.html.builder-module.html#FOR
+lxml.html.builder.BASEFONT     lxml.html.builder-module.html#BASEFONT
+lxml.html.builder.BDO  lxml.html.builder-module.html#BDO
+lxml.html.builder.PARAM        lxml.html.builder-module.html#PARAM
+lxml.html.builder.S    lxml.html.builder-module.html#S
+lxml.html.builder.INPUT        lxml.html.builder-module.html#INPUT
+lxml.html.builder.H2   lxml.html.builder-module.html#H2
+lxml.html.builder.H3   lxml.html.builder-module.html#H3
+lxml.html.builder.BUTTON       lxml.html.builder-module.html#BUTTON
+lxml.html.builder.SCRIPT       lxml.html.builder-module.html#SCRIPT
+lxml.html.builder.H6   lxml.html.builder-module.html#H6
+lxml.html.builder.H4   lxml.html.builder-module.html#H4
+lxml.html.builder.INS  lxml.html.builder-module.html#INS
+lxml.html.builder.UL   lxml.html.builder-module.html#UL
+lxml.html.builder.STRIKE       lxml.html.builder-module.html#STRIKE
+lxml.html.builder.OPTION       lxml.html.builder-module.html#OPTION
+lxml.html.builder.TITLE        lxml.html.builder-module.html#TITLE
+lxml.html.builder.SUP  lxml.html.builder-module.html#SUP
+lxml.html.builder.SMALL        lxml.html.builder-module.html#SMALL
+lxml.html.builder.STRONG       lxml.html.builder-module.html#STRONG
+lxml.html.builder.COL  lxml.html.builder-module.html#COL
+lxml.html.builder.AREA lxml.html.builder-module.html#AREA
+lxml.html.builder.APPLET       lxml.html.builder-module.html#APPLET
+lxml.html.builder.TABLE        lxml.html.builder-module.html#TABLE
+lxml.html.builder.B    lxml.html.builder-module.html#B
+lxml.html.builder.IMG  lxml.html.builder-module.html#IMG
+lxml.html.builder.DFN  lxml.html.builder-module.html#DFN
+lxml.html.builder.SPAN lxml.html.builder-module.html#SPAN
+lxml.html.builder.DL   lxml.html.builder-module.html#DL
+lxml.html.builder.H1   lxml.html.builder-module.html#H1
+lxml.html.builder.DD   lxml.html.builder-module.html#DD
+lxml.html.builder.TBODY        lxml.html.builder-module.html#TBODY
+lxml.html.builder.DIV  lxml.html.builder-module.html#DIV
+lxml.html.builder.H5   lxml.html.builder-module.html#H5
+lxml.html.builder.LEGEND       lxml.html.builder-module.html#LEGEND
+lxml.html.builder.DIR  lxml.html.builder-module.html#DIR
+lxml.html.builder.NOSCRIPT     lxml.html.builder-module.html#NOSCRIPT
+lxml.html.builder.COLGROUP     lxml.html.builder-module.html#COLGROUP
+lxml.html.builder.BIG  lxml.html.builder-module.html#BIG
+lxml.html.builder.TT   lxml.html.builder-module.html#TT
+lxml.html.builder.TR   lxml.html.builder-module.html#TR
+lxml.html.builder.LI   lxml.html.builder-module.html#LI
+lxml.html.builder.IFRAME       lxml.html.builder-module.html#IFRAME
+lxml.html.builder.TD   lxml.html.builder-module.html#TD
+lxml.html.builder.CLASS        lxml.html.builder-module.html#CLASS
+lxml.html.builder.A    lxml.html.builder-module.html#A
+lxml.html.builder.STYLE        lxml.html.builder-module.html#STYLE
+lxml.html.builder.E    lxml.html.builder-module.html#E
+lxml.html.builder.FORM lxml.html.builder-module.html#FORM
+lxml.html.builder.I    lxml.html.builder-module.html#I
+lxml.html.builder.Q    lxml.html.builder-module.html#Q
+lxml.html.builder.CAPTION      lxml.html.builder-module.html#CAPTION
+lxml.html.builder.U    lxml.html.builder-module.html#U
+lxml.html.builder.ABBR lxml.html.builder-module.html#ABBR
+lxml.html.builder.THEAD        lxml.html.builder-module.html#THEAD
+lxml.html.builder.SAMP lxml.html.builder-module.html#SAMP
+lxml.html.builder.CITE lxml.html.builder-module.html#CITE
+lxml.html.clean        lxml.html.clean-module.html
+lxml.html.clean._css_import_re lxml.html.clean-module.html#_css_import_re
+lxml.html.clean.word_break_html        lxml.html.clean-module.html#word_break_html
+lxml.html.clean._link_regexes  lxml.html.clean-module.html#_link_regexes
+lxml.html.clean._substitute_whitespace lxml.html.clean-module.html#_substitute_whitespace
+lxml.html.clean._nons  lxml.html-module.html#_nons
+lxml.html.clean._find_styled_elements  lxml.html.clean-module.html#_find_styled_elements
+lxml.html.clean._break_text    lxml.html.clean-module.html#_break_text
+lxml.html.clean._avoid_classes lxml.html.clean-module.html#_avoid_classes
+lxml.html.clean._javascript_scheme_re  lxml.html.clean-module.html#_javascript_scheme_re
+lxml.html.clean.__package__    lxml.html.clean-module.html#__package__
+lxml.html.clean._avoid_elements        lxml.html.clean-module.html#_avoid_elements
+lxml.html.clean._find_external_links   lxml.html.clean-module.html#_find_external_links
+lxml.html.clean._insert_break  lxml.html.clean-module.html#_insert_break
+lxml.html.clean._transform_result      lxml.html-module.html#_transform_result
+lxml.html.clean.autolink       lxml.html.clean-module.html#autolink
+lxml.html.clean._conditional_comment_re        lxml.html.clean-module.html#_conditional_comment_re
+lxml.html.clean._link_text     lxml.html.clean-module.html#_link_text
+lxml.html.clean._avoid_hosts   lxml.html.clean-module.html#_avoid_hosts
+lxml.html.clean.autolink_html  lxml.html.clean-module.html#autolink_html
+lxml.html.clean.tostring       lxml.html-module.html#tostring
+lxml.html.clean.clean_html     lxml.html.clean-module.html#clean_html
+lxml.html.clean._avoid_word_break_classes      lxml.html.clean-module.html#_avoid_word_break_classes
+lxml.html.clean._css_javascript_re     lxml.html.clean-module.html#_css_javascript_re
+lxml.html.clean.fromstring     lxml.html-module.html#fromstring
+lxml.html.clean.word_break     lxml.html.clean-module.html#word_break
+lxml.html.clean._break_prefer_re       lxml.html.clean-module.html#_break_prefer_re
+lxml.html.clean.clean  lxml.html.clean-module.html#clean
+lxml.html.clean._avoid_word_break_elements     lxml.html.clean-module.html#_avoid_word_break_elements
+lxml.html.defs lxml.html.defs-module.html
+lxml.html.defs.block_tags      lxml.html.defs-module.html#block_tags
+lxml.html.defs.link_attrs      lxml.html.defs-module.html#link_attrs
+lxml.html.defs.tags    lxml.html.defs-module.html#tags
+lxml.html.defs.font_style_tags lxml.html.defs-module.html#font_style_tags
+lxml.html.defs.event_attrs     lxml.html.defs-module.html#event_attrs
+lxml.html.defs.safe_attrs      lxml.html.defs-module.html#safe_attrs
+lxml.html.defs.table_tags      lxml.html.defs-module.html#table_tags
+lxml.html.defs.__package__     lxml.html.defs-module.html#__package__
+lxml.html.defs.top_level_tags  lxml.html.defs-module.html#top_level_tags
+lxml.html.defs.form_tags       lxml.html.defs-module.html#form_tags
+lxml.html.defs.phrase_tags     lxml.html.defs-module.html#phrase_tags
+lxml.html.defs.deprecated_tags lxml.html.defs-module.html#deprecated_tags
+lxml.html.defs.head_tags       lxml.html.defs-module.html#head_tags
+lxml.html.defs.list_tags       lxml.html.defs-module.html#list_tags
+lxml.html.defs.special_inline_tags     lxml.html.defs-module.html#special_inline_tags
+lxml.html.defs.empty_tags      lxml.html.defs-module.html#empty_tags
+lxml.html.defs.general_block_tags      lxml.html.defs-module.html#general_block_tags
+lxml.html.defs.frame_tags      lxml.html.defs-module.html#frame_tags
+lxml.html.defs.nonstandard_tags        lxml.html.defs-module.html#nonstandard_tags
+lxml.html.diff lxml.html.diff-module.html
+lxml.html.diff._move_el_inside_block   lxml.html.diff-module.html#_move_el_inside_block
+lxml.html.diff.compress_merge_back     lxml.html.diff-module.html#compress_merge_back
+lxml.html.diff.serialize_html_fragment lxml.html.diff-module.html#serialize_html_fragment
+lxml.html.diff.split_delete    lxml.html.diff-module.html#split_delete
+lxml.html.diff.split_unbalanced        lxml.html.diff-module.html#split_unbalanced
+lxml.html.diff.is_word lxml.html.diff-module.html#is_word
+lxml.html.diff._contains_block_level_tag       lxml.html.diff-module.html#_contains_block_level_tag
+lxml.html.diff.empty_tags      lxml.html.diff-module.html#empty_tags
+lxml.html.diff.is_start_tag    lxml.html.diff-module.html#is_start_tag
+lxml.html.diff.end_tag lxml.html.diff-module.html#end_tag
+lxml.html.diff.fixup_chunks    lxml.html.diff-module.html#fixup_chunks
+lxml.html.diff.html_annotate   lxml.html.diff-module.html#html_annotate
+lxml.html.diff.cleanup_delete  lxml.html.diff-module.html#cleanup_delete
+lxml.html.diff.htmldiff        lxml.html.diff-module.html#htmldiff
+lxml.html.diff._fixup_ins_del_tags     lxml.html.diff-module.html#_fixup_ins_del_tags
+lxml.html.diff.htmldiff_tokens lxml.html.diff-module.html#htmldiff_tokens
+lxml.html.diff.expand_tokens   lxml.html.diff-module.html#expand_tokens
+lxml.html.diff.__package__     lxml.html.diff-module.html#__package__
+lxml.html.diff.block_level_tags        lxml.html.diff-module.html#block_level_tags
+lxml.html.diff.compress_tokens lxml.html.diff-module.html#compress_tokens
+lxml.html.diff.html_annotate_merge_annotations lxml.html.diff-module.html#html_annotate_merge_annotations
+lxml.html.diff._merge_element_contents lxml.html.diff-module.html#_merge_element_contents
+lxml.html.diff.split_words     lxml.html.diff-module.html#split_words
+lxml.html.diff.block_level_container_tags      lxml.html.diff-module.html#block_level_container_tags
+lxml.html.diff.flatten_el      lxml.html.diff-module.html#flatten_el
+lxml.html.diff.markup_serialize_tokens lxml.html.diff-module.html#markup_serialize_tokens
+lxml.html.diff._body_re        lxml.html.diff-module.html#_body_re
+lxml.html.diff.locate_unbalanced_start lxml.html.diff-module.html#locate_unbalanced_start
+lxml.html.diff.fragment_fromstring     lxml.html-module.html#fragment_fromstring
+lxml.html.diff.fixup_ins_del_tags      lxml.html.diff-module.html#fixup_ins_del_tags
+lxml.html.diff.default_markup  lxml.html.diff-module.html#default_markup
+lxml.html.diff.tokenize        lxml.html.diff-module.html#tokenize
+lxml.html.diff.cleanup_html    lxml.html.diff-module.html#cleanup_html
+lxml.html.diff.tokenize_annotated      lxml.html.diff-module.html#tokenize_annotated
+lxml.html.diff.parse_html      lxml.html.diff-module.html#parse_html
+lxml.html.diff.merge_insert    lxml.html.diff-module.html#merge_insert
+lxml.html.diff.merge_delete    lxml.html.diff-module.html#merge_delete
+lxml.html.diff._ins_del_re     lxml.html.diff-module.html#_ins_del_re
+lxml.html.diff.locate_unbalanced_end   lxml.html.diff-module.html#locate_unbalanced_end
+lxml.html.diff.start_tag       lxml.html.diff-module.html#start_tag
+lxml.html.diff._end_body_re    lxml.html.diff-module.html#_end_body_re
+lxml.html.diff.is_end_tag      lxml.html.diff-module.html#is_end_tag
+lxml.html.diff.copy_annotations        lxml.html.diff-module.html#copy_annotations
+lxml.html.diff.end_whitespace_re       lxml.html.diff-module.html#end_whitespace_re
+lxml.html.diff.start_whitespace_re     lxml.html.diff-module.html#start_whitespace_re
+lxml.html.formfill     lxml.html.formfill-module.html
+lxml.html.formfill._fill_single        lxml.html.formfill-module.html#_fill_single
+lxml.html.formfill._input_xpath        lxml.html.formfill-module.html#_input_xpath
+lxml.html.formfill._nons       lxml.html-module.html#_nons
+lxml.html.formfill._insert_error       lxml.html.formfill-module.html#_insert_error
+lxml.html.formfill._fill_form  lxml.html.formfill-module.html#_fill_form
+lxml.html.formfill._check      lxml.html.formfill-module.html#_check
+lxml.html.formfill._takes_multiple     lxml.html.formfill-module.html#_takes_multiple
+lxml.html.formfill.__package__ lxml.html.formfill-module.html#__package__
+lxml.html.formfill.insert_errors_html  lxml.html.formfill-module.html#insert_errors_html
+lxml.html.formfill._form_name_xpath    lxml.html.formfill-module.html#_form_name_xpath
+lxml.html.formfill._name_xpath lxml.html.formfill-module.html#_name_xpath
+lxml.html.formfill.fill_form_html      lxml.html.formfill-module.html#fill_form_html
+lxml.html.formfill._add_class  lxml.html.formfill-module.html#_add_class
+lxml.html.formfill._transform_result   lxml.html-module.html#_transform_result
+lxml.html.formfill.default_error_creator       lxml.html.formfill-module.html#default_error_creator
+lxml.html.formfill._find_elements_for_name     lxml.html.formfill-module.html#_find_elements_for_name
+lxml.html.formfill._label_for_xpath    lxml.html.formfill-module.html#_label_for_xpath
+lxml.html.formfill._fill_multiple      lxml.html.formfill-module.html#_fill_multiple
+lxml.html.formfill._select     lxml.html.formfill-module.html#_select
+lxml.html.formfill.fill_form   lxml.html.formfill-module.html#fill_form
+lxml.html.formfill.insert_errors       lxml.html.formfill-module.html#insert_errors
+lxml.html.formfill._find_form_ids      lxml.html.formfill-module.html#_find_form_ids
+lxml.html.formfill.fromstring  lxml.html-module.html#fromstring
+lxml.html.formfill._tag        lxml.html.formfill-module.html#_tag
+lxml.html.formfill._find_form  lxml.html.formfill-module.html#_find_form
+lxml.html.formfill.tostring    lxml.html-module.html#tostring
+lxml.html.html5parser  lxml.html.html5parser-module.html
+lxml.html.html5parser.fragment_fromstring      lxml.html.html5parser-module.html#fragment_fromstring
+lxml.html.html5parser.xhtml_parser     lxml.html.html5parser-module.html#xhtml_parser
+lxml.html.html5parser.fragments_fromstring     lxml.html.html5parser-module.html#fragments_fromstring
+lxml.html.html5parser.__package__      lxml.html.html5parser-module.html#__package__
+lxml.html.html5parser.parse    lxml.html.html5parser-module.html#parse
+lxml.html.html5parser.html_parser      lxml.html.html5parser-module.html#html_parser
+lxml.html.html5parser.document_fromstring      lxml.html.html5parser-module.html#document_fromstring
+lxml.html.html5parser._find_tag        lxml.html.html5parser-module.html#_find_tag
+lxml.html.html5parser.fromstring       lxml.html.html5parser-module.html#fromstring
+lxml.html.html5parser._contains_block_level_tag        lxml.html-module.html#_contains_block_level_tag
+lxml.html.soupparser   lxml.html.soupparser-module.html
+lxml.html.soupparser._convert_tree     lxml.html.soupparser-module.html#_convert_tree
+lxml.html.soupparser._convert_children lxml.html.soupparser-module.html#_convert_children
+lxml.html.soupparser.__package__       lxml.html.soupparser-module.html#__package__
+lxml.html.soupparser.parse     lxml.html.soupparser-module.html#parse
+lxml.html.soupparser.convert_tree      lxml.html.soupparser-module.html#convert_tree
+lxml.html.soupparser.__doc__   lxml.html.soupparser-module.html#__doc__
+lxml.html.soupparser.fromstring        lxml.html.soupparser-module.html#fromstring
+lxml.html.soupparser.unescape  lxml.html.soupparser-module.html#unescape
+lxml.html.soupparser._parse    lxml.html.soupparser-module.html#_parse
+lxml.html.soupparser._append_text      lxml.html.soupparser-module.html#_append_text
+lxml.html.soupparser.handle_entities   lxml.html.soupparser-module.html#handle_entities
+lxml.html.usedoctest   lxml.html.usedoctest-module.html
+lxml.isoschematron     lxml.isoschematron-module.html
+lxml.isoschematron.SVRL_NS     lxml.isoschematron-module.html#SVRL_NS
+lxml.isoschematron.iso_svrl_for_xslt1  lxml.isoschematron-module.html#iso_svrl_for_xslt1
+lxml.isoschematron._xml_schema_root    lxml.isoschematron-module.html#_xml_schema_root
+lxml.isoschematron._stylesheet_param_dict      lxml.isoschematron-module.html#_stylesheet_param_dict
+lxml.isoschematron.svrl_validation_errors      lxml.isoschematron-module.html#svrl_validation_errors
+lxml.isoschematron.iso_dsdl_include    lxml.isoschematron-module.html#iso_dsdl_include
+lxml.isoschematron.extract_rng lxml.isoschematron-module.html#extract_rng
+lxml.isoschematron._resources_dir      lxml.isoschematron-module.html#_resources_dir
+lxml.isoschematron.__package__ lxml.isoschematron-module.html#__package__
+lxml.isoschematron.SCHEMATRON_NS       lxml.isoschematron-module.html#SCHEMATRON_NS
+lxml.isoschematron._schematron_root    lxml.isoschematron-module.html#_schematron_root
+lxml.isoschematron.extract_xsd lxml.isoschematron-module.html#extract_xsd
+lxml.isoschematron.RELAXNG_NS  lxml.isoschematron-module.html#RELAXNG_NS
+lxml.isoschematron.XML_SCHEMA_NS       lxml.isoschematron-module.html#XML_SCHEMA_NS
+lxml.isoschematron.schematron_schema_valid     lxml.isoschematron-module.html#schematron_schema_valid
+lxml.isoschematron.stylesheet_params   lxml.isoschematron-module.html#stylesheet_params
+lxml.isoschematron.iso_abstract_expand lxml.isoschematron-module.html#iso_abstract_expand
+lxml.objectify lxml.objectify-module.html
+lxml.objectify.enable_recursive_str    lxml.objectify-module.html#enable_recursive_str
+lxml.objectify.dump    lxml.objectify-module.html#dump
+lxml.objectify.__parseBool     lxml.objectify-module.html#__parseBool
+lxml.objectify.annotate        lxml.objectify-module.html#annotate
+lxml.objectify.set_default_parser      lxml.objectify-module.html#set_default_parser
+lxml.objectify.pyannotate      lxml.objectify-module.html#pyannotate
+lxml.objectify.getRegisteredTypes      lxml.objectify-module.html#getRegisteredTypes
+lxml.objectify.xsiannotate     lxml.objectify-module.html#xsiannotate
+lxml.objectify.PYTYPE_ATTRIBUTE        lxml.objectify-module.html#PYTYPE_ATTRIBUTE
+lxml.objectify.__package__     lxml.objectify-module.html#__package__
+lxml.objectify.pytypename      lxml.objectify-module.html#pytypename
+lxml.objectify.makeparser      lxml.objectify-module.html#makeparser
+lxml.objectify.XML     lxml.objectify-module.html#XML
+lxml.objectify.deannotate      lxml.objectify-module.html#deannotate
+lxml.objectify.E       lxml.objectify-module.html#E
+lxml.objectify.Element lxml.objectify-module.html#Element
+lxml.objectify.__test__        lxml.objectify-module.html#__test__
+lxml.objectify.__unpickleElementTree   lxml.objectify-module.html#__unpickleElementTree
+lxml.objectify.__lower_bool    lxml.objectify-module.html#__lower_bool
+lxml.objectify.parse   lxml.objectify-module.html#parse
+lxml.objectify.set_pytype_attribute_tag        lxml.objectify-module.html#set_pytype_attribute_tag
+lxml.objectify.__checkBool     lxml.objectify-module.html#__checkBool
+lxml.objectify.fromstring      lxml.objectify-module.html#fromstring
+lxml.objectify.DataElement     lxml.objectify-module.html#DataElement
+lxml.pyclasslookup     lxml.pyclasslookup-module.html
+lxml.pyclasslookup.__package__ lxml.pyclasslookup-module.html#__package__
+lxml.sax       lxml.sax-module.html
+lxml.sax.Comment       lxml.etree-module.html#Comment
+lxml.sax.ProcessingInstruction lxml.etree-module.html#PI
+lxml.sax.SubElement    lxml.etree-module.html#SubElement
+lxml.sax.__package__   lxml.sax-module.html#__package__
+lxml.sax.saxify        lxml.sax-module.html#saxify
+lxml.sax._getNsTag     lxml.sax-module.html#_getNsTag
+lxml.sax.ElementTree   lxml.etree-module.html#ElementTree
+lxml.tests     lxml.tests-module.html
+lxml.tests.__package__ lxml.tests-module.html#__package__
+lxml.tests.common_imports      lxml.tests.common_imports-module.html
+lxml.tests.common_imports.make_doctest lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.common_imports._str lxml.tests.common_imports-module.html#_str
+lxml.tests.common_imports._bytes       lxml.tests.common_imports-module.html#_bytes
+lxml.tests.common_imports.canonicalize lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.common_imports._fix_unicode lxml.tests.common_imports-module.html#_fix_unicode
+lxml.tests.common_imports.write_to_file        lxml.tests.common_imports-module.html#write_to_file
+lxml.tests.common_imports.__package__  lxml.tests.common_imports-module.html#__package__
+lxml.tests.common_imports.filter_by_version    lxml.tests.common_imports-module.html#filter_by_version
+lxml.tests.common_imports._get_caller_relative_path    lxml.tests.common_imports-module.html#_get_caller_relative_path
+lxml.tests.common_imports.unentitify   lxml.tests.common_imports-module.html#unentitify
+lxml.tests.common_imports.doctest_parser       lxml.tests.common_imports-module.html#doctest_parser
+lxml.tests.common_imports._fix_bytes   lxml.tests.common_imports-module.html#_fix_bytes
+lxml.tests.common_imports._fix_exceptions      lxml.tests.common_imports-module.html#_fix_exceptions
+lxml.tests.common_imports.make_version_tuple   lxml.tests.common_imports-module.html#make_version_tuple
+lxml.tests.common_imports.ET_VERSION   lxml.tests.common_imports-module.html#ET_VERSION
+lxml.tests.common_imports.read_file    lxml.tests.common_imports-module.html#read_file
+lxml.tests.common_imports.fileInTestDir        lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.common_imports.CET_VERSION  lxml.tests.common_imports-module.html#CET_VERSION
+lxml.tests.common_imports._fix_traceback       lxml.tests.common_imports-module.html#_fix_traceback
+lxml.tests.common_imports.readFileInTestDir    lxml.tests.common_imports-module.html#readFileInTestDir
+lxml.tests.test_classlookup    lxml.tests.test_classlookup-module.html
+lxml.tests.test_classlookup.xml_str    lxml.tests.test_classlookup-module.html#xml_str
+lxml.tests.test_classlookup.this_dir   lxml.tests.test_classlookup-module.html#this_dir
+lxml.tests.test_classlookup.fileInTestDir      lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_classlookup._str       lxml.tests.common_imports-module.html#_str
+lxml.tests.test_classlookup.__package__        lxml.tests.test_classlookup-module.html#__package__
+lxml.tests.test_classlookup._bytes     lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_classlookup.test_suite lxml.tests.test_classlookup-module.html#test_suite
+lxml.tests.test_classlookup.canonicalize       lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_css    lxml.tests.test_css-module.html
+lxml.tests.test_css.doc_fn     lxml.tests.test_css-module.html#doc_fn
+lxml.tests.test_css.make_doctest       lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_css.__package__        lxml.tests.test_css-module.html#__package__
+lxml.tests.test_css.test_suite lxml.tests.test_css-module.html#test_suite
+lxml.tests.test_css.unique     lxml.tests.test_css-module.html#unique
+lxml.tests.test_dtd    lxml.tests.test_dtd-module.html
+lxml.tests.test_dtd.make_doctest       lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_dtd.fileInTestDir      lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_dtd.__package__        lxml.tests.test_dtd-module.html#__package__
+lxml.tests.test_dtd._bytes     lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_dtd.test_suite lxml.tests.test_dtd-module.html#test_suite
+lxml.tests.test_dtd.this_dir   lxml.tests.test_dtd-module.html#this_dir
+lxml.tests.test_elementtree    lxml.tests.test_elementtree-module.html
+lxml.tests.test_elementtree._str       lxml.tests.common_imports-module.html#_str
+lxml.tests.test_elementtree.canonicalize       lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_elementtree._bytes     lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_elementtree.__package__        lxml.tests.test_elementtree-module.html#__package__
+lxml.tests.test_elementtree.filter_by_version  lxml.tests.common_imports-module.html#filter_by_version
+lxml.tests.test_elementtree.this_dir   lxml.tests.test_elementtree-module.html#this_dir
+lxml.tests.test_elementtree.reversed   lxml.tests.test_elementtree-module.html#reversed
+lxml.tests.test_elementtree.cElementTree       lxml.tests.test_elementtree-module.html#cElementTree
+lxml.tests.test_elementtree.fileInTestDir      lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_elementtree.test_suite lxml.tests.test_elementtree-module.html#test_suite
+lxml.tests.test_errors lxml.tests.test_errors-module.html
+lxml.tests.test_errors.__package__     lxml.tests.test_errors-module.html#__package__
+lxml.tests.test_errors.test_suite      lxml.tests.test_errors-module.html#test_suite
+lxml.tests.test_errors.this_dir        lxml.tests.test_errors-module.html#this_dir
+lxml.tests.test_etree  lxml.tests.test_etree-module.html
+lxml.tests.test_etree.make_doctest     lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_etree._str     lxml.tests.common_imports-module.html#_str
+lxml.tests.test_etree._bytes   lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_etree.canonicalize     lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_etree.__package__      lxml.tests.test_etree-module.html#__package__
+lxml.tests.test_etree.this_dir lxml.tests.test_etree-module.html#this_dir
+lxml.tests.test_etree.sorted   lxml.tests.common_imports-module.html#sorted
+lxml.tests.test_etree.fileInTestDir    lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_etree.test_suite       lxml.tests.test_etree-module.html#test_suite
+lxml.tests.test_etree.read_file        lxml.tests.common_imports-module.html#read_file
+lxml.tests.test_htmlparser     lxml.tests.test_htmlparser-module.html
+lxml.tests.test_htmlparser._str        lxml.tests.common_imports-module.html#_str
+lxml.tests.test_htmlparser.fileInTestDir       lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_htmlparser.__package__ lxml.tests.test_htmlparser-module.html#__package__
+lxml.tests.test_htmlparser.write_to_file       lxml.tests.common_imports-module.html#write_to_file
+lxml.tests.test_htmlparser._bytes      lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_htmlparser.test_suite  lxml.tests.test_htmlparser-module.html#test_suite
+lxml.tests.test_htmlparser.this_dir    lxml.tests.test_htmlparser-module.html#this_dir
+lxml.tests.test_io     lxml.tests.test_io-module.html
+lxml.tests.test_io._str        lxml.tests.common_imports-module.html#_str
+lxml.tests.test_io._bytes      lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_io.read_file   lxml.tests.common_imports-module.html#read_file
+lxml.tests.test_io.this_dir    lxml.tests.test_io-module.html#this_dir
+lxml.tests.test_io.__package__ lxml.tests.test_io-module.html#__package__
+lxml.tests.test_io.write_to_file       lxml.tests.common_imports-module.html#write_to_file
+lxml.tests.test_io.fileInTestDir       lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_io.test_suite  lxml.tests.test_io-module.html#test_suite
+lxml.tests.test_isoschematron  lxml.tests.test_isoschematron-module.html
+lxml.tests.test_isoschematron.make_doctest     lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_isoschematron.fileInTestDir    lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_isoschematron.__package__      lxml.tests.test_isoschematron-module.html#__package__
+lxml.tests.test_isoschematron.test_suite       lxml.tests.test_isoschematron-module.html#test_suite
+lxml.tests.test_isoschematron.this_dir lxml.tests.test_isoschematron-module.html#this_dir
+lxml.tests.test_nsclasses      lxml.tests.test_nsclasses-module.html
+lxml.tests.test_nsclasses.make_doctest lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_nsclasses.__package__  lxml.tests.test_nsclasses-module.html#__package__
+lxml.tests.test_nsclasses._bytes       lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_nsclasses.test_suite   lxml.tests.test_nsclasses-module.html#test_suite
+lxml.tests.test_nsclasses.this_dir     lxml.tests.test_nsclasses-module.html#this_dir
+lxml.tests.test_objectify      lxml.tests.test_objectify-module.html
+lxml.tests.test_objectify.xsitype2objclass     lxml.tests.test_objectify-module.html#xsitype2objclass
+lxml.tests.test_objectify.make_doctest lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_objectify._str lxml.tests.common_imports-module.html#_str
+lxml.tests.test_objectify._bytes       lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_objectify.PYTYPE_NAMESPACE     lxml.tests.test_objectify-module.html#PYTYPE_NAMESPACE
+lxml.tests.test_objectify.canonicalize lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_objectify.pytype2objclass      lxml.tests.test_objectify-module.html#pytype2objclass
+lxml.tests.test_objectify.xml_str      lxml.tests.test_objectify-module.html#xml_str
+lxml.tests.test_objectify.DEFAULT_NSMAP        lxml.tests.test_objectify-module.html#DEFAULT_NSMAP
+lxml.tests.test_objectify.XML_SCHEMA_NS        lxml.tests.test_objectify-module.html#XML_SCHEMA_NS
+lxml.tests.test_objectify.TREE_PYTYPE  lxml.tests.test_objectify-module.html#TREE_PYTYPE
+lxml.tests.test_objectify.__package__  lxml.tests.test_objectify-module.html#__package__
+lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR        lxml.tests.test_objectify-module.html#XML_SCHEMA_INSTANCE_TYPE_ATTR
+lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR  lxml.tests.test_objectify-module.html#XML_SCHEMA_NIL_ATTR
+lxml.tests.test_objectify.this_dir     lxml.tests.test_objectify-module.html#this_dir
+lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_NS       lxml.tests.test_objectify-module.html#XML_SCHEMA_INSTANCE_NS
+lxml.tests.test_objectify.objectclass2xsitype  lxml.tests.test_objectify-module.html#objectclass2xsitype
+lxml.tests.test_objectify.v    lxml.tests.test_objectify-module.html#v
+lxml.tests.test_objectify.objectclass2pytype   lxml.tests.test_objectify-module.html#objectclass2pytype
+lxml.tests.test_objectify.fileInTestDir        lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_objectify.test_suite   lxml.tests.test_objectify-module.html#test_suite
+lxml.tests.test_pyclasslookup  lxml.tests.test_pyclasslookup-module.html
+lxml.tests.test_pyclasslookup.xml_str  lxml.tests.test_pyclasslookup-module.html#xml_str
+lxml.tests.test_pyclasslookup.this_dir lxml.tests.test_pyclasslookup-module.html#this_dir
+lxml.tests.test_pyclasslookup.fileInTestDir    lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_pyclasslookup.__package__      lxml.tests.test_pyclasslookup-module.html#__package__
+lxml.tests.test_pyclasslookup._bytes   lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_pyclasslookup.test_suite       lxml.tests.test_pyclasslookup-module.html#test_suite
+lxml.tests.test_pyclasslookup.canonicalize     lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_relaxng        lxml.tests.test_relaxng-module.html
+lxml.tests.test_relaxng.make_doctest   lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_relaxng.fileInTestDir  lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_relaxng.__package__    lxml.tests.test_relaxng-module.html#__package__
+lxml.tests.test_relaxng._bytes lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_relaxng.test_suite     lxml.tests.test_relaxng-module.html#test_suite
+lxml.tests.test_relaxng.this_dir       lxml.tests.test_relaxng-module.html#this_dir
+lxml.tests.test_sax    lxml.tests.test_sax-module.html
+lxml.tests.test_sax.make_doctest       lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_sax.__package__        lxml.tests.test_sax-module.html#__package__
+lxml.tests.test_sax._bytes     lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_sax.test_suite lxml.tests.test_sax-module.html#test_suite
+lxml.tests.test_sax.this_dir   lxml.tests.test_sax-module.html#this_dir
+lxml.tests.test_schematron     lxml.tests.test_schematron-module.html
+lxml.tests.test_schematron.make_doctest        lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_schematron.fileInTestDir       lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_schematron.__package__ lxml.tests.test_schematron-module.html#__package__
+lxml.tests.test_schematron.test_suite  lxml.tests.test_schematron-module.html#test_suite
+lxml.tests.test_schematron.this_dir    lxml.tests.test_schematron-module.html#this_dir
+lxml.tests.test_threading      lxml.tests.test_threading-module.html
+lxml.tests.test_threading.__package__  lxml.tests.test_threading-module.html#__package__
+lxml.tests.test_threading._bytes       lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_threading.test_suite   lxml.tests.test_threading-module.html#test_suite
+lxml.tests.test_threading.this_dir     lxml.tests.test_threading-module.html#this_dir
+lxml.tests.test_unicode        lxml.tests.test_unicode-module.html
+lxml.tests.test_unicode.uxml   lxml.tests.test_unicode-module.html#uxml
+lxml.tests.test_unicode.klingon        lxml.tests.test_unicode-module.html#klingon
+lxml.tests.test_unicode.invalid_tag    lxml.tests.test_unicode-module.html#invalid_tag
+lxml.tests.test_unicode._str   lxml.tests.common_imports-module.html#_str
+lxml.tests.test_unicode.__package__    lxml.tests.test_unicode-module.html#__package__
+lxml.tests.test_unicode._bytes lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_unicode.test_suite     lxml.tests.test_unicode-module.html#test_suite
+lxml.tests.test_unicode.this_dir       lxml.tests.test_unicode-module.html#this_dir
+lxml.tests.test_unicode.uni    lxml.tests.test_unicode-module.html#uni
+lxml.tests.test_unicode.ascii_uni      lxml.tests.test_unicode-module.html#ascii_uni
+lxml.tests.test_xmlschema      lxml.tests.test_xmlschema-module.html
+lxml.tests.test_xmlschema.make_doctest lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_xmlschema.fileInTestDir        lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_xmlschema.__package__  lxml.tests.test_xmlschema-module.html#__package__
+lxml.tests.test_xmlschema.test_suite   lxml.tests.test_xmlschema-module.html#test_suite
+lxml.tests.test_xmlschema.this_dir     lxml.tests.test_xmlschema-module.html#this_dir
+lxml.tests.test_xpathevaluator lxml.tests.test_xpathevaluator-module.html
+lxml.tests.test_xpathevaluator.argsTest1       lxml.tests.test_xpathevaluator-module.html#argsTest1
+lxml.tests.test_xpathevaluator.argsTest2       lxml.tests.test_xpathevaluator-module.html#argsTest2
+lxml.tests.test_xpathevaluator.make_doctest    lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_xpathevaluator.tag     lxml.tests.test_xpathevaluator-module.html#tag
+lxml.tests.test_xpathevaluator.stringTest      lxml.tests.test_xpathevaluator-module.html#stringTest
+lxml.tests.test_xpathevaluator._bytes  lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_xpathevaluator.booleanTest     lxml.tests.test_xpathevaluator-module.html#booleanTest
+lxml.tests.test_xpathevaluator.this_dir        lxml.tests.test_xpathevaluator-module.html#this_dir
+lxml.tests.test_xpathevaluator.setTest lxml.tests.test_xpathevaluator-module.html#setTest
+lxml.tests.test_xpathevaluator.resultTypesTest2        lxml.tests.test_xpathevaluator-module.html#resultTypesTest2
+lxml.tests.test_xpathevaluator.SAMPLE_XML      lxml.tests.test_xpathevaluator-module.html#SAMPLE_XML
+lxml.tests.test_xpathevaluator.__package__     lxml.tests.test_xpathevaluator-module.html#__package__
+lxml.tests.test_xpathevaluator.test_suite      lxml.tests.test_xpathevaluator-module.html#test_suite
+lxml.tests.test_xpathevaluator.floatTest       lxml.tests.test_xpathevaluator-module.html#floatTest
+lxml.tests.test_xpathevaluator.stringListTest  lxml.tests.test_xpathevaluator-module.html#stringListTest
+lxml.tests.test_xpathevaluator.xpath   lxml.tests.test_xpathevaluator-module.html#xpath
+lxml.tests.test_xpathevaluator.tag_or_value    lxml.tests.test_xpathevaluator-module.html#tag_or_value
+lxml.tests.test_xpathevaluator.resultTypesTest lxml.tests.test_xpathevaluator-module.html#resultTypesTest
+lxml.tests.test_xpathevaluator.extension       lxml.tests.test_xpathevaluator-module.html#extension
+lxml.tests.test_xpathevaluator.uri     lxml.tests.test_xpathevaluator-module.html#uri
+lxml.tests.test_xpathevaluator.setTest2        lxml.tests.test_xpathevaluator-module.html#setTest2
+lxml.tests.test_xslt   lxml.tests.test_xslt-module.html
+lxml.tests.test_xslt.make_doctest      lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_xslt._str      lxml.tests.common_imports-module.html#_str
+lxml.tests.test_xslt._bytes    lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_xslt.this_dir  lxml.tests.test_xslt-module.html#this_dir
+lxml.tests.test_xslt.__package__       lxml.tests.test_xslt-module.html#__package__
+lxml.tests.test_xslt.is_python3        lxml.tests.test_xslt-module.html#is_python3
+lxml.tests.test_xslt.fileInTestDir     lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_xslt.test_suite        lxml.tests.test_xslt-module.html#test_suite
+lxml.usedoctest        lxml.usedoctest-module.html
+xml.etree.ElementTree  xml.etree.ElementTree-module.html
+xml.etree.ElementTree.XMLID    xml.etree.ElementTree-module.html#XMLID
+xml.etree.ElementTree.fixtag   xml.etree.ElementTree-module.html#fixtag
+xml.etree.ElementTree.dump     xml.etree.ElementTree-module.html#dump
+xml.etree.ElementTree.parse    xml.etree.ElementTree-module.html#parse
+xml.etree.ElementTree._encode  xml.etree.ElementTree-module.html#_encode
+xml.etree.ElementTree._namespace_map   xml.etree.ElementTree-module.html#_namespace_map
+xml.etree.ElementTree._encode_entity   xml.etree.ElementTree-module.html#_encode_entity
+xml.etree.ElementTree.__package__      xml.etree.ElementTree-module.html#__package__
+xml.etree.ElementTree.PI       xml.etree.ElementTree-module.html#PI
+xml.etree.ElementTree.XML      xml.etree.ElementTree-module.html#XML
+xml.etree.ElementTree._raise_serialization_error       xml.etree.ElementTree-module.html#_raise_serialization_error
+xml.etree.ElementTree._escape_cdata    xml.etree.ElementTree-module.html#_escape_cdata
+xml.etree.ElementTree._escape_map      xml.etree.ElementTree-module.html#_escape_map
+xml.etree.ElementTree._escape_attrib   xml.etree.ElementTree-module.html#_escape_attrib
+xml.etree.ElementTree.Element  xml.etree.ElementTree-module.html#Element
+xml.etree.ElementTree.VERSION  xml.etree.ElementTree-module.html#VERSION
+xml.etree.ElementTree.tostring xml.etree.ElementTree-module.html#tostring
+xml.etree.ElementTree.iselement        xml.etree.ElementTree-module.html#iselement
+xml.etree.ElementTree._escape  xml.etree.ElementTree-module.html#_escape
+xml.etree.ElementTree.Comment  xml.etree.ElementTree-module.html#Comment
+xml.etree.ElementTree.ProcessingInstruction    xml.etree.ElementTree-module.html#ProcessingInstruction
+xml.etree.ElementTree.fromstring       xml.etree.ElementTree-module.html#fromstring
+xml.etree.ElementTree.SubElement       xml.etree.ElementTree-module.html#SubElement
+exceptions.AssertionError      exceptions.AssertionError-class.html
+exceptions.AssertionError.__init__     exceptions.AssertionError-class.html#__init__
+exceptions.AssertionError.__new__      exceptions.AssertionError-class.html#__new__
+lxml.ElementInclude.FatalIncludeError  lxml.ElementInclude.FatalIncludeError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.builder.ElementMaker      lxml.builder.ElementMaker-class.html
+lxml.builder.ElementMaker.__getattr__  lxml.builder.ElementMaker-class.html#__getattr__
+lxml.builder.ElementMaker.__call__     lxml.builder.ElementMaker-class.html#__call__
+lxml.builder.ElementMaker.__init__     lxml.builder.ElementMaker-class.html#__init__
+lxml.cssselect.Attrib  lxml.cssselect.Attrib-class.html
+lxml.cssselect.Attrib.xpath    lxml.cssselect.Attrib-class.html#xpath
+lxml.cssselect.Attrib._xpath_attrib    lxml.cssselect.Attrib-class.html#_xpath_attrib
+lxml.cssselect.Attrib.__repr__ lxml.cssselect.Attrib-class.html#__repr__
+lxml.cssselect.Attrib.__init__ lxml.cssselect.Attrib-class.html#__init__
+lxml.cssselect.Attrib._format_attrib   lxml.cssselect.Attrib-class.html#_format_attrib
+lxml.cssselect.CSSSelector     lxml.cssselect.CSSSelector-class.html
+lxml.etree.XPath.__new__       lxml.etree.XPath-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate        lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log       lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.cssselect.CSSSelector.__repr__    lxml.cssselect.CSSSelector-class.html#__repr__
+lxml.etree.XPath.__call__      lxml.etree.XPath-class.html#__call__
+lxml.etree.XPath.path  lxml.etree.XPath-class.html#path
+lxml.cssselect.CSSSelector.__init__    lxml.cssselect.CSSSelector-class.html#__init__
+lxml.cssselect.Class   lxml.cssselect.Class-class.html
+lxml.cssselect.Class.xpath     lxml.cssselect.Class-class.html#xpath
+lxml.cssselect.Class.__repr__  lxml.cssselect.Class-class.html#__repr__
+lxml.cssselect.Class.__init__  lxml.cssselect.Class-class.html#__init__
+lxml.cssselect.CombinedSelector        lxml.cssselect.CombinedSelector-class.html
+lxml.cssselect.CombinedSelector.xpath  lxml.cssselect.CombinedSelector-class.html#xpath
+lxml.cssselect.CombinedSelector._xpath_descendant      lxml.cssselect.CombinedSelector-class.html#_xpath_descendant
+lxml.cssselect.CombinedSelector._xpath_indirect_adjacent       lxml.cssselect.CombinedSelector-class.html#_xpath_indirect_adjacent
+lxml.cssselect.CombinedSelector._xpath_child   lxml.cssselect.CombinedSelector-class.html#_xpath_child
+lxml.cssselect.CombinedSelector.__repr__       lxml.cssselect.CombinedSelector-class.html#__repr__
+lxml.cssselect.CombinedSelector._xpath_direct_adjacent lxml.cssselect.CombinedSelector-class.html#_xpath_direct_adjacent
+lxml.cssselect.CombinedSelector._method_mapping        lxml.cssselect.CombinedSelector-class.html#_method_mapping
+lxml.cssselect.CombinedSelector.__init__       lxml.cssselect.CombinedSelector-class.html#__init__
+lxml.cssselect.Element lxml.cssselect.Element-class.html
+lxml.cssselect.Element.xpath   lxml.cssselect.Element-class.html#xpath
+lxml.cssselect.Element._format_element lxml.cssselect.Element-class.html#_format_element
+lxml.cssselect.Element.__repr__        lxml.cssselect.Element-class.html#__repr__
+lxml.cssselect.Element.__init__        lxml.cssselect.Element-class.html#__init__
+lxml.cssselect.ExpressionError lxml.cssselect.ExpressionError-class.html
+lxml.cssselect.Function        lxml.cssselect.Function-class.html
+lxml.cssselect.Function._xpath_nth_last_child  lxml.cssselect.Function-class.html#_xpath_nth_last_child
+lxml.cssselect.Function.unsupported    lxml.cssselect.Function-class.html#unsupported
+lxml.cssselect.Function._xpath_nth_last_of_type        lxml.cssselect.Function-class.html#_xpath_nth_last_of_type
+lxml.cssselect.Function.__init__       lxml.cssselect.Function-class.html#__init__
+lxml.cssselect.Function._xpath_nth_of_type     lxml.cssselect.Function-class.html#_xpath_nth_of_type
+lxml.cssselect.Function.xpath  lxml.cssselect.Function-class.html#xpath
+lxml.cssselect.Function._xpath_not     lxml.cssselect.Function-class.html#_xpath_not
+lxml.cssselect.Function._xpath_nth_child       lxml.cssselect.Function-class.html#_xpath_nth_child
+lxml.cssselect.Function._xpath_contains        lxml.cssselect.Function-class.html#_xpath_contains
+lxml.cssselect.Function.__repr__       lxml.cssselect.Function-class.html#__repr__
+lxml.cssselect.Hash    lxml.cssselect.Hash-class.html
+lxml.cssselect.Hash.xpath      lxml.cssselect.Hash-class.html#xpath
+lxml.cssselect.Hash.__repr__   lxml.cssselect.Hash-class.html#__repr__
+lxml.cssselect.Hash.__init__   lxml.cssselect.Hash-class.html#__init__
+lxml.cssselect.Or      lxml.cssselect.Or-class.html
+lxml.cssselect.Or.xpath        lxml.cssselect.Or-class.html#xpath
+lxml.cssselect.Or.__repr__     lxml.cssselect.Or-class.html#__repr__
+lxml.cssselect.Or.__init__     lxml.cssselect.Or-class.html#__init__
+lxml.cssselect.Pseudo  lxml.cssselect.Pseudo-class.html
+lxml.cssselect.Pseudo.unsupported      lxml.cssselect.Pseudo-class.html#unsupported
+lxml.cssselect.Pseudo._xpath_first_child       lxml.cssselect.Pseudo-class.html#_xpath_first_child
+lxml.cssselect.Pseudo._xpath_checked   lxml.cssselect.Pseudo-class.html#_xpath_checked
+lxml.cssselect.Pseudo.__init__ lxml.cssselect.Pseudo-class.html#__init__
+lxml.cssselect.Pseudo._xpath_first_of_type     lxml.cssselect.Pseudo-class.html#_xpath_first_of_type
+lxml.cssselect.Pseudo._xpath_only_child        lxml.cssselect.Pseudo-class.html#_xpath_only_child
+lxml.cssselect.Pseudo._xpath_empty     lxml.cssselect.Pseudo-class.html#_xpath_empty
+lxml.cssselect.Pseudo._xpath_root      lxml.cssselect.Pseudo-class.html#_xpath_root
+lxml.cssselect.Pseudo.xpath    lxml.cssselect.Pseudo-class.html#xpath
+lxml.cssselect.Pseudo._xpath_only_of_type      lxml.cssselect.Pseudo-class.html#_xpath_only_of_type
+lxml.cssselect.Pseudo.__repr__ lxml.cssselect.Pseudo-class.html#__repr__
+lxml.cssselect.Pseudo._xpath_last_of_type      lxml.cssselect.Pseudo-class.html#_xpath_last_of_type
+lxml.cssselect.Pseudo._xpath_last_child        lxml.cssselect.Pseudo-class.html#_xpath_last_child
+lxml.cssselect.SelectorSyntaxError     lxml.cssselect.SelectorSyntaxError-class.html
+lxml.cssselect.String  lxml.cssselect.String-class.html
+lxml.cssselect._UniToken.__new__       lxml.cssselect._UniToken-class.html#__new__
+lxml.cssselect._UniToken.__repr__      lxml.cssselect._UniToken-class.html#__repr__
+lxml.cssselect.Symbol  lxml.cssselect.Symbol-class.html
+lxml.cssselect._UniToken.__new__       lxml.cssselect._UniToken-class.html#__new__
+lxml.cssselect._UniToken.__repr__      lxml.cssselect._UniToken-class.html#__repr__
+lxml.cssselect.Token   lxml.cssselect.Token-class.html
+lxml.cssselect._UniToken.__new__       lxml.cssselect._UniToken-class.html#__new__
+lxml.cssselect._UniToken.__repr__      lxml.cssselect._UniToken-class.html#__repr__
+lxml.cssselect.TokenStream     lxml.cssselect.TokenStream-class.html
+lxml.cssselect.TokenStream.peek        lxml.cssselect.TokenStream-class.html#peek
+lxml.cssselect.TokenStream.next        lxml.cssselect.TokenStream-class.html#next
+lxml.cssselect.TokenStream.__iter__    lxml.cssselect.TokenStream-class.html#__iter__
+lxml.cssselect.TokenStream.__init__    lxml.cssselect.TokenStream-class.html#__init__
+lxml.cssselect.XPathExpr       lxml.cssselect.XPathExpr-class.html
+lxml.cssselect.XPathExpr.add_star_prefix       lxml.cssselect.XPathExpr-class.html#add_star_prefix
+lxml.cssselect.XPathExpr.join  lxml.cssselect.XPathExpr-class.html#join
+lxml.cssselect.XPathExpr.add_path      lxml.cssselect.XPathExpr-class.html#add_path
+lxml.cssselect.XPathExpr.__str__       lxml.cssselect.XPathExpr-class.html#__str__
+lxml.cssselect.XPathExpr.add_name_test lxml.cssselect.XPathExpr-class.html#add_name_test
+lxml.cssselect.XPathExpr.__repr__      lxml.cssselect.XPathExpr-class.html#__repr__
+lxml.cssselect.XPathExpr.add_condition lxml.cssselect.XPathExpr-class.html#add_condition
+lxml.cssselect.XPathExpr.add_prefix    lxml.cssselect.XPathExpr-class.html#add_prefix
+lxml.cssselect.XPathExpr.__init__      lxml.cssselect.XPathExpr-class.html#__init__
+lxml.cssselect.XPathExprOr     lxml.cssselect.XPathExprOr-class.html
+lxml.cssselect.XPathExpr.add_star_prefix       lxml.cssselect.XPathExpr-class.html#add_star_prefix
+lxml.cssselect.XPathExpr.join  lxml.cssselect.XPathExpr-class.html#join
+lxml.cssselect.XPathExpr.add_path      lxml.cssselect.XPathExpr-class.html#add_path
+lxml.cssselect.XPathExprOr.__str__     lxml.cssselect.XPathExprOr-class.html#__str__
+lxml.cssselect.XPathExpr.add_name_test lxml.cssselect.XPathExpr-class.html#add_name_test
+lxml.cssselect.XPathExpr.__repr__      lxml.cssselect.XPathExpr-class.html#__repr__
+lxml.cssselect.XPathExpr.add_condition lxml.cssselect.XPathExpr-class.html#add_condition
+lxml.cssselect.XPathExpr.add_prefix    lxml.cssselect.XPathExpr-class.html#add_prefix
+lxml.cssselect.XPathExprOr.__init__    lxml.cssselect.XPathExprOr-class.html#__init__
+lxml.cssselect._UniToken       lxml.cssselect._UniToken-class.html
+lxml.cssselect._UniToken.__new__       lxml.cssselect._UniToken-class.html#__new__
+lxml.cssselect._UniToken.__repr__      lxml.cssselect._UniToken-class.html#__repr__
+lxml.doctestcompare.LHTMLOutputChecker lxml.doctestcompare.LHTMLOutputChecker-class.html
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_end_tag     lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_end_tag
+lxml.doctestcompare.LXMLOutputChecker.text_compare     lxml.doctestcompare.LXMLOutputChecker-class.html#text_compare
+lxml.doctestcompare.LHTMLOutputChecker.get_default_parser      lxml.doctestcompare.LHTMLOutputChecker-class.html#get_default_parser
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_tag lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_tag
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_text        lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_text
+lxml.doctestcompare.LXMLOutputChecker.get_parser       lxml.doctestcompare.LXMLOutputChecker-class.html#get_parser
+lxml.doctestcompare.LXMLOutputChecker.collect_diff     lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff
+lxml.doctestcompare.LXMLOutputChecker.html_empty_tag   lxml.doctestcompare.LXMLOutputChecker-class.html#html_empty_tag
+lxml.doctestcompare.LXMLOutputChecker._looks_like_markup       lxml.doctestcompare.LXMLOutputChecker-class.html#_looks_like_markup
+lxml.doctestcompare.LXMLOutputChecker.format_tag       lxml.doctestcompare.LXMLOutputChecker-class.html#format_tag
+lxml.doctestcompare.LXMLOutputChecker.check_output     lxml.doctestcompare.LXMLOutputChecker-class.html#check_output
+lxml.doctestcompare.LXMLOutputChecker.compare_docs     lxml.doctestcompare.LXMLOutputChecker-class.html#compare_docs
+lxml.doctestcompare.LXMLOutputChecker.format_doc       lxml.doctestcompare.LXMLOutputChecker-class.html#format_doc
+lxml.doctestcompare.LXMLOutputChecker.output_difference        lxml.doctestcompare.LXMLOutputChecker-class.html#output_difference
+lxml.doctestcompare.LXMLOutputChecker.format_end_tag   lxml.doctestcompare.LXMLOutputChecker-class.html#format_end_tag
+lxml.doctestcompare.LXMLOutputChecker.format_text      lxml.doctestcompare.LXMLOutputChecker-class.html#format_text
+lxml.doctestcompare.LXMLOutputChecker.empty_tags       lxml.doctestcompare.LXMLOutputChecker-class.html#empty_tags
+lxml.doctestcompare.LXMLOutputChecker.tag_compare      lxml.doctestcompare.LXMLOutputChecker-class.html#tag_compare
+lxml.doctestcompare.LXMLOutputChecker  lxml.doctestcompare.LXMLOutputChecker-class.html
+lxml.doctestcompare.LXMLOutputChecker.text_compare     lxml.doctestcompare.LXMLOutputChecker-class.html#text_compare
+lxml.doctestcompare.LXMLOutputChecker._looks_like_markup       lxml.doctestcompare.LXMLOutputChecker-class.html#_looks_like_markup
+lxml.doctestcompare.LXMLOutputChecker.empty_tags       lxml.doctestcompare.LXMLOutputChecker-class.html#empty_tags
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_tag lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_tag
+lxml.doctestcompare.LXMLOutputChecker.compare_docs     lxml.doctestcompare.LXMLOutputChecker-class.html#compare_docs
+lxml.doctestcompare.LXMLOutputChecker.get_parser       lxml.doctestcompare.LXMLOutputChecker-class.html#get_parser
+lxml.doctestcompare.LXMLOutputChecker.html_empty_tag   lxml.doctestcompare.LXMLOutputChecker-class.html#html_empty_tag
+lxml.doctestcompare.LXMLOutputChecker.get_default_parser       lxml.doctestcompare.LXMLOutputChecker-class.html#get_default_parser
+lxml.doctestcompare.LXMLOutputChecker.format_tag       lxml.doctestcompare.LXMLOutputChecker-class.html#format_tag
+lxml.doctestcompare.LXMLOutputChecker.check_output     lxml.doctestcompare.LXMLOutputChecker-class.html#check_output
+lxml.doctestcompare.LXMLOutputChecker.collect_diff     lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff
+lxml.doctestcompare.LXMLOutputChecker.tag_compare      lxml.doctestcompare.LXMLOutputChecker-class.html#tag_compare
+lxml.doctestcompare.LXMLOutputChecker.format_doc       lxml.doctestcompare.LXMLOutputChecker-class.html#format_doc
+lxml.doctestcompare.LXMLOutputChecker.output_difference        lxml.doctestcompare.LXMLOutputChecker-class.html#output_difference
+lxml.doctestcompare.LXMLOutputChecker.format_end_tag   lxml.doctestcompare.LXMLOutputChecker-class.html#format_end_tag
+lxml.doctestcompare.LXMLOutputChecker.format_text      lxml.doctestcompare.LXMLOutputChecker-class.html#format_text
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_end_tag     lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_end_tag
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_text        lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_text
+lxml.doctestcompare._RestoreChecker    lxml.doctestcompare._RestoreChecker-class.html
+lxml.doctestcompare._RestoreChecker.uninstall_dt_self  lxml.doctestcompare._RestoreChecker-class.html#uninstall_dt_self
+lxml.doctestcompare._RestoreChecker.install_clone      lxml.doctestcompare._RestoreChecker-class.html#install_clone
+lxml.doctestcompare._RestoreChecker.uninstall_module   lxml.doctestcompare._RestoreChecker-class.html#uninstall_module
+lxml.doctestcompare._RestoreChecker.uninstall_clone    lxml.doctestcompare._RestoreChecker-class.html#uninstall_clone
+lxml.doctestcompare._RestoreChecker.install_dt_self    lxml.doctestcompare._RestoreChecker-class.html#install_dt_self
+lxml.doctestcompare._RestoreChecker.__call__   lxml.doctestcompare._RestoreChecker-class.html#__call__
+lxml.doctestcompare._RestoreChecker.call_super lxml.doctestcompare._RestoreChecker-class.html#call_super
+lxml.doctestcompare._RestoreChecker.__init__   lxml.doctestcompare._RestoreChecker-class.html#__init__
+lxml.etree.AncestorsIterator   lxml.etree.AncestorsIterator-class.html
+lxml.etree.AncestorsIterator.__new__   lxml.etree.AncestorsIterator-class.html#__new__
+lxml.etree._ElementIterator.__next__   lxml.etree._ElementIterator-class.html#__next__
+lxml.etree._ElementIterator.next       lxml.etree._ElementIterator-class.html#next
+lxml.etree._ElementIterator.__iter__   lxml.etree._ElementIterator-class.html#__iter__
+lxml.etree.AttributeBasedElementClassLookup    lxml.etree.AttributeBasedElementClassLookup-class.html
+lxml.etree.AttributeBasedElementClassLookup.__new__    lxml.etree.AttributeBasedElementClassLookup-class.html#__new__
+lxml.etree.FallbackElementClassLookup.fallback lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback     lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.AttributeBasedElementClassLookup.__init__   lxml.etree.AttributeBasedElementClassLookup-class.html#__init__
+lxml.etree.C14NError   lxml.etree.C14NError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.CDATA       lxml.etree.CDATA-class.html
+lxml.etree.CDATA.__new__       lxml.etree.CDATA-class.html#__new__
+lxml.etree.CDATA.__init__      lxml.etree.CDATA-class.html#__init__
+lxml.etree.CommentBase lxml.etree.CommentBase-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text   lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Comment.tag        lxml.etree._Comment-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree.CommentBase.__new__ lxml.etree.CommentBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.CommentBase.__init__        lxml.etree.CommentBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Comment.__repr__   lxml.etree._Comment-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree.CustomElementClassLookup    lxml.etree.CustomElementClassLookup-class.html
+lxml.etree.CustomElementClassLookup.__new__    lxml.etree.CustomElementClassLookup-class.html#__new__
+lxml.etree.CustomElementClassLookup.lookup     lxml.etree.CustomElementClassLookup-class.html#lookup
+lxml.etree.FallbackElementClassLookup.fallback lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback     lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.FallbackElementClassLookup.__init__ lxml.etree.FallbackElementClassLookup-class.html#__init__
+lxml.etree.DTD lxml.etree.DTD-class.html
+lxml.etree.DTD.__new__ lxml.etree.DTD-class.html#__new__
+lxml.etree._Validator._clear_error_log lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid      lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message      lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log        lxml.etree._Validator-class.html#error_log
+lxml.etree.DTD.__call__        lxml.etree.DTD-class.html#__call__
+lxml.etree._Validator.assert_  lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate lxml.etree._Validator-class.html#validate
+lxml.etree.DTD.__init__        lxml.etree.DTD-class.html#__init__
+lxml.etree.DTDError    lxml.etree.DTDError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.DTDParseError       lxml.etree.DTDParseError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.DTDValidateError    lxml.etree.DTDValidateError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.DocInfo     lxml.etree.DocInfo-class.html
+lxml.etree.DocInfo.xml_version lxml.etree.DocInfo-class.html#xml_version
+lxml.etree.DocInfo.public_id   lxml.etree.DocInfo-class.html#public_id
+lxml.etree.DocInfo.encoding    lxml.etree.DocInfo-class.html#encoding
+lxml.etree.DocInfo.externalDTD lxml.etree.DocInfo-class.html#externalDTD
+lxml.etree.DocInfo.system_url  lxml.etree.DocInfo-class.html#system_url
+lxml.etree.DocInfo.__new__     lxml.etree.DocInfo-class.html#__new__
+lxml.etree.DocInfo.internalDTD lxml.etree.DocInfo-class.html#internalDTD
+lxml.etree.DocInfo.URL lxml.etree.DocInfo-class.html#URL
+lxml.etree.DocInfo.standalone  lxml.etree.DocInfo-class.html#standalone
+lxml.etree.DocInfo.root_name   lxml.etree.DocInfo-class.html#root_name
+lxml.etree.DocInfo.doctype     lxml.etree.DocInfo-class.html#doctype
+lxml.etree.DocumentInvalid     lxml.etree.DocumentInvalid-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.ETCompatXMLParser   lxml.etree.ETCompatXMLParser-class.html
+lxml.etree._FeedParser.feed    lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup        lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close   lxml.etree._FeedParser-class.html#close
+lxml.etree.ETCompatXMLParser.__init__  lxml.etree.ETCompatXMLParser-class.html#__init__
+lxml.etree.ETCompatXMLParser.__new__   lxml.etree.ETCompatXMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup   lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement     lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy    lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers       lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target  lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log       lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log  lxml.etree._FeedParser-class.html#feed_error_log
+lxml.etree.ETXPath     lxml.etree.ETXPath-class.html
+lxml.etree.ETXPath.__new__     lxml.etree.ETXPath-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate        lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log       lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree.XPath.__repr__      lxml.etree.XPath-class.html#__repr__
+lxml.etree.XPath.__call__      lxml.etree.XPath-class.html#__call__
+lxml.etree.XPath.path  lxml.etree.XPath-class.html#path
+lxml.etree.ETXPath.__init__    lxml.etree.ETXPath-class.html#__init__
+lxml.etree.ElementBase lxml.etree.ElementBase-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree.ElementChildIterator        lxml.etree.ElementChildIterator-class.html
+lxml.etree.ElementChildIterator.__new__        lxml.etree.ElementChildIterator-class.html#__new__
+lxml.etree._ElementIterator.__next__   lxml.etree._ElementIterator-class.html#__next__
+lxml.etree._ElementIterator.next       lxml.etree._ElementIterator-class.html#next
+lxml.etree._ElementIterator.__iter__   lxml.etree._ElementIterator-class.html#__iter__
+lxml.etree.ElementClassLookup  lxml.etree.ElementClassLookup-class.html
+lxml.etree.ElementClassLookup.__new__  lxml.etree.ElementClassLookup-class.html#__new__
+lxml.etree.ElementDefaultClassLookup   lxml.etree.ElementDefaultClassLookup-class.html
+lxml.etree.ElementDefaultClassLookup.entity_class      lxml.etree.ElementDefaultClassLookup-class.html#entity_class
+lxml.etree.ElementDefaultClassLookup.__new__   lxml.etree.ElementDefaultClassLookup-class.html#__new__
+lxml.etree.ElementDefaultClassLookup.element_class     lxml.etree.ElementDefaultClassLookup-class.html#element_class
+lxml.etree.ElementDefaultClassLookup.pi_class  lxml.etree.ElementDefaultClassLookup-class.html#pi_class
+lxml.etree.ElementDefaultClassLookup.comment_class     lxml.etree.ElementDefaultClassLookup-class.html#comment_class
+lxml.etree.ElementDefaultClassLookup.__init__  lxml.etree.ElementDefaultClassLookup-class.html#__init__
+lxml.etree.ElementDepthFirstIterator   lxml.etree.ElementDepthFirstIterator-class.html
+lxml.etree.ElementDepthFirstIterator.__new__   lxml.etree.ElementDepthFirstIterator-class.html#__new__
+lxml.etree.ElementDepthFirstIterator.__next__  lxml.etree.ElementDepthFirstIterator-class.html#__next__
+lxml.etree.ElementDepthFirstIterator.next      lxml.etree.ElementDepthFirstIterator-class.html#next
+lxml.etree.ElementDepthFirstIterator.__iter__  lxml.etree.ElementDepthFirstIterator-class.html#__iter__
+lxml.etree.ElementNamespaceClassLookup lxml.etree.ElementNamespaceClassLookup-class.html
+lxml.etree.ElementNamespaceClassLookup.__new__ lxml.etree.ElementNamespaceClassLookup-class.html#__new__
+lxml.etree.ElementNamespaceClassLookup.get_namespace   lxml.etree.ElementNamespaceClassLookup-class.html#get_namespace
+lxml.etree.FallbackElementClassLookup.fallback lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback     lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.ElementNamespaceClassLookup.__init__        lxml.etree.ElementNamespaceClassLookup-class.html#__init__
+lxml.etree.ElementTextIterator lxml.etree.ElementTextIterator-class.html
+lxml.etree.ElementTextIterator.__new__ lxml.etree.ElementTextIterator-class.html#__new__
+lxml.etree.ElementTextIterator.__next__        lxml.etree.ElementTextIterator-class.html#__next__
+lxml.etree.ElementTextIterator.next    lxml.etree.ElementTextIterator-class.html#next
+lxml.etree.ElementTextIterator.__iter__        lxml.etree.ElementTextIterator-class.html#__iter__
+lxml.etree.EntityBase  lxml.etree.EntityBase-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Entity.text        lxml.etree._Entity-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Entity.tag lxml.etree._Entity-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree.EntityBase.__new__  lxml.etree.EntityBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.EntityBase.__init__ lxml.etree.EntityBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Entity.name        lxml.etree._Entity-class.html#name
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Entity.__repr__    lxml.etree._Entity-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree.Error       lxml.etree.Error-class.html
+lxml.etree.ErrorDomains        lxml.etree.ErrorDomains-class.html
+lxml.etree.ErrorDomains.HTTP   lxml.etree.ErrorDomains-class.html#HTTP
+lxml.etree.ErrorDomains.SCHEMATRONV    lxml.etree.ErrorDomains-class.html#SCHEMATRONV
+lxml.etree.ErrorDomains.DTD    lxml.etree.ErrorDomains-class.html#DTD
+lxml.etree.ErrorDomains.VALID  lxml.etree.ErrorDomains-class.html#VALID
+lxml.etree.ErrorDomains.I18N   lxml.etree.ErrorDomains-class.html#I18N
+lxml.etree.ErrorDomains._getName       lxml.etree.ErrorDomains-class.html#_getName
+lxml.etree.ErrorDomains.C14N   lxml.etree.ErrorDomains-class.html#C14N
+lxml.etree.ErrorDomains.NONE   lxml.etree.ErrorDomains-class.html#NONE
+lxml.etree.ErrorDomains.DATATYPE       lxml.etree.ErrorDomains-class.html#DATATYPE
+lxml.etree.ErrorDomains.XINCLUDE       lxml.etree.ErrorDomains-class.html#XINCLUDE
+lxml.etree.ErrorDomains.HTML   lxml.etree.ErrorDomains-class.html#HTML
+lxml.etree.ErrorDomains.CHECK  lxml.etree.ErrorDomains-class.html#CHECK
+lxml.etree.ErrorDomains.FTP    lxml.etree.ErrorDomains-class.html#FTP
+lxml.etree.ErrorDomains._names lxml.etree.ErrorDomains-class.html#_names
+lxml.etree.ErrorDomains.XSLT   lxml.etree.ErrorDomains-class.html#XSLT
+lxml.etree.ErrorDomains.PARSER lxml.etree.ErrorDomains-class.html#PARSER
+lxml.etree.ErrorDomains.NAMESPACE      lxml.etree.ErrorDomains-class.html#NAMESPACE
+lxml.etree.ErrorDomains.MODULE lxml.etree.ErrorDomains-class.html#MODULE
+lxml.etree.ErrorDomains.IO     lxml.etree.ErrorDomains-class.html#IO
+lxml.etree.ErrorDomains.REGEXP lxml.etree.ErrorDomains-class.html#REGEXP
+lxml.etree.ErrorDomains.XPATH  lxml.etree.ErrorDomains-class.html#XPATH
+lxml.etree.ErrorDomains.RELAXNGV       lxml.etree.ErrorDomains-class.html#RELAXNGV
+lxml.etree.ErrorDomains.RELAXNGP       lxml.etree.ErrorDomains-class.html#RELAXNGP
+lxml.etree.ErrorDomains.WRITER lxml.etree.ErrorDomains-class.html#WRITER
+lxml.etree.ErrorDomains.TREE   lxml.etree.ErrorDomains-class.html#TREE
+lxml.etree.ErrorDomains.SCHEMASP       lxml.etree.ErrorDomains-class.html#SCHEMASP
+lxml.etree.ErrorDomains.CATALOG        lxml.etree.ErrorDomains-class.html#CATALOG
+lxml.etree.ErrorDomains.SCHEMASV       lxml.etree.ErrorDomains-class.html#SCHEMASV
+lxml.etree.ErrorDomains.MEMORY lxml.etree.ErrorDomains-class.html#MEMORY
+lxml.etree.ErrorDomains.OUTPUT lxml.etree.ErrorDomains-class.html#OUTPUT
+lxml.etree.ErrorDomains.XPOINTER       lxml.etree.ErrorDomains-class.html#XPOINTER
+lxml.etree.ErrorLevels lxml.etree.ErrorLevels-class.html
+lxml.etree.ErrorLevels.NONE    lxml.etree.ErrorLevels-class.html#NONE
+lxml.etree.ErrorLevels._names  lxml.etree.ErrorLevels-class.html#_names
+lxml.etree.ErrorLevels.WARNING lxml.etree.ErrorLevels-class.html#WARNING
+lxml.etree.ErrorLevels.ERROR   lxml.etree.ErrorLevels-class.html#ERROR
+lxml.etree.ErrorLevels.FATAL   lxml.etree.ErrorLevels-class.html#FATAL
+lxml.etree.ErrorLevels._getName        lxml.etree.ErrorLevels-class.html#_getName
+lxml.etree.ErrorTypes  lxml.etree.ErrorTypes-class.html
+lxml.etree.ErrorTypes.I18N_CONV_FAILED lxml.etree.ErrorTypes-class.html#I18N_CONV_FAILED
+lxml.etree.ErrorTypes.SCHEMAP_ATTRFORMDEFAULT_VALUE    lxml.etree.ErrorTypes-class.html#SCHEMAP_ATTRFORMDEFAULT_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_NOTATION       lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_NOTATION
+lxml.etree.ErrorTypes.RNGP_EXCEPT_MULTIPLE     lxml.etree.ErrorTypes-class.html#RNGP_EXCEPT_MULTIPLE
+lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT_2       lxml.etree.ErrorTypes-class.html#SCHEMAP_AU_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.IO_EINVAL        lxml.etree.ErrorTypes-class.html#IO_EINVAL
+lxml.etree.ErrorTypes.ERR_VERSION_MISMATCH     lxml.etree.ErrorTypes-class.html#ERR_VERSION_MISMATCH
+lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_STARTED      lxml.etree.ErrorTypes-class.html#ERR_ELEMCONTENT_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAP_TYPE_AND_SUBTYPE lxml.etree.ErrorTypes-class.html#SCHEMAP_TYPE_AND_SUBTYPE
+lxml.etree.ErrorTypes.FTP_URL_SYNTAX   lxml.etree.ErrorTypes-class.html#FTP_URL_SYNTAX
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP  lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_USE lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ATTR_USE
+lxml.etree.ErrorTypes.CHECK_WRONG_PREV lxml.etree.ErrorTypes-class.html#CHECK_WRONG_PREV
+lxml.etree.ErrorTypes.CHECK_NS_SCOPE   lxml.etree.ErrorTypes-class.html#CHECK_NS_SCOPE
+lxml.etree.ErrorTypes.CHECK_NOT_NS_DECL        lxml.etree.ErrorTypes-class.html#CHECK_NOT_NS_DECL
+lxml.etree.ErrorTypes.XINCLUDE_XPTR_RESULT     lxml.etree.ErrorTypes-class.html#XINCLUDE_XPTR_RESULT
+lxml.etree.ErrorTypes.ERR_PEREF_IN_EPILOG      lxml.etree.ErrorTypes-class.html#ERR_PEREF_IN_EPILOG
+lxml.etree.ErrorTypes.IO_EMLINK        lxml.etree.ErrorTypes-class.html#IO_EMLINK
+lxml.etree.ErrorTypes.RNGP_PARAM_NAME_MISSING  lxml.etree.ErrorTypes-class.html#RNGP_PARAM_NAME_MISSING
+lxml.etree.ErrorTypes.WAR_NS_URI_RELATIVE      lxml.etree.ErrorTypes-class.html#WAR_NS_URI_RELATIVE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_2  lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ELEMENT_2_2
+lxml.etree.ErrorTypes.IO_ENFILE        lxml.etree.ErrorTypes-class.html#IO_ENFILE
+lxml.etree.ErrorTypes.SCHEMATRONV_ASSERT       lxml.etree.ErrorTypes-class.html#SCHEMATRONV_ASSERT
+lxml.etree.ErrorTypes.FTP_ACCNT        lxml.etree.ErrorTypes-class.html#FTP_ACCNT
+lxml.etree.ErrorTypes.RNGP_PAT_START_GROUP     lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_GROUP
+lxml.etree.ErrorTypes.SCHEMAV_MISSING  lxml.etree.ErrorTypes-class.html#SCHEMAV_MISSING
+lxml.etree.ErrorTypes.MODULE_OPEN      lxml.etree.ErrorTypes-class.html#MODULE_OPEN
+lxml.etree.ErrorTypes.XPATH_INVALID_OPERAND    lxml.etree.ErrorTypes-class.html#XPATH_INVALID_OPERAND
+lxml.etree.ErrorTypes.CHECK_FOUND_NOTATION     lxml.etree.ErrorTypes-class.html#CHECK_FOUND_NOTATION
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_1   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_1_1
+lxml.etree.ErrorTypes.ERR_UNPARSED_ENTITY      lxml.etree.ErrorTypes-class.html#ERR_UNPARSED_ENTITY
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_NOTATION_CHILD   lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_NOTATION_CHILD
+lxml.etree.ErrorTypes.CHECK_OUTSIDE_DICT       lxml.etree.ErrorTypes-class.html#CHECK_OUTSIDE_DICT
+lxml.etree.ErrorTypes.SCHEMAV_NOTEMPTY lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTEMPTY
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_GROUP       lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_GROUP
+lxml.etree.ErrorTypes.ERR_PEREF_SEMICOL_MISSING        lxml.etree.ErrorTypes-class.html#ERR_PEREF_SEMICOL_MISSING
+lxml.etree.ErrorTypes.DTD_LOAD_ERROR   lxml.etree.ErrorTypes-class.html#DTD_LOAD_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_BOOLEAN  lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_BOOLEAN
+lxml.etree.ErrorTypes.DTD_NOT_STANDALONE       lxml.etree.ErrorTypes-class.html#DTD_NOT_STANDALONE
+lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_3       lxml.etree.ErrorTypes-class.html#SCHEMAP_ST_PROPS_CORRECT_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_1  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ATTRIBUTE_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_3  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ATTRIBUTE_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_2  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ATTRIBUTE_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_4  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ATTRIBUTE_4
+lxml.etree.ErrorTypes.C14N_INVALID_NODE        lxml.etree.ErrorTypes-class.html#C14N_INVALID_NODE
+lxml.etree.ErrorTypes.XPATH_START_LITERAL_ERROR        lxml.etree.ErrorTypes-class.html#XPATH_START_LITERAL_ERROR
+lxml.etree.ErrorTypes.RNGP_TEXT_HAS_CHILD      lxml.etree.ErrorTypes-class.html#RNGP_TEXT_HAS_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_WILDCARD     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_WILDCARD
+lxml.etree.ErrorTypes.XPATH_UNDEF_VARIABLE_ERROR       lxml.etree.ErrorTypes-class.html#XPATH_UNDEF_VARIABLE_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_MISSING lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ATTR_MISSING
+lxml.etree.ErrorTypes.SCHEMAP_INTERNAL lxml.etree.ErrorTypes-class.html#SCHEMAP_INTERNAL
+lxml.etree.ErrorTypes.RNGP_EXCEPT_MISSING      lxml.etree.ErrorTypes-class.html#RNGP_EXCEPT_MISSING
+lxml.etree.ErrorTypes.TREE_INVALID_HEX lxml.etree.ErrorTypes-class.html#TREE_INVALID_HEX
+lxml.etree.ErrorTypes.RNGP_DEFINE_CREATE_FAILED        lxml.etree.ErrorTypes-class.html#RNGP_DEFINE_CREATE_FAILED
+lxml.etree.ErrorTypes.XPATH_ENCODING_ERROR     lxml.etree.ErrorTypes-class.html#XPATH_ENCODING_ERROR
+lxml.etree.ErrorTypes.SCHEMAV_CVC_IDC  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_IDC
+lxml.etree.ErrorTypes.CHECK_NO_ELEM    lxml.etree.ErrorTypes-class.html#CHECK_NO_ELEM
+lxml.etree.ErrorTypes.IO_EXDEV lxml.etree.ErrorTypes-class.html#IO_EXDEV
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_TYPE     lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_TYPE
+lxml.etree.ErrorTypes.ERR_LT_IN_ATTRIBUTE      lxml.etree.ErrorTypes-class.html#ERR_LT_IN_ATTRIBUTE
+lxml.etree.ErrorTypes.SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE     lxml.etree.ErrorTypes-class.html#SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE
+lxml.etree.ErrorTypes.IO_EMFILE        lxml.etree.ErrorTypes-class.html#IO_EMFILE
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_2    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_3_2_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_1    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_3_2_1
+lxml.etree.ErrorTypes.XINCLUDE_XPTR_FAILED     lxml.etree.ErrorTypes-class.html#XINCLUDE_XPTR_FAILED
+lxml.etree.ErrorTypes.ERR_MISPLACED_CDATA_END  lxml.etree.ErrorTypes-class.html#ERR_MISPLACED_CDATA_END
+lxml.etree.ErrorTypes.RNGP_ELEMENT_NO_CONTENT  lxml.etree.ErrorTypes-class.html#RNGP_ELEMENT_NO_CONTENT
+lxml.etree.ErrorTypes.IO_ENOENT        lxml.etree.ErrorTypes-class.html#IO_ENOENT
+lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_NOOP      lxml.etree.ErrorTypes-class.html#RNGP_ATTRIBUTE_NOOP
+lxml.etree.ErrorTypes.SCHEMAP_SRC_REDEFINE     lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_REDEFINE
+lxml.etree.ErrorTypes.ERR_CHARREF_IN_PROLOG    lxml.etree.ErrorTypes-class.html#ERR_CHARREF_IN_PROLOG
+lxml.etree.ErrorTypes.RNGP_REF_NAME_INVALID    lxml.etree.ErrorTypes-class.html#RNGP_REF_NAME_INVALID
+lxml.etree.ErrorTypes.ERR_NOTATION_PROCESSING  lxml.etree.ErrorTypes-class.html#ERR_NOTATION_PROCESSING
+lxml.etree.ErrorTypes.RNGP_INCLUDE_EMPTY       lxml.etree.ErrorTypes-class.html#RNGP_INCLUDE_EMPTY
+lxml.etree.ErrorTypes.RNGP_INCLUDE_RECURSE     lxml.etree.ErrorTypes-class.html#RNGP_INCLUDE_RECURSE
+lxml.etree.ErrorTypes.SCHEMAP_ELEM_NONAME_NOREF        lxml.etree.ErrorTypes-class.html#SCHEMAP_ELEM_NONAME_NOREF
+lxml.etree.ErrorTypes.RNGP_EMPTY_CONTENT       lxml.etree.ErrorTypes-class.html#RNGP_EMPTY_CONTENT
+lxml.etree.ErrorTypes.XPTR_EVAL_FAILED lxml.etree.ErrorTypes-class.html#XPTR_EVAL_FAILED
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_1     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_2_1
+lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_POSITION      lxml.etree.ErrorTypes-class.html#XPATH_INVALID_CTXT_POSITION
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_3     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_2_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_4     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_2_4
+lxml.etree.ErrorTypes.ERR_INTERNAL_ERROR       lxml.etree.ErrorTypes-class.html#ERR_INTERNAL_ERROR
+lxml.etree.ErrorTypes.ERR_DOCTYPE_NOT_FINISHED lxml.etree.ErrorTypes-class.html#ERR_DOCTYPE_NOT_FINISHED
+lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_ANYNAME   lxml.etree.ErrorTypes-class.html#RNGP_PAT_NSNAME_EXCEPT_ANYNAME
+lxml.etree.ErrorTypes.RNGP_EMPTY_NOT_EMPTY     lxml.etree.ErrorTypes-class.html#RNGP_EMPTY_NOT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAP_NO_XMLNS lxml.etree.ErrorTypes-class.html#SCHEMAP_NO_XMLNS
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_ATTR       lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_ATTR
+lxml.etree.ErrorTypes.ERR_NO_DTD       lxml.etree.ErrorTypes-class.html#ERR_NO_DTD
+lxml.etree.ErrorTypes.ERR_ENTITY_LOOP  lxml.etree.ErrorTypes-class.html#ERR_ENTITY_LOOP
+lxml.etree.ErrorTypes.IO_EINTR lxml.etree.ErrorTypes-class.html#IO_EINTR
+lxml.etree.ErrorTypes.ERR_MISSING_ENCODING     lxml.etree.ErrorTypes-class.html#ERR_MISSING_ENCODING
+lxml.etree.ErrorTypes.DTD_STANDALONE_WHITE_SPACE       lxml.etree.ErrorTypes-class.html#DTD_STANDALONE_WHITE_SPACE
+lxml.etree.ErrorTypes.DTD_ENTITY_TYPE  lxml.etree.ErrorTypes-class.html#DTD_ENTITY_TYPE
+lxml.etree.ErrorTypes.IO_ENOTEMPTY     lxml.etree.ErrorTypes-class.html#IO_ENOTEMPTY
+lxml.etree.ErrorTypes.RNGP_REF_NO_NAME lxml.etree.ErrorTypes-class.html#RNGP_REF_NO_NAME
+lxml.etree.ErrorTypes.XINCLUDE_MULTIPLE_ROOT   lxml.etree.ErrorTypes-class.html#XINCLUDE_MULTIPLE_ROOT
+lxml.etree.ErrorTypes.SCHEMAV_NOTYPE   lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTYPE
+lxml.etree.ErrorTypes.RNGP_ELEMENT_EMPTY       lxml.etree.ErrorTypes-class.html#RNGP_ELEMENT_EMPTY
+lxml.etree.ErrorTypes.IO_ECANCELED     lxml.etree.ErrorTypes-class.html#IO_ECANCELED
+lxml.etree.ErrorTypes.RNGP_EXCEPT_NO_CONTENT   lxml.etree.ErrorTypes-class.html#RNGP_EXCEPT_NO_CONTENT
+lxml.etree.ErrorTypes.WAR_NS_COLUMN    lxml.etree.ErrorTypes-class.html#WAR_NS_COLUMN
+lxml.etree.ErrorTypes.IO_ENOTSOCK      lxml.etree.ErrorTypes-class.html#IO_ENOTSOCK
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_DERIVED_OK_2_1
+lxml.etree.ErrorTypes.ERR_URI_FRAGMENT lxml.etree.ErrorTypes-class.html#ERR_URI_FRAGMENT
+lxml.etree.ErrorTypes.SCHEMAV_NOTNILLABLE      lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTNILLABLE
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_TEXT       lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_TEXT
+lxml.etree.ErrorTypes.SCHEMAV_UNDECLAREDELEM   lxml.etree.ErrorTypes-class.html#SCHEMAV_UNDECLAREDELEM
+lxml.etree.ErrorTypes.SCHEMAP_AG_PROPS_CORRECT lxml.etree.ErrorTypes-class.html#SCHEMAP_AG_PROPS_CORRECT
+lxml.etree.ErrorTypes.IO_ENOMEM        lxml.etree.ErrorTypes-class.html#IO_ENOMEM
+lxml.etree.ErrorTypes.ERR_NOTATION_NOT_STARTED lxml.etree.ErrorTypes-class.html#ERR_NOTATION_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ELEM_CHILD       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ELEM_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_1      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_4_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_3      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_4_3
+lxml.etree.ErrorTypes.DTD_NO_DOC       lxml.etree.ErrorTypes-class.html#DTD_NO_DOC
+lxml.etree.ErrorTypes.RNGP_TYPE_NOT_FOUND      lxml.etree.ErrorTypes-class.html#RNGP_TYPE_NOT_FOUND
+lxml.etree.ErrorTypes.DTD_NO_ROOT      lxml.etree.ErrorTypes-class.html#DTD_NO_ROOT
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRGRP_CHILD    lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ATTRGRP_CHILD
+lxml.etree.ErrorTypes.IO_EACCES        lxml.etree.ErrorTypes-class.html#IO_EACCES
+lxml.etree.ErrorTypes._names   lxml.etree.ErrorTypes-class.html#_names
+lxml.etree.ErrorTypes.SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES     lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES
+lxml.etree.ErrorTypes.ERR_RESERVED_XML_NAME    lxml.etree.ErrorTypes-class.html#ERR_RESERVED_XML_NAME
+lxml.etree.ErrorTypes.RNGP_TEXT_EXPECTED       lxml.etree.ErrorTypes-class.html#RNGP_TEXT_EXPECTED
+lxml.etree.ErrorTypes.RNGP_CHOICE_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_CHOICE_EMPTY
+lxml.etree.ErrorTypes.ERR_TAG_NOT_FINISHED     lxml.etree.ErrorTypes-class.html#ERR_TAG_NOT_FINISHED
+lxml.etree.ErrorTypes.CHECK_FOUND_TEXT lxml.etree.ErrorTypes-class.html#CHECK_FOUND_TEXT
+lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_NAME   lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_NO_NAME
+lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_GROUP_ATTR      lxml.etree.ErrorTypes-class.html#RNGP_PAT_ONEMORE_GROUP_ATTR
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ENUMERATION_VALID    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ENUMERATION_VALID
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_RESTRICTION_CHILD        lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_RESTRICTION_CHILD
+lxml.etree.ErrorTypes.DTD_ELEM_REDEFINED       lxml.etree.ErrorTypes-class.html#DTD_ELEM_REDEFINED
+lxml.etree.ErrorTypes.RNGP_MISSING_HREF        lxml.etree.ErrorTypes-class.html#RNGP_MISSING_HREF
+lxml.etree.ErrorTypes.IO_ERANGE        lxml.etree.ErrorTypes-class.html#IO_ERANGE
+lxml.etree.ErrorTypes.HTTP_UNKNOWN_HOST        lxml.etree.ErrorTypes-class.html#HTTP_UNKNOWN_HOST
+lxml.etree.ErrorTypes.RNGP_PAT_START_ATTR      lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_ATTR
+lxml.etree.ErrorTypes.SCHEMAP_NOTATION_NO_NAME lxml.etree.ErrorTypes-class.html#SCHEMAP_NOTATION_NO_NAME
+lxml.etree.ErrorTypes.NS_ERR_COLON     lxml.etree.ErrorTypes-class.html#NS_ERR_COLON
+lxml.etree.ErrorTypes.ERR_PEREF_IN_INT_SUBSET  lxml.etree.ErrorTypes-class.html#ERR_PEREF_IN_INT_SUBSET
+lxml.etree.ErrorTypes.RNGP_VALUE_EMPTY lxml.etree.ErrorTypes-class.html#RNGP_VALUE_EMPTY
+lxml.etree.ErrorTypes.WAR_UNKNOWN_VERSION      lxml.etree.ErrorTypes-class.html#WAR_UNKNOWN_VERSION
+lxml.etree.ErrorTypes.SCHEMAV_ISABSTRACT       lxml.etree.ErrorTypes-class.html#SCHEMAV_ISABSTRACT
+lxml.etree.ErrorTypes.IO_EMSGSIZE      lxml.etree.ErrorTypes-class.html#IO_EMSGSIZE
+lxml.etree.ErrorTypes.CATALOG_ENTRY_BROKEN     lxml.etree.ErrorTypes-class.html#CATALOG_ENTRY_BROKEN
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_2   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_1_2
+lxml.etree.ErrorTypes.RNGP_CREATE_FAILURE      lxml.etree.ErrorTypes-class.html#RNGP_CREATE_FAILURE
+lxml.etree.ErrorTypes.ERR_NAME_REQUIRED        lxml.etree.ErrorTypes-class.html#ERR_NAME_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_NOT_ALLOWED     lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ATTR_NOT_ALLOWED
+lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_FINISHED lxml.etree.ErrorTypes-class.html#ERR_ATTLIST_NOT_FINISHED
+lxml.etree.ErrorTypes._getName lxml.etree.ErrorTypes-class.html#_getName
+lxml.etree.ErrorTypes.XPTR_EXTRA_OBJECTS       lxml.etree.ErrorTypes-class.html#XPTR_EXTRA_OBJECTS
+lxml.etree.ErrorTypes.IO_EISCONN       lxml.etree.ErrorTypes-class.html#IO_EISCONN
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_CHOICE_CHILD     lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_CHOICE_CHILD
+lxml.etree.ErrorTypes.ERR_PUBID_REQUIRED       lxml.etree.ErrorTypes-class.html#ERR_PUBID_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_NOTHING_TO_PARSE lxml.etree.ErrorTypes-class.html#SCHEMAP_NOTHING_TO_PARSE
+lxml.etree.ErrorTypes.RNGP_NOTALLOWED_NOT_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_NOTALLOWED_NOT_EMPTY
+lxml.etree.ErrorTypes.RNGP_REF_NOT_EMPTY       lxml.etree.ErrorTypes-class.html#RNGP_REF_NOT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAP_DEF_AND_PREFIX   lxml.etree.ErrorTypes-class.html#SCHEMAP_DEF_AND_PREFIX
+lxml.etree.ErrorTypes.ERR_NOTATION_NOT_FINISHED        lxml.etree.ErrorTypes-class.html#ERR_NOTATION_NOT_FINISHED
+lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CHILDREN  lxml.etree.ErrorTypes-class.html#RNGP_ATTRIBUTE_CHILDREN
+lxml.etree.ErrorTypes.RNGP_PAT_START_DATA      lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_DATA
+lxml.etree.ErrorTypes.RNGP_ELEMENT_NAME        lxml.etree.ErrorTypes-class.html#RNGP_ELEMENT_NAME
+lxml.etree.ErrorTypes.XPATH_UNKNOWN_FUNC_ERROR lxml.etree.ErrorTypes-class.html#XPATH_UNKNOWN_FUNC_ERROR
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_INTERLEAVE  lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_INTERLEAVE
+lxml.etree.ErrorTypes.ERR_VERSION_MISSING      lxml.etree.ErrorTypes-class.html#ERR_VERSION_MISSING
+lxml.etree.ErrorTypes.RNGP_DEFINE_MISSING      lxml.etree.ErrorTypes-class.html#RNGP_DEFINE_MISSING
+lxml.etree.ErrorTypes.CATALOG_NOT_CATALOG      lxml.etree.ErrorTypes-class.html#CATALOG_NOT_CATALOG
+lxml.etree.ErrorTypes.XINCLUDE_TEXT_DOCUMENT   lxml.etree.ErrorTypes-class.html#XINCLUDE_TEXT_DOCUMENT
+lxml.etree.ErrorTypes.DTD_NO_ELEM_NAME lxml.etree.ErrorTypes-class.html#DTD_NO_ELEM_NAME
+lxml.etree.ErrorTypes.ERR_UNSUPPORTED_ENCODING lxml.etree.ErrorTypes-class.html#ERR_UNSUPPORTED_ENCODING
+lxml.etree.ErrorTypes.ERR_ENTITY_NOT_STARTED   lxml.etree.ErrorTypes-class.html#ERR_ENTITY_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAV_ATTRUNKNOWN      lxml.etree.ErrorTypes-class.html#SCHEMAV_ATTRUNKNOWN
+lxml.etree.ErrorTypes.DTD_ELEM_DEFAULT_NAMESPACE       lxml.etree.ErrorTypes-class.html#DTD_ELEM_DEFAULT_NAMESPACE
+lxml.etree.ErrorTypes.IO_EDOM  lxml.etree.ErrorTypes-class.html#IO_EDOM
+lxml.etree.ErrorTypes.ERR_NO_MEMORY    lxml.etree.ErrorTypes-class.html#ERR_NO_MEMORY
+lxml.etree.ErrorTypes.RNGP_GROUP_ATTR_CONFLICT lxml.etree.ErrorTypes-class.html#RNGP_GROUP_ATTR_CONFLICT
+lxml.etree.ErrorTypes.FTP_EPSV_ANSWER  lxml.etree.ErrorTypes-class.html#FTP_EPSV_ANSWER
+lxml.etree.ErrorTypes.IO_ENOTTY        lxml.etree.ErrorTypes-class.html#IO_ENOTTY
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_1 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_1_1
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_2 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_1_2
+lxml.etree.ErrorTypes.IO_EFAULT        lxml.etree.ErrorTypes-class.html#IO_EFAULT
+lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_1       lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_CT_EXTENDS_1_1
+lxml.etree.ErrorTypes.SCHEMAV_ELEMCONT lxml.etree.ErrorTypes-class.html#SCHEMAV_ELEMCONT
+lxml.etree.ErrorTypes.IO_ECHILD        lxml.etree.ErrorTypes-class.html#IO_ECHILD
+lxml.etree.ErrorTypes.ERR_VALUE_REQUIRED       lxml.etree.ErrorTypes-class.html#ERR_VALUE_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_1  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_VALID_DEFAULT_2_2_1
+lxml.etree.ErrorTypes.ERR_PCDATA_REQUIRED      lxml.etree.ErrorTypes-class.html#ERR_PCDATA_REQUIRED
+lxml.etree.ErrorTypes.RNGP_PAT_START_TEXT      lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_TEXT
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_1   lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_1_3_1
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_2   lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_1_3_2
+lxml.etree.ErrorTypes.RNGP_INTERLEAVE_CREATE_FAILED    lxml.etree.ErrorTypes-class.html#RNGP_INTERLEAVE_CREATE_FAILED
+lxml.etree.ErrorTypes.CHECK_WRONG_NAME lxml.etree.ErrorTypes-class.html#CHECK_WRONG_NAME
+lxml.etree.ErrorTypes.XPATH_INVALID_CHAR_ERROR lxml.etree.ErrorTypes-class.html#XPATH_INVALID_CHAR_ERROR
+lxml.etree.ErrorTypes.DTD_UNKNOWN_ID   lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_ID
+lxml.etree.ErrorTypes.ERR_INVALID_HEX_CHARREF  lxml.etree.ErrorTypes-class.html#ERR_INVALID_HEX_CHARREF
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXLENGTH_VALID      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MAXLENGTH_VALID
+lxml.etree.ErrorTypes.ERR_ENTITY_CHAR_ERROR    lxml.etree.ErrorTypes-class.html#ERR_ENTITY_CHAR_ERROR
+lxml.etree.ErrorTypes.DTD_ID_SUBSET    lxml.etree.ErrorTypes-class.html#DTD_ID_SUBSET
+lxml.etree.ErrorTypes.IO_LOAD_ERROR    lxml.etree.ErrorTypes-class.html#IO_LOAD_ERROR
+lxml.etree.ErrorTypes.ERR_INVALID_ENCODING     lxml.etree.ErrorTypes-class.html#ERR_INVALID_ENCODING
+lxml.etree.ErrorTypes.SCHEMAP_COS_ALL_LIMITED  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ALL_LIMITED
+lxml.etree.ErrorTypes.IO_EIO   lxml.etree.ErrorTypes-class.html#IO_EIO
+lxml.etree.ErrorTypes.RNGP_DEFINE_NAME_MISSING lxml.etree.ErrorTypes-class.html#RNGP_DEFINE_NAME_MISSING
+lxml.etree.ErrorTypes.IO_ENOTDIR       lxml.etree.ErrorTypes-class.html#IO_ENOTDIR
+lxml.etree.ErrorTypes.XINCLUDE_TEXT_FRAGMENT   lxml.etree.ErrorTypes-class.html#XINCLUDE_TEXT_FRAGMENT
+lxml.etree.ErrorTypes.SCHEMAP_MISSING_SIMPLETYPE_CHILD lxml.etree.ErrorTypes-class.html#SCHEMAP_MISSING_SIMPLETYPE_CHILD
+lxml.etree.ErrorTypes.DTD_NOT_PCDATA   lxml.etree.ErrorTypes-class.html#DTD_NOT_PCDATA
+lxml.etree.ErrorTypes.ERR_INVALID_URI  lxml.etree.ErrorTypes-class.html#ERR_INVALID_URI
+lxml.etree.ErrorTypes.SCHEMAV_VALUE    lxml.etree.ErrorTypes-class.html#SCHEMAV_VALUE
+lxml.etree.ErrorTypes.XPATH_INVALID_PREDICATE_ERROR    lxml.etree.ErrorTypes-class.html#XPATH_INVALID_PREDICATE_ERROR
+lxml.etree.ErrorTypes.IO_ENOEXEC       lxml.etree.ErrorTypes-class.html#IO_ENOEXEC
+lxml.etree.ErrorTypes.RNGP_GRAMMAR_NO_START    lxml.etree.ErrorTypes-class.html#RNGP_GRAMMAR_NO_START
+lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_FINISHED lxml.etree.ErrorTypes-class.html#ERR_XMLDECL_NOT_FINISHED
+lxml.etree.ErrorTypes.RNGP_REF_NO_DEF  lxml.etree.ErrorTypes-class.html#RNGP_REF_NO_DEF
+lxml.etree.ErrorTypes.RNGP_NEED_COMBINE        lxml.etree.ErrorTypes-class.html#RNGP_NEED_COMBINE
+lxml.etree.ErrorTypes.ERR_STANDALONE_VALUE     lxml.etree.ErrorTypes-class.html#ERR_STANDALONE_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_NAME        lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ATTR_NAME
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_4       lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_4
+lxml.etree.ErrorTypes.IO_ENOSYS        lxml.etree.ErrorTypes-class.html#IO_ENOSYS
+lxml.etree.ErrorTypes.SCHEMAP_ELEMFORMDEFAULT_VALUE    lxml.etree.ErrorTypes-class.html#SCHEMAP_ELEMFORMDEFAULT_VALUE
+lxml.etree.ErrorTypes.ERR_STRING_NOT_CLOSED    lxml.etree.ErrorTypes-class.html#ERR_STRING_NOT_CLOSED
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_2       lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_3       lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_AU   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_AU
+lxml.etree.ErrorTypes.RNGP_FORBIDDEN_ATTRIBUTE lxml.etree.ErrorTypes-class.html#RNGP_FORBIDDEN_ATTRIBUTE
+lxml.etree.ErrorTypes.ERR_PI_NOT_FINISHED      lxml.etree.ErrorTypes-class.html#ERR_PI_NOT_FINISHED
+lxml.etree.ErrorTypes.XPATH_EXPR_ERROR lxml.etree.ErrorTypes-class.html#XPATH_EXPR_ERROR
+lxml.etree.ErrorTypes.RNGP_NSNAME_NO_NS        lxml.etree.ErrorTypes-class.html#RNGP_NSNAME_NO_NS
+lxml.etree.ErrorTypes.NS_ERR_EMPTY     lxml.etree.ErrorTypes-class.html#NS_ERR_EMPTY
+lxml.etree.ErrorTypes.ERR_HYPHEN_IN_COMMENT    lxml.etree.ErrorTypes-class.html#ERR_HYPHEN_IN_COMMENT
+lxml.etree.ErrorTypes.XPATH_NUMBER_ERROR       lxml.etree.ErrorTypes-class.html#XPATH_NUMBER_ERROR
+lxml.etree.ErrorTypes.RNGP_PARENTREF_NOT_EMPTY lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_NOT_EMPTY
+lxml.etree.ErrorTypes.ERR_PI_NOT_STARTED       lxml.etree.ErrorTypes-class.html#ERR_PI_NOT_STARTED
+lxml.etree.ErrorTypes.RNGP_TYPE_MISSING        lxml.etree.ErrorTypes-class.html#RNGP_TYPE_MISSING
+lxml.etree.ErrorTypes.IO_EPERM lxml.etree.ErrorTypes-class.html#IO_EPERM
+lxml.etree.ErrorTypes.ERR_COMMENT_NOT_FINISHED lxml.etree.ErrorTypes-class.html#ERR_COMMENT_NOT_FINISHED
+lxml.etree.ErrorTypes.DTD_CONTENT_ERROR        lxml.etree.ErrorTypes-class.html#DTD_CONTENT_ERROR
+lxml.etree.ErrorTypes.DTD_NOTATION_VALUE       lxml.etree.ErrorTypes-class.html#DTD_NOTATION_VALUE
+lxml.etree.ErrorTypes.RNGP_URI_NOT_ABSOLUTE    lxml.etree.ErrorTypes-class.html#RNGP_URI_NOT_ABSOLUTE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_1   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_3_1
+lxml.etree.ErrorTypes.XPATH_VARIABLE_REF_ERROR lxml.etree.ErrorTypes-class.html#XPATH_VARIABLE_REF_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_2   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_3_2
+lxml.etree.ErrorTypes.RNGP_INTERLEAVE_EMPTY    lxml.etree.ErrorTypes-class.html#RNGP_INTERLEAVE_EMPTY
+lxml.etree.ErrorTypes.C14N_UNKNOW_NODE lxml.etree.ErrorTypes-class.html#C14N_UNKNOW_NODE
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_MAXOCCURS        lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_MAXOCCURS
+lxml.etree.ErrorTypes.SCHEMAV_NOTTOPLEVEL      lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTTOPLEVEL
+lxml.etree.ErrorTypes.SCHEMAP_WILDCARD_INVALID_NS_MEMBER       lxml.etree.ErrorTypes-class.html#SCHEMAP_WILDCARD_INVALID_NS_MEMBER
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_LIST_CHILD       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_LIST_CHILD
+lxml.etree.ErrorTypes.WAR_LANG_VALUE   lxml.etree.ErrorTypes-class.html#WAR_LANG_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_4_1
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_2    lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_4_2
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_3    lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_4_3
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PREFIX   lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_PREFIX
+lxml.etree.ErrorTypes.ERR_STRING_NOT_STARTED   lxml.etree.ErrorTypes-class.html#ERR_STRING_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAP_RECURSIVE        lxml.etree.ErrorTypes-class.html#SCHEMAP_RECURSIVE
+lxml.etree.ErrorTypes.CHECK_ENTITY_TYPE        lxml.etree.ErrorTypes-class.html#CHECK_ENTITY_TYPE
+lxml.etree.ErrorTypes.RNGP_EMPTY_CONSTRUCT     lxml.etree.ErrorTypes-class.html#RNGP_EMPTY_CONSTRUCT
+lxml.etree.ErrorTypes.RNGP_CHOICE_CONTENT      lxml.etree.ErrorTypes-class.html#RNGP_CHOICE_CONTENT
+lxml.etree.ErrorTypes.XINCLUDE_RECURSION       lxml.etree.ErrorTypes-class.html#XINCLUDE_RECURSION
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_INCLUDE_CHILD    lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_INCLUDE_CHILD
+lxml.etree.ErrorTypes.ERR_ENTITY_NOT_FINISHED  lxml.etree.ErrorTypes-class.html#ERR_ENTITY_NOT_FINISHED
+lxml.etree.ErrorTypes.IO_ENAMETOOLONG  lxml.etree.ErrorTypes-class.html#IO_ENAMETOOLONG
+lxml.etree.ErrorTypes.DTD_EMPTY_NOTATION       lxml.etree.ErrorTypes-class.html#DTD_EMPTY_NOTATION
+lxml.etree.ErrorTypes.ERR_EXT_SUBSET_NOT_FINISHED      lxml.etree.ErrorTypes-class.html#ERR_EXT_SUBSET_NOT_FINISHED
+lxml.etree.ErrorTypes.SCHEMAP_REGEXP_INVALID   lxml.etree.ErrorTypes-class.html#SCHEMAP_REGEXP_INVALID
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MINEXCLUSIVE_VALID   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MINEXCLUSIVE_VALID
+lxml.etree.ErrorTypes.RNGP_PREFIX_UNDEFINED    lxml.etree.ErrorTypes-class.html#RNGP_PREFIX_UNDEFINED
+lxml.etree.ErrorTypes.DTD_CONTENT_MODEL        lxml.etree.ErrorTypes-class.html#DTD_CONTENT_MODEL
+lxml.etree.ErrorTypes.ERR_ENTITY_PROCESSING    lxml.etree.ErrorTypes-class.html#ERR_ENTITY_PROCESSING
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_TEXT        lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_TEXT
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD     lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_4  lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_4
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_2  lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_2
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_1  lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_1
+lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NO_URI    lxml.etree.ErrorTypes-class.html#SCHEMAP_INCLUDE_SCHEMA_NO_URI
+lxml.etree.ErrorTypes.CHECK_X  lxml.etree.ErrorTypes-class.html#CHECK_X
+lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_2       lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_CT_EXTENDS_1_2
+lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_3       lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_CT_EXTENDS_1_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_1      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_3_1
+lxml.etree.ErrorTypes.DTD_CONTENT_NOT_DETERMINIST      lxml.etree.ErrorTypes-class.html#DTD_CONTENT_NOT_DETERMINIST
+lxml.etree.ErrorTypes.SCHEMAV_NOROLLBACK       lxml.etree.ErrorTypes-class.html#SCHEMAV_NOROLLBACK
+lxml.etree.ErrorTypes.ERR_DOCUMENT_END lxml.etree.ErrorTypes-class.html#ERR_DOCUMENT_END
+lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_EPILOG  lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_IN_EPILOG
+lxml.etree.ErrorTypes.XINCLUDE_INVALID_CHAR    lxml.etree.ErrorTypes-class.html#XINCLUDE_INVALID_CHAR
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_CHILD      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_FACET_CHILD
+lxml.etree.ErrorTypes.RNGP_DEFINE_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_DEFINE_EMPTY
+lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ELEM       lxml.etree.ErrorTypes-class.html#RNGP_PAT_ATTR_ELEM
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_INLINE_COMBINATION  lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ATTR_INLINE_COMBINATION
+lxml.etree.ErrorTypes.RNGP_PAT_START_INTERLEAVE        lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_INTERLEAVE
+lxml.etree.ErrorTypes.I18N_EXCESS_HANDLER      lxml.etree.ErrorTypes-class.html#I18N_EXCESS_HANDLER
+lxml.etree.ErrorTypes.IO_ENETUNREACH   lxml.etree.ErrorTypes-class.html#IO_ENETUNREACH
+lxml.etree.ErrorTypes.RNGP_INVALID_VALUE       lxml.etree.ErrorTypes-class.html#RNGP_INVALID_VALUE
+lxml.etree.ErrorTypes.IO_NO_INPUT      lxml.etree.ErrorTypes-class.html#IO_NO_INPUT
+lxml.etree.ErrorTypes.RNGP_PAT_START_LIST      lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_LIST
+lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_1        lxml.etree.ErrorTypes-class.html#SCHEMAP_P_PROPS_CORRECT_1
+lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_STARTED        lxml.etree.ErrorTypes-class.html#ERR_ATTRIBUTE_NOT_STARTED
+lxml.etree.ErrorTypes.CHECK_NOT_ATTR   lxml.etree.ErrorTypes-class.html#CHECK_NOT_ATTR
+lxml.etree.ErrorTypes.CHECK_NOT_ENTITY_DECL    lxml.etree.ErrorTypes-class.html#CHECK_NOT_ENTITY_DECL
+lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_PROLOG  lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_IN_PROLOG
+lxml.etree.ErrorTypes.ERR_PEREF_NO_NAME        lxml.etree.ErrorTypes-class.html#ERR_PEREF_NO_NAME
+lxml.etree.ErrorTypes.RNGP_FOREIGN_ELEMENT     lxml.etree.ErrorTypes-class.html#RNGP_FOREIGN_ELEMENT
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_2    lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_2_2
+lxml.etree.ErrorTypes.CHECK_NOT_ATTR_DECL      lxml.etree.ErrorTypes-class.html#CHECK_NOT_ATTR_DECL
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_TYPE       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_FACET_TYPE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2     lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_2
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_2 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_2
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_3 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_3
+lxml.etree.ErrorTypes.XINCLUDE_HREF_URI        lxml.etree.ErrorTypes-class.html#XINCLUDE_HREF_URI
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_1 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_1
+lxml.etree.ErrorTypes.ERR_SEPARATOR_REQUIRED   lxml.etree.ErrorTypes-class.html#ERR_SEPARATOR_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_4 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_4
+lxml.etree.ErrorTypes.FTP_PASV_ANSWER  lxml.etree.ErrorTypes-class.html#FTP_PASV_ANSWER
+lxml.etree.ErrorTypes.SAVE_NO_DOCTYPE  lxml.etree.ErrorTypes-class.html#SAVE_NO_DOCTYPE
+lxml.etree.ErrorTypes.DTD_NO_PREFIX    lxml.etree.ErrorTypes-class.html#DTD_NO_PREFIX
+lxml.etree.ErrorTypes.ERR_MIXED_NOT_STARTED    lxml.etree.ErrorTypes-class.html#ERR_MIXED_NOT_STARTED
+lxml.etree.ErrorTypes.ERR_ENTITYREF_SEMICOL_MISSING    lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_SEMICOL_MISSING
+lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_FINISHED lxml.etree.ErrorTypes-class.html#ERR_CONDSEC_NOT_FINISHED
+lxml.etree.ErrorTypes.RNGP_EMPTY       lxml.etree.ErrorTypes-class.html#RNGP_EMPTY
+lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_PARENT lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_NO_PARENT
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ELEM        lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_ELEM
+lxml.etree.ErrorTypes.WAR_SPACE_VALUE  lxml.etree.ErrorTypes-class.html#WAR_SPACE_VALUE
+lxml.etree.ErrorTypes.ERR_MIXED_NOT_FINISHED   lxml.etree.ErrorTypes-class.html#ERR_MIXED_NOT_FINISHED
+lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_POINTLESS_PROH lxml.etree.ErrorTypes-class.html#SCHEMAP_WARN_ATTR_POINTLESS_PROH
+lxml.etree.ErrorTypes.RNGP_START_CONTENT       lxml.etree.ErrorTypes-class.html#RNGP_START_CONTENT
+lxml.etree.ErrorTypes.RNGP_DEF_CHOICE_AND_INTERLEAVE   lxml.etree.ErrorTypes-class.html#RNGP_DEF_CHOICE_AND_INTERLEAVE
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXINCLUSIVE_VALID   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MAXINCLUSIVE_VALID
+lxml.etree.ErrorTypes.CATALOG_MISSING_ATTR     lxml.etree.ErrorTypes-class.html#CATALOG_MISSING_ATTR
+lxml.etree.ErrorTypes.SCHEMAV_CONSTRUCT        lxml.etree.ErrorTypes-class.html#SCHEMAV_CONSTRUCT
+lxml.etree.ErrorTypes.ERR_ATTRIBUTE_REDEFINED  lxml.etree.ErrorTypes-class.html#ERR_ATTRIBUTE_REDEFINED
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_REF      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_REF
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXEXCLUSIVE_VALID   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MAXEXCLUSIVE_VALID
+lxml.etree.ErrorTypes.RNGP_ANYNAME_ATTR_ANCESTOR       lxml.etree.ErrorTypes-class.html#RNGP_ANYNAME_ATTR_ANCESTOR
+lxml.etree.ErrorTypes.DTD_DIFFERENT_PREFIX     lxml.etree.ErrorTypes-class.html#DTD_DIFFERENT_PREFIX
+lxml.etree.ErrorTypes.RNGP_EXTERNAL_REF_FAILURE        lxml.etree.ErrorTypes-class.html#RNGP_EXTERNAL_REF_FAILURE
+lxml.etree.ErrorTypes.CATALOG_PREFER_VALUE     lxml.etree.ErrorTypes-class.html#CATALOG_PREFER_VALUE
+lxml.etree.ErrorTypes.XPTR_RESOURCE_ERROR      lxml.etree.ErrorTypes-class.html#XPTR_RESOURCE_ERROR
+lxml.etree.ErrorTypes.DTD_ATTRIBUTE_REDEFINED  lxml.etree.ErrorTypes-class.html#DTD_ATTRIBUTE_REDEFINED
+lxml.etree.ErrorTypes.XPATH_MEMORY_ERROR       lxml.etree.ErrorTypes-class.html#XPATH_MEMORY_ERROR
+lxml.etree.ErrorTypes.IO_EBADMSG       lxml.etree.ErrorTypes-class.html#IO_EBADMSG
+lxml.etree.ErrorTypes.IO_ENCODER       lxml.etree.ErrorTypes-class.html#IO_ENCODER
+lxml.etree.ErrorTypes.RNGP_ELEM_TEXT_CONFLICT  lxml.etree.ErrorTypes-class.html#RNGP_ELEM_TEXT_CONFLICT
+lxml.etree.ErrorTypes.ERR_INVALID_CHARREF      lxml.etree.ErrorTypes-class.html#ERR_INVALID_CHARREF
+lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_1       lxml.etree.ErrorTypes-class.html#SCHEMAP_ST_PROPS_CORRECT_1
+lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_2       lxml.etree.ErrorTypes-class.html#SCHEMAP_ST_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_DTD     lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_IN_DTD
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_INVALID_VALUE   lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ATTR_INVALID_VALUE
+lxml.etree.ErrorTypes.RNGP_INVALID_URI lxml.etree.ErrorTypes-class.html#RNGP_INVALID_URI
+lxml.etree.ErrorTypes.RNGP_XMLNS_NAME  lxml.etree.ErrorTypes-class.html#RNGP_XMLNS_NAME
+lxml.etree.ErrorTypes.IO_ESPIPE        lxml.etree.ErrorTypes-class.html#IO_ESPIPE
+lxml.etree.ErrorTypes.CHECK_FOUND_ENTITY       lxml.etree.ErrorTypes-class.html#CHECK_FOUND_ENTITY
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD     lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD
+lxml.etree.ErrorTypes.RNGP_GRAMMAR_EMPTY       lxml.etree.ErrorTypes-class.html#RNGP_GRAMMAR_EMPTY
+lxml.etree.ErrorTypes.RNGP_REF_CREATE_FAILED   lxml.etree.ErrorTypes-class.html#RNGP_REF_CREATE_FAILED
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1  lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2  lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3  lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3
+lxml.etree.ErrorTypes.ERR_CDATA_NOT_FINISHED   lxml.etree.ErrorTypes-class.html#ERR_CDATA_NOT_FINISHED
+lxml.etree.ErrorTypes.ERR_LTSLASH_REQUIRED     lxml.etree.ErrorTypes-class.html#ERR_LTSLASH_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAV_NOTDETERMINIST   lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTDETERMINIST
+lxml.etree.ErrorTypes.IO_FLUSH lxml.etree.ErrorTypes-class.html#IO_FLUSH
+lxml.etree.ErrorTypes.ERR_CHARREF_AT_EOF       lxml.etree.ErrorTypes-class.html#ERR_CHARREF_AT_EOF
+lxml.etree.ErrorTypes.HTML_STRUCURE_ERROR      lxml.etree.ErrorTypes-class.html#HTML_STRUCURE_ERROR
+lxml.etree.ErrorTypes.IO_EBADF lxml.etree.ErrorTypes-class.html#IO_EBADF
+lxml.etree.ErrorTypes.SCHEMAP_ATTR_NONAME_NOREF        lxml.etree.ErrorTypes-class.html#SCHEMAP_ATTR_NONAME_NOREF
+lxml.etree.ErrorTypes.SCHEMAP_FAILED_BUILD_IMPORT      lxml.etree.ErrorTypes-class.html#SCHEMAP_FAILED_BUILD_IMPORT
+lxml.etree.ErrorTypes.CHECK_WRONG_PARENT       lxml.etree.ErrorTypes-class.html#CHECK_WRONG_PARENT
+lxml.etree.ErrorTypes.DTD_NOTATION_REDEFINED   lxml.etree.ErrorTypes-class.html#DTD_NOTATION_REDEFINED
+lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_STARTED  lxml.etree.ErrorTypes-class.html#ERR_ATTLIST_NOT_STARTED
+lxml.etree.ErrorTypes.XPATH_UNCLOSED_ERROR     lxml.etree.ErrorTypes-class.html#XPATH_UNCLOSED_ERROR
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_2        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_2
+lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_NSNAME    lxml.etree.ErrorTypes-class.html#RNGP_PAT_NSNAME_EXCEPT_NSNAME
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_1        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_6        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_6
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_7        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_7
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_1        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_2_2_2_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_1   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_2_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_2   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_2_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_2        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_2_2_2_2
+lxml.etree.ErrorTypes.RNGP_ELEMENT_CONTENT     lxml.etree.ErrorTypes-class.html#RNGP_ELEMENT_CONTENT
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTR_CHILD       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ATTR_CHILD
+lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID_KEYWORD      lxml.etree.ErrorTypes-class.html#ERR_CONDSEC_INVALID_KEYWORD
+lxml.etree.ErrorTypes.RNGP_START_EMPTY lxml.etree.ErrorTypes-class.html#RNGP_START_EMPTY
+lxml.etree.ErrorTypes.IO_EAGAIN        lxml.etree.ErrorTypes-class.html#IO_EAGAIN
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MININCLUSIVE_VALID   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MININCLUSIVE_VALID
+lxml.etree.ErrorTypes.SCHEMAV_ELEMENT_CONTENT  lxml.etree.ErrorTypes-class.html#SCHEMAV_ELEMENT_CONTENT
+lxml.etree.ErrorTypes.XINCLUDE_FRAGMENT_ID     lxml.etree.ErrorTypes-class.html#XINCLUDE_FRAGMENT_ID
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_5 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_5
+lxml.etree.ErrorTypes.I18N_NO_NAME     lxml.etree.ErrorTypes-class.html#I18N_NO_NAME
+lxml.etree.ErrorTypes.SCHEMAP_IMPORT_SCHEMA_NOT_URI    lxml.etree.ErrorTypes-class.html#SCHEMAP_IMPORT_SCHEMA_NOT_URI
+lxml.etree.ErrorTypes.NS_ERR_QNAME     lxml.etree.ErrorTypes-class.html#NS_ERR_QNAME
+lxml.etree.ErrorTypes.SCHEMAP_UNION_NOT_EXPRESSIBLE    lxml.etree.ErrorTypes-class.html#SCHEMAP_UNION_NOT_EXPRESSIBLE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_CT_1 lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_CT_1
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_REF        lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_REF
+lxml.etree.ErrorTypes.SCHEMAP_IMPORT_REDEFINE_NSNAME   lxml.etree.ErrorTypes-class.html#SCHEMAP_IMPORT_REDEFINE_NSNAME
+lxml.etree.ErrorTypes.SCHEMAV_ATTRINVALID      lxml.etree.ErrorTypes-class.html#SCHEMAV_ATTRINVALID
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ATTR        lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_ATTR
+lxml.etree.ErrorTypes.IO_ESRCH lxml.etree.ErrorTypes-class.html#IO_ESRCH
+lxml.etree.ErrorTypes.DTD_UNKNOWN_ELEM lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_ELEM
+lxml.etree.ErrorTypes.XINCLUDE_DEPRECATED_NS   lxml.etree.ErrorTypes-class.html#XINCLUDE_DEPRECATED_NS
+lxml.etree.ErrorTypes.ERR_CHARREF_IN_EPILOG    lxml.etree.ErrorTypes-class.html#ERR_CHARREF_IN_EPILOG
+lxml.etree.ErrorTypes.RNGP_UNKNOWN_TYPE_LIB    lxml.etree.ErrorTypes-class.html#RNGP_UNKNOWN_TYPE_LIB
+lxml.etree.ErrorTypes.ERR_NMTOKEN_REQUIRED     lxml.etree.ErrorTypes-class.html#ERR_NMTOKEN_REQUIRED
+lxml.etree.ErrorTypes.DTD_NOT_EMPTY    lxml.etree.ErrorTypes-class.html#DTD_NOT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_1     lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_1
+lxml.etree.ErrorTypes.ERR_PEREF_IN_PROLOG      lxml.etree.ErrorTypes-class.html#ERR_PEREF_IN_PROLOG
+lxml.etree.ErrorTypes.SCHEMAP_NOT_DETERMINISTIC        lxml.etree.ErrorTypes-class.html#SCHEMAP_NOT_DETERMINISTIC
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_6        lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_6
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_5        lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_5
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_4        lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_4
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_3        lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_3
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_2        lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.IO_EROFS lxml.etree.ErrorTypes-class.html#IO_EROFS
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ONEMORE     lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_ONEMORE
+lxml.etree.ErrorTypes.SCHEMAP_IMPORT_NAMESPACE_NOT_URI lxml.etree.ErrorTypes-class.html#SCHEMAP_IMPORT_NAMESPACE_NOT_URI
+lxml.etree.ErrorTypes.SCHEMAP_FAILED_PARSE     lxml.etree.ErrorTypes-class.html#SCHEMAP_FAILED_PARSE
+lxml.etree.ErrorTypes.XPTR_SYNTAX_ERROR        lxml.etree.ErrorTypes-class.html#XPTR_SYNTAX_ERROR
+lxml.etree.ErrorTypes.MODULE_CLOSE     lxml.etree.ErrorTypes-class.html#MODULE_CLOSE
+lxml.etree.ErrorTypes.CHECK_NO_PARENT  lxml.etree.ErrorTypes-class.html#CHECK_NO_PARENT
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_GROUP  lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_GROUP
+lxml.etree.ErrorTypes.IO_EEXIST        lxml.etree.ErrorTypes-class.html#IO_EEXIST
+lxml.etree.ErrorTypes.REGEXP_COMPILE_ERROR     lxml.etree.ErrorTypes-class.html#REGEXP_COMPILE_ERROR
+lxml.etree.ErrorTypes.CATALOG_RECURSION        lxml.etree.ErrorTypes-class.html#CATALOG_RECURSION
+lxml.etree.ErrorTypes.WAR_CATALOG_PI   lxml.etree.ErrorTypes-class.html#WAR_CATALOG_PI
+lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_FINISHED     lxml.etree.ErrorTypes-class.html#ERR_ELEMCONTENT_NOT_FINISHED
+lxml.etree.ErrorTypes.ERR_LT_REQUIRED  lxml.etree.ErrorTypes-class.html#ERR_LT_REQUIRED
+lxml.etree.ErrorTypes.RNGP_PARSE_ERROR lxml.etree.ErrorTypes-class.html#RNGP_PARSE_ERROR
+lxml.etree.ErrorTypes.RNGP_HREF_ERROR  lxml.etree.ErrorTypes-class.html#RNGP_HREF_ERROR
+lxml.etree.ErrorTypes.RNGP_START_MISSING       lxml.etree.ErrorTypes-class.html#RNGP_START_MISSING
+lxml.etree.ErrorTypes.ERR_EXT_ENTITY_STANDALONE        lxml.etree.ErrorTypes-class.html#ERR_EXT_ENTITY_STANDALONE
+lxml.etree.ErrorTypes.ERR_ENTITY_IS_PARAMETER  lxml.etree.ErrorTypes-class.html#ERR_ENTITY_IS_PARAMETER
+lxml.etree.ErrorTypes.RNGP_URI_FRAGMENT        lxml.etree.ErrorTypes-class.html#RNGP_URI_FRAGMENT
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_2    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_1_2
+lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_STARTED  lxml.etree.ErrorTypes-class.html#ERR_XMLDECL_NOT_STARTED
+lxml.etree.ErrorTypes.XINCLUDE_NO_HREF lxml.etree.ErrorTypes-class.html#XINCLUDE_NO_HREF
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_1    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_1_1
+lxml.etree.ErrorTypes.CHECK_FOUND_ATTRIBUTE    lxml.etree.ErrorTypes-class.html#CHECK_FOUND_ATTRIBUTE
+lxml.etree.ErrorTypes.SCHEMAP_SIMPLETYPE_NONAME        lxml.etree.ErrorTypes-class.html#SCHEMAP_SIMPLETYPE_NONAME
+lxml.etree.ErrorTypes.SCHEMAP_SRC_INCLUDE      lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_INCLUDE
+lxml.etree.ErrorTypes.RNGP_INTERLEAVE_ADD      lxml.etree.ErrorTypes-class.html#RNGP_INTERLEAVE_ADD
+lxml.etree.ErrorTypes.CHECK_NO_HREF    lxml.etree.ErrorTypes-class.html#CHECK_NO_HREF
+lxml.etree.ErrorTypes.RNGP_TYPE_VALUE  lxml.etree.ErrorTypes-class.html#RNGP_TYPE_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_EXTENSION_NO_BASE        lxml.etree.ErrorTypes-class.html#SCHEMAP_EXTENSION_NO_BASE
+lxml.etree.ErrorTypes.RNGP_PAT_ANYNAME_EXCEPT_ANYNAME  lxml.etree.ErrorTypes-class.html#RNGP_PAT_ANYNAME_EXCEPT_ANYNAME
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_TYPE   lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_TYPE
+lxml.etree.ErrorTypes.ERR_ENTITYREF_AT_EOF     lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_AT_EOF
+lxml.etree.ErrorTypes.C14N_CREATE_CTXT lxml.etree.ErrorTypes-class.html#C14N_CREATE_CTXT
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_3 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_3
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_2 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_2
+lxml.etree.ErrorTypes.RNGP_PAT_START_ONEMORE   lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_ONEMORE
+lxml.etree.ErrorTypes.ERR_ENTITY_BOUNDARY      lxml.etree.ErrorTypes-class.html#ERR_ENTITY_BOUNDARY
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_5 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_5
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_4 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_4
+lxml.etree.ErrorTypes.ERR_UNKNOWN_ENCODING     lxml.etree.ErrorTypes-class.html#ERR_UNKNOWN_ENCODING
+lxml.etree.ErrorTypes.HTML_UNKNOWN_TAG lxml.etree.ErrorTypes-class.html#HTML_UNKNOWN_TAG
+lxml.etree.ErrorTypes.CHECK_   lxml.etree.ErrorTypes-class.html#CHECK_
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_REF_AND_SUBTYPE  lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_REF_AND_SUBTYPE
+lxml.etree.ErrorTypes.DTD_INVALID_DEFAULT      lxml.etree.ErrorTypes-class.html#DTD_INVALID_DEFAULT
+lxml.etree.ErrorTypes.C14N_RELATIVE_NAMESPACE  lxml.etree.ErrorTypes-class.html#C14N_RELATIVE_NAMESPACE
+lxml.etree.ErrorTypes.SCHEMAP_FACET_NO_VALUE   lxml.etree.ErrorTypes-class.html#SCHEMAP_FACET_NO_VALUE
+lxml.etree.ErrorTypes.CHECK_NO_DOC     lxml.etree.ErrorTypes-class.html#CHECK_NO_DOC
+lxml.etree.ErrorTypes.IO_EFBIG lxml.etree.ErrorTypes-class.html#IO_EFBIG
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_WHITE_SPACE      lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_WHITE_SPACE
+lxml.etree.ErrorTypes.RNGP_NSNAME_ATTR_ANCESTOR        lxml.etree.ErrorTypes-class.html#RNGP_NSNAME_ATTR_ANCESTOR
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_NOT_ALLOWED     lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ELEM_NOT_ALLOWED
+lxml.etree.ErrorTypes.RNGP_START_CHOICE_AND_INTERLEAVE lxml.etree.ErrorTypes-class.html#RNGP_START_CHOICE_AND_INTERLEAVE
+lxml.etree.ErrorTypes.DTD_UNKNOWN_NOTATION     lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_NOTATION
+lxml.etree.ErrorTypes.ERR_NS_DECL_ERROR        lxml.etree.ErrorTypes-class.html#ERR_NS_DECL_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_GROUP_CHILD      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_GROUP_CHILD
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_LIST       lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_LIST
+lxml.etree.ErrorTypes.CHECK_WRONG_DOC  lxml.etree.ErrorTypes-class.html#CHECK_WRONG_DOC
+lxml.etree.ErrorTypes.ERR_LITERAL_NOT_FINISHED lxml.etree.ErrorTypes-class.html#ERR_LITERAL_NOT_FINISHED
+lxml.etree.ErrorTypes.CHECK_FOUND_CDATA        lxml.etree.ErrorTypes-class.html#CHECK_FOUND_CDATA
+lxml.etree.ErrorTypes.SAVE_UNKNOWN_ENCODING    lxml.etree.ErrorTypes-class.html#SAVE_UNKNOWN_ENCODING
+lxml.etree.ErrorTypes.RNGP_GRAMMAR_MISSING     lxml.etree.ErrorTypes-class.html#RNGP_GRAMMAR_MISSING
+lxml.etree.ErrorTypes.SCHEMAV_NOTSIMPLE        lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTSIMPLE
+lxml.etree.ErrorTypes.DTD_ID_REDEFINED lxml.etree.ErrorTypes-class.html#DTD_ID_REDEFINED
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTR   lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_ATTR
+lxml.etree.ErrorTypes.RNGP_ERROR_TYPE_LIB      lxml.etree.ErrorTypes-class.html#RNGP_ERROR_TYPE_LIB
+lxml.etree.ErrorTypes.CHECK_NAME_NOT_NULL      lxml.etree.ErrorTypes-class.html#CHECK_NAME_NOT_NULL
+lxml.etree.ErrorTypes.IO_UNKNOWN       lxml.etree.ErrorTypes-class.html#IO_UNKNOWN
+lxml.etree.ErrorTypes.HTTP_URL_SYNTAX  lxml.etree.ErrorTypes-class.html#HTTP_URL_SYNTAX
+lxml.etree.ErrorTypes.RNGP_NAME_MISSING        lxml.etree.ErrorTypes-class.html#RNGP_NAME_MISSING
+lxml.etree.ErrorTypes.CHECK_WRONG_NEXT lxml.etree.ErrorTypes-class.html#CHECK_WRONG_NEXT
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD
+lxml.etree.ErrorTypes.SCHEMAP_NOATTR_NOREF     lxml.etree.ErrorTypes-class.html#SCHEMAP_NOATTR_NOREF
+lxml.etree.ErrorTypes.SAVE_NOT_UTF8    lxml.etree.ErrorTypes-class.html#SAVE_NOT_UTF8
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_1 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_1
+lxml.etree.ErrorTypes.CHECK_NOT_UTF8   lxml.etree.ErrorTypes-class.html#CHECK_NOT_UTF8
+lxml.etree.ErrorTypes.DTD_NO_DTD       lxml.etree.ErrorTypes-class.html#DTD_NO_DTD
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_INTERLEAVE lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_INTERLEAVE
+lxml.etree.ErrorTypes.ERR_ENTITY_PE_INTERNAL   lxml.etree.ErrorTypes-class.html#ERR_ENTITY_PE_INTERNAL
+lxml.etree.ErrorTypes.RNGP_INTERLEAVE_NO_CONTENT       lxml.etree.ErrorTypes-class.html#RNGP_INTERLEAVE_NO_CONTENT
+lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID      lxml.etree.ErrorTypes-class.html#ERR_CONDSEC_INVALID
+lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_EMPTY  lxml.etree.ErrorTypes-class.html#RNGP_ELEM_CONTENT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAP_NOROOT   lxml.etree.ErrorTypes-class.html#SCHEMAP_NOROOT
+lxml.etree.ErrorTypes.CHECK_UNKNOWN_NODE       lxml.etree.ErrorTypes-class.html#CHECK_UNKNOWN_NODE
+lxml.etree.ErrorTypes.XINCLUDE_UNKNOWN_ENCODING        lxml.etree.ErrorTypes-class.html#XINCLUDE_UNKNOWN_ENCODING
+lxml.etree.ErrorTypes.XPATH_INVALID_TYPE       lxml.etree.ErrorTypes-class.html#XPATH_INVALID_TYPE
+lxml.etree.ErrorTypes.RNGP_PARENTREF_CREATE_FAILED     lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_CREATE_FAILED
+lxml.etree.ErrorTypes.CHECK_NO_PREV    lxml.etree.ErrorTypes-class.html#CHECK_NO_PREV
+lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_SIZE  lxml.etree.ErrorTypes-class.html#XPATH_INVALID_CTXT_SIZE
+lxml.etree.ErrorTypes.RNGP_DATA_CONTENT        lxml.etree.ErrorTypes-class.html#RNGP_DATA_CONTENT
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_MISSING lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ELEM_MISSING
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_BASE_TYPE        lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_BASE_TYPE
+lxml.etree.ErrorTypes.XINCLUDE_NO_FALLBACK     lxml.etree.ErrorTypes-class.html#XINCLUDE_NO_FALLBACK
+lxml.etree.ErrorTypes.IO_WRITE lxml.etree.ErrorTypes-class.html#IO_WRITE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_RESOLVE      lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_RESOLVE
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_1     lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_1
+lxml.etree.ErrorTypes.SCHEMAV_DOCUMENT_ELEMENT_MISSING lxml.etree.ErrorTypes-class.html#SCHEMAV_DOCUMENT_ELEMENT_MISSING
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_REF lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_REF
+lxml.etree.ErrorTypes.CHECK_NO_NAME    lxml.etree.ErrorTypes-class.html#CHECK_NO_NAME
+lxml.etree.ErrorTypes.IO_ENOSPC        lxml.etree.ErrorTypes-class.html#IO_ENOSPC
+lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT lxml.etree.ErrorTypes-class.html#SCHEMAP_AU_PROPS_CORRECT
+lxml.etree.ErrorTypes.TREE_NOT_UTF8    lxml.etree.ErrorTypes-class.html#TREE_NOT_UTF8
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_ELEM       lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_ELEM
+lxml.etree.ErrorTypes.XPATH_EXPRESSION_OK      lxml.etree.ErrorTypes-class.html#XPATH_EXPRESSION_OK
+lxml.etree.ErrorTypes.XPTR_SUB_RESOURCE_ERROR  lxml.etree.ErrorTypes-class.html#XPTR_SUB_RESOURCE_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_ELEM_DEFAULT_FIXED       lxml.etree.ErrorTypes-class.html#SCHEMAP_ELEM_DEFAULT_FIXED
+lxml.etree.ErrorTypes.WAR_ENTITY_REDEFINED     lxml.etree.ErrorTypes-class.html#WAR_ENTITY_REDEFINED
+lxml.etree.ErrorTypes.DTD_XMLID_VALUE  lxml.etree.ErrorTypes-class.html#DTD_XMLID_VALUE
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_2     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_2_2
+lxml.etree.ErrorTypes.RNGP_GRAMMAR_CONTENT     lxml.etree.ErrorTypes-class.html#RNGP_GRAMMAR_CONTENT
+lxml.etree.ErrorTypes.ERR_CHARREF_IN_DTD       lxml.etree.ErrorTypes-class.html#ERR_CHARREF_IN_DTD
+lxml.etree.ErrorTypes.I18N_NO_HANDLER  lxml.etree.ErrorTypes-class.html#I18N_NO_HANDLER
+lxml.etree.ErrorTypes.SCHEMAV_CVC_FACET_VALID  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_FACET_VALID
+lxml.etree.ErrorTypes.DTD_MIXED_CORRUPT        lxml.etree.ErrorTypes-class.html#DTD_MIXED_CORRUPT
+lxml.etree.ErrorTypes.ERR_INVALID_DEC_CHARREF  lxml.etree.ErrorTypes-class.html#ERR_INVALID_DEC_CHARREF
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TOTALDIGITS_VALID    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TOTALDIGITS_VALID
+lxml.etree.ErrorTypes.CHECK_NOT_NCNAME lxml.etree.ErrorTypes-class.html#CHECK_NOT_NCNAME
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ENUM     lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ENUM
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_MEMBER_TYPE      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_MEMBER_TYPE
+lxml.etree.ErrorTypes.ERR_SPACE_REQUIRED       lxml.etree.ErrorTypes-class.html#ERR_SPACE_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_COMPLEXTYPE_NONAME_NOREF lxml.etree.ErrorTypes-class.html#SCHEMAP_COMPLEXTYPE_NONAME_NOREF
+lxml.etree.ErrorTypes.RNGP_PAT_START_EMPTY     lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_EMPTY
+lxml.etree.ErrorTypes.ERR_DOCUMENT_EMPTY       lxml.etree.ErrorTypes-class.html#ERR_DOCUMENT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAV_EXTRACONTENT     lxml.etree.ErrorTypes-class.html#SCHEMAV_EXTRACONTENT
+lxml.etree.ErrorTypes.SAVE_CHAR_INVALID        lxml.etree.ErrorTypes-class.html#SAVE_CHAR_INVALID
+lxml.etree.ErrorTypes.RNGP_XML_NS      lxml.etree.ErrorTypes-class.html#RNGP_XML_NS
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD
+lxml.etree.ErrorTypes.DTD_ATTRIBUTE_DEFAULT    lxml.etree.ErrorTypes-class.html#DTD_ATTRIBUTE_DEFAULT
+lxml.etree.ErrorTypes.IO_ENOTSUP       lxml.etree.ErrorTypes-class.html#IO_ENOTSUP
+lxml.etree.ErrorTypes.DTD_UNKNOWN_ATTRIBUTE    lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_ATTRIBUTE
+lxml.etree.ErrorTypes.XINCLUDE_INCLUDE_IN_INCLUDE      lxml.etree.ErrorTypes-class.html#XINCLUDE_INCLUDE_IN_INCLUDE
+lxml.etree.ErrorTypes.XPATH_UNFINISHED_LITERAL_ERROR   lxml.etree.ErrorTypes-class.html#XPATH_UNFINISHED_LITERAL_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_ATTRGRP_NONAME_NOREF     lxml.etree.ErrorTypes-class.html#SCHEMAP_ATTRGRP_NONAME_NOREF
+lxml.etree.ErrorTypes.SCHEMAV_WRONGELEM        lxml.etree.ErrorTypes-class.html#SCHEMAV_WRONGELEM
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_MINOCCURS        lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_MINOCCURS
+lxml.etree.ErrorTypes.RNGP_PARENTREF_NAME_INVALID      lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_NAME_INVALID
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_1     lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_1_1
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_2     lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_1_2
+lxml.etree.ErrorTypes.IO_ENODEV        lxml.etree.ErrorTypes-class.html#IO_ENODEV
+lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_2  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_VALID_DEFAULT_2_2_2
+lxml.etree.ErrorTypes.IO_EBUSY lxml.etree.ErrorTypes-class.html#IO_EBUSY
+lxml.etree.ErrorTypes.C14N_REQUIRES_UTF8       lxml.etree.ErrorTypes-class.html#C14N_REQUIRES_UTF8
+lxml.etree.ErrorTypes.SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE  lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE
+lxml.etree.ErrorTypes.ERR_URI_REQUIRED lxml.etree.ErrorTypes-class.html#ERR_URI_REQUIRED
+lxml.etree.ErrorTypes.IO_EADDRINUSE    lxml.etree.ErrorTypes-class.html#IO_EADDRINUSE
+lxml.etree.ErrorTypes.SCHEMAV_INTERNAL lxml.etree.ErrorTypes-class.html#SCHEMAV_INTERNAL
+lxml.etree.ErrorTypes.RNGP_VALUE_NO_CONTENT    lxml.etree.ErrorTypes-class.html#RNGP_VALUE_NO_CONTENT
+lxml.etree.ErrorTypes.NS_ERR_UNDEFINED_NAMESPACE       lxml.etree.ErrorTypes-class.html#NS_ERR_UNDEFINED_NAMESPACE
+lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_2        lxml.etree.ErrorTypes-class.html#SCHEMAP_A_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.CHECK_FOUND_ELEMENT      lxml.etree.ErrorTypes-class.html#CHECK_FOUND_ELEMENT
+lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_ERROR  lxml.etree.ErrorTypes-class.html#RNGP_ELEM_CONTENT_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_RESTRICTION_NONAME_NOREF lxml.etree.ErrorTypes-class.html#SCHEMAP_RESTRICTION_NONAME_NOREF
+lxml.etree.ErrorTypes.HTTP_USE_IP      lxml.etree.ErrorTypes-class.html#HTTP_USE_IP
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ELEMENT_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_3    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ELEMENT_3
+lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_FINISHED       lxml.etree.ErrorTypes-class.html#ERR_ATTRIBUTE_NOT_FINISHED
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_1   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TYPE_3_1_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_2   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TYPE_3_1_2
+lxml.etree.ErrorTypes.SCHEMATRONV_REPORT       lxml.etree.ErrorTypes-class.html#SCHEMATRONV_REPORT
+lxml.etree.ErrorTypes.SCHEMAV_MISC     lxml.etree.ErrorTypes-class.html#SCHEMAV_MISC
+lxml.etree.ErrorTypes.IO_EPIPE lxml.etree.ErrorTypes-class.html#IO_EPIPE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_GROUP_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_3    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_GROUP_3
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_2    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_GROUP_2
+lxml.etree.ErrorTypes.IO_EAFNOSUPPORT  lxml.etree.ErrorTypes-class.html#IO_EAFNOSUPPORT
+lxml.etree.ErrorTypes.SCHEMAP_WARN_SKIP_SCHEMA lxml.etree.ErrorTypes-class.html#SCHEMAP_WARN_SKIP_SCHEMA
+lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_3        lxml.etree.ErrorTypes-class.html#SCHEMAP_A_PROPS_CORRECT_3
+lxml.etree.ErrorTypes.CHECK_FOUND_DOCTYPE      lxml.etree.ErrorTypes-class.html#CHECK_FOUND_DOCTYPE
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD
+lxml.etree.ErrorTypes.TREE_UNTERMINATED_ENTITY lxml.etree.ErrorTypes-class.html#TREE_UNTERMINATED_ENTITY
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_1       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_1
+lxml.etree.ErrorTypes.WAR_UNDECLARED_ENTITY    lxml.etree.ErrorTypes-class.html#WAR_UNDECLARED_ENTITY
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD        lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_4       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_4
+lxml.etree.ErrorTypes.RNGP_UNKNOWN_CONSTRUCT   lxml.etree.ErrorTypes-class.html#RNGP_UNKNOWN_CONSTRUCT
+lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_REDECL_PROH    lxml.etree.ErrorTypes-class.html#SCHEMAP_WARN_ATTR_REDECL_PROH
+lxml.etree.ErrorTypes.ERR_ENTITY_IS_EXTERNAL   lxml.etree.ErrorTypes-class.html#ERR_ENTITY_IS_EXTERNAL
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1_2 lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_1_2
+lxml.etree.ErrorTypes.RNGP_INVALID_DEFINE_NAME lxml.etree.ErrorTypes-class.html#RNGP_INVALID_DEFINE_NAME
+lxml.etree.ErrorTypes.SCHEMAP_PREFIX_UNDEFINED lxml.etree.ErrorTypes-class.html#SCHEMAP_PREFIX_UNDEFINED
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_EMPTY       lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAV_INVALIDELEM      lxml.etree.ErrorTypes-class.html#SCHEMAV_INVALIDELEM
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_IMPORT_CHILD     lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_IMPORT_CHILD
+lxml.etree.ErrorTypes.RNGP_EXTERNALREF_EMTPY   lxml.etree.ErrorTypes-class.html#RNGP_EXTERNALREF_EMTPY
+lxml.etree.ErrorTypes.SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE     lxml.etree.ErrorTypes-class.html#SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE
+lxml.etree.ErrorTypes.IO_EALREADY      lxml.etree.ErrorTypes-class.html#IO_EALREADY
+lxml.etree.ErrorTypes.WAR_NS_URI       lxml.etree.ErrorTypes-class.html#WAR_NS_URI
+lxml.etree.ErrorTypes.SCHEMAP_REF_AND_CONTENT  lxml.etree.ErrorTypes-class.html#SCHEMAP_REF_AND_CONTENT
+lxml.etree.ErrorTypes.ERR_UNDECLARED_ENTITY    lxml.etree.ErrorTypes-class.html#ERR_UNDECLARED_ENTITY
+lxml.etree.ErrorTypes.IO_NETWORK_ATTEMPT       lxml.etree.ErrorTypes-class.html#IO_NETWORK_ATTEMPT
+lxml.etree.ErrorTypes.ERR_INVALID_CHAR lxml.etree.ErrorTypes-class.html#ERR_INVALID_CHAR
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_1    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_2_1
+lxml.etree.ErrorTypes.SCHEMAP_GROUP_NONAME_NOREF       lxml.etree.ErrorTypes-class.html#SCHEMAP_GROUP_NONAME_NOREF
+lxml.etree.ErrorTypes.ERR_LITERAL_NOT_STARTED  lxml.etree.ErrorTypes-class.html#ERR_LITERAL_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_5       lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_5
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ELEMENT        lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_ELEMENT
+lxml.etree.ErrorTypes.SCHEMAP_CVC_SIMPLE_TYPE  lxml.etree.ErrorTypes-class.html#SCHEMAP_CVC_SIMPLE_TYPE
+lxml.etree.ErrorTypes.ERR_UNKNOWN_VERSION      lxml.etree.ErrorTypes-class.html#ERR_UNKNOWN_VERSION
+lxml.etree.ErrorTypes.SCHEMAP_NOT_SCHEMA       lxml.etree.ErrorTypes-class.html#SCHEMAP_NOT_SCHEMA
+lxml.etree.ErrorTypes.RNGP_UNKNOWN_COMBINE     lxml.etree.ErrorTypes-class.html#RNGP_UNKNOWN_COMBINE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_1  lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ELEMENT_2_1
+lxml.etree.ErrorTypes.CHECK_NOT_DTD    lxml.etree.ErrorTypes-class.html#CHECK_NOT_DTD
+lxml.etree.ErrorTypes.CHECK_NO_NEXT    lxml.etree.ErrorTypes-class.html#CHECK_NO_NEXT
+lxml.etree.ErrorTypes.ERR_NOT_WELL_BALANCED    lxml.etree.ErrorTypes-class.html#ERR_NOT_WELL_BALANCED
+lxml.etree.ErrorTypes.RNGP_REF_CYCLE   lxml.etree.ErrorTypes-class.html#RNGP_REF_CYCLE
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_1       lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_1
+lxml.etree.ErrorTypes.SCHEMAV_FACET    lxml.etree.ErrorTypes-class.html#SCHEMAV_FACET
+lxml.etree.ErrorTypes.ERR_ENCODING_NAME        lxml.etree.ErrorTypes-class.html#ERR_ENCODING_NAME
+lxml.etree.ErrorTypes.SCHEMAV_NOROOT   lxml.etree.ErrorTypes-class.html#SCHEMAV_NOROOT
+lxml.etree.ErrorTypes.DTD_XMLID_TYPE   lxml.etree.ErrorTypes-class.html#DTD_XMLID_TYPE
+lxml.etree.ErrorTypes.C14N_CREATE_STACK        lxml.etree.ErrorTypes-class.html#C14N_CREATE_STACK
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_2       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TYPE_2
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SEQUENCE_CHILD   lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_SEQUENCE_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_1       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TYPE_1
+lxml.etree.ErrorTypes.IO_ENXIO lxml.etree.ErrorTypes-class.html#IO_ENXIO
+lxml.etree.ErrorTypes.SCHEMAV_CVC_PATTERN_VALID        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_PATTERN_VALID
+lxml.etree.ErrorTypes.ERR_ATTRIBUTE_WITHOUT_VALUE      lxml.etree.ErrorTypes-class.html#ERR_ATTRIBUTE_WITHOUT_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NOT_URI   lxml.etree.ErrorTypes-class.html#SCHEMAP_INCLUDE_SCHEMA_NOT_URI
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTRGROUP      lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_ATTRGROUP
+lxml.etree.ErrorTypes.SCHEMAV_INVALIDATTR      lxml.etree.ErrorTypes-class.html#SCHEMAV_INVALIDATTR
+lxml.etree.ErrorTypes.ERR_OK   lxml.etree.ErrorTypes-class.html#ERR_OK
+lxml.etree.ErrorTypes.ERR_EQUAL_REQUIRED       lxml.etree.ErrorTypes-class.html#ERR_EQUAL_REQUIRED
+lxml.etree.ErrorTypes.NS_ERR_XML_NAMESPACE     lxml.etree.ErrorTypes-class.html#NS_ERR_XML_NAMESPACE
+lxml.etree.ErrorTypes.ERR_EXTRA_CONTENT        lxml.etree.ErrorTypes-class.html#ERR_EXTRA_CONTENT
+lxml.etree.ErrorTypes.DTD_MULTIPLE_ID  lxml.etree.ErrorTypes-class.html#DTD_MULTIPLE_ID
+lxml.etree.ErrorTypes.IO_ECONNREFUSED  lxml.etree.ErrorTypes-class.html#IO_ECONNREFUSED
+lxml.etree.ErrorTypes.XPTR_UNKNOWN_SCHEME      lxml.etree.ErrorTypes-class.html#XPTR_UNKNOWN_SCHEME
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_2     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_5_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_1     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_5_1
+lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_INTERLEAVE_ATTR lxml.etree.ErrorTypes-class.html#RNGP_PAT_ONEMORE_INTERLEAVE_ATTR
+lxml.etree.ErrorTypes.XINCLUDE_ENTITY_DEF_MISMATCH     lxml.etree.ErrorTypes-class.html#XINCLUDE_ENTITY_DEF_MISMATCH
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1   lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_1
+lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_1       lxml.etree.ErrorTypes-class.html#SCHEMAP_MG_PROPS_CORRECT_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_2        lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_3_2
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_1        lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_3_1
+lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_2       lxml.etree.ErrorTypes-class.html#SCHEMAP_MG_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.RNGP_PAT_START_VALUE     lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_VALUE
+lxml.etree.ErrorTypes.DTD_ROOT_NAME    lxml.etree.ErrorTypes-class.html#DTD_ROOT_NAME
+lxml.etree.ErrorTypes.IO_EISDIR        lxml.etree.ErrorTypes-class.html#IO_EISDIR
+lxml.etree.ErrorTypes.IO_EINPROGRESS   lxml.etree.ErrorTypes-class.html#IO_EINPROGRESS
+lxml.etree.ErrorTypes.IO_EDEADLK       lxml.etree.ErrorTypes-class.html#IO_EDEADLK
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_2    lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_DERIVED_OK_2_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_1  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_2_2_1
+lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_2      lxml.etree.ErrorTypes-class.html#SCHEMAP_P_PROPS_CORRECT_2_2
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET    lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_FACET
+lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_1      lxml.etree.ErrorTypes-class.html#SCHEMAP_P_PROPS_CORRECT_2_1
+lxml.etree.ErrorTypes.XINCLUDE_BUILD_FAILED    lxml.etree.ErrorTypes-class.html#XINCLUDE_BUILD_FAILED
+lxml.etree.ErrorTypes.ERR_PEREF_AT_EOF lxml.etree.ErrorTypes-class.html#ERR_PEREF_AT_EOF
+lxml.etree.ErrorTypes.IO_ENOLCK        lxml.etree.ErrorTypes-class.html#IO_ENOLCK
+lxml.etree.ErrorTypes.DTD_MISSING_ATTRIBUTE    lxml.etree.ErrorTypes-class.html#DTD_MISSING_ATTRIBUTE
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_1     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_3_1
+lxml.etree.ErrorTypes.CHECK_FOUND_ENTITYREF    lxml.etree.ErrorTypes-class.html#CHECK_FOUND_ENTITYREF
+lxml.etree.ErrorTypes.RNGP_PARAM_FORBIDDEN     lxml.etree.ErrorTypes-class.html#RNGP_PARAM_FORBIDDEN
+lxml.etree.ErrorTypes.DTD_ELEM_NAMESPACE       lxml.etree.ErrorTypes-class.html#DTD_ELEM_NAMESPACE
+lxml.etree.ErrorTypes.SCHEMAP_FAILED_LOAD      lxml.etree.ErrorTypes-class.html#SCHEMAP_FAILED_LOAD
+lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_4        lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_SIMPLE_TYPE_4
+lxml.etree.ErrorTypes.DTD_ID_FIXED     lxml.etree.ErrorTypes-class.html#DTD_ID_FIXED
+lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_1        lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_SIMPLE_TYPE_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_2        lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_SIMPLE_TYPE_2
+lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_3        lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_SIMPLE_TYPE_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_1   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_3_2_1
+lxml.etree.ErrorTypes.XINCLUDE_PARSE_VALUE     lxml.etree.ErrorTypes-class.html#XINCLUDE_PARSE_VALUE
+lxml.etree.ErrorTypes.RNGP_INCLUDE_FAILURE     lxml.etree.ErrorTypes-class.html#RNGP_INCLUDE_FAILURE
+lxml.etree.ErrorTypes.CHECK_NO_DICT    lxml.etree.ErrorTypes-class.html#CHECK_NO_DICT
+lxml.etree.ErrorTypes.CHECK_NOT_ELEM_DECL      lxml.etree.ErrorTypes-class.html#CHECK_NOT_ELEM_DECL
+lxml.etree.ErrorTypes.XPTR_CHILDSEQ_START      lxml.etree.ErrorTypes-class.html#XPTR_CHILDSEQ_START
+lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_EMPTY     lxml.etree.ErrorTypes-class.html#RNGP_ATTRIBUTE_EMPTY
+lxml.etree.ErrorTypes.ERR_ENTITYREF_NO_NAME    lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_NO_NAME
+lxml.etree.ErrorTypes.RNGP_UNKNOWN_ATTRIBUTE   lxml.etree.ErrorTypes-class.html#RNGP_UNKNOWN_ATTRIBUTE
+lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_1      lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_VALID_DEFAULT_1
+lxml.etree.ErrorTypes.DTD_INVALID_CHILD        lxml.etree.ErrorTypes-class.html#DTD_INVALID_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_2      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_4_2
+lxml.etree.ErrorTypes.RNGP_EXCEPT_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_EXCEPT_EMPTY
+lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ATTR       lxml.etree.ErrorTypes-class.html#RNGP_PAT_ATTR_ATTR
+lxml.etree.ErrorTypes.ERR_GT_REQUIRED  lxml.etree.ErrorTypes-class.html#ERR_GT_REQUIRED
+lxml.etree.ErrorTypes.RNGP_ATTR_CONFLICT       lxml.etree.ErrorTypes-class.html#RNGP_ATTR_CONFLICT
+lxml.etree.ErrorTypes.SCHEMAV_CVC_FRACTIONDIGITS_VALID lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_FRACTIONDIGITS_VALID
+lxml.etree.ErrorTypes.IO_ETIMEDOUT     lxml.etree.ErrorTypes-class.html#IO_ETIMEDOUT
+lxml.etree.ErrorTypes.SCHEMAP_C_PROPS_CORRECT  lxml.etree.ErrorTypes-class.html#SCHEMAP_C_PROPS_CORRECT
+lxml.etree.ErrorTypes.I18N_NO_OUTPUT   lxml.etree.ErrorTypes-class.html#I18N_NO_OUTPUT
+lxml.etree.ErrorTypes.CHECK_NS_ANCESTOR        lxml.etree.ErrorTypes-class.html#CHECK_NS_ANCESTOR
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET_VALUE      lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_FACET_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ALL_CHILD        lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ALL_CHILD
+lxml.etree.ErrorTypes.CHECK_FOUND_FRAGMENT     lxml.etree.ErrorTypes-class.html#CHECK_FOUND_FRAGMENT
+lxml.etree.ErrorTypes.ERR_DOCUMENT_START       lxml.etree.ErrorTypes-class.html#ERR_DOCUMENT_START
+lxml.etree.ErrorTypes.SCHEMAV_CVC_LENGTH_VALID lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_LENGTH_VALID
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MINLENGTH_VALID      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MINLENGTH_VALID
+lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_VALID_DEFAULT_2_1
+lxml.etree.ErrorTypes.XINCLUDE_FALLBACK_NOT_IN_INCLUDE lxml.etree.ErrorTypes-class.html#XINCLUDE_FALLBACK_NOT_IN_INCLUDE
+lxml.etree.ErrorTypes.RNGP_EXTERNALREF_RECURSE lxml.etree.ErrorTypes-class.html#RNGP_EXTERNALREF_RECURSE
+lxml.etree.ErrorTypes.ERR_TAG_NAME_MISMATCH    lxml.etree.ErrorTypes-class.html#ERR_TAG_NAME_MISMATCH
+lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_1 lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_DATATYPE_VALID_1_2_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_2 lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_DATATYPE_VALID_1_2_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_3 lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_DATATYPE_VALID_1_2_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_2   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_3_2_2
+lxml.etree.ErrorTypes.CHECK_FOUND_COMMENT      lxml.etree.ErrorTypes-class.html#CHECK_FOUND_COMMENT
+lxml.etree.ErrorTypes.SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE       lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE
+lxml.etree.ErrorTypes.SCHEMAP_NOTYPE_NOREF     lxml.etree.ErrorTypes-class.html#SCHEMAP_NOTYPE_NOREF
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SCHEMAS_CHILD    lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_SCHEMAS_CHILD
+lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CONTENT   lxml.etree.ErrorTypes-class.html#RNGP_ATTRIBUTE_CONTENT
+lxml.etree.ErrorTypes.DTD_UNKNOWN_ENTITY       lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_ENTITY
+lxml.etree.ErrorTypes.XPATH_UNDEF_PREFIX_ERROR lxml.etree.ErrorTypes-class.html#XPATH_UNDEF_PREFIX_ERROR
+lxml.etree.ErrorTypes.NS_ERR_ATTRIBUTE_REDEFINED       lxml.etree.ErrorTypes-class.html#NS_ERR_ATTRIBUTE_REDEFINED
+lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_STARTED  lxml.etree.ErrorTypes-class.html#ERR_CONDSEC_NOT_STARTED
+lxml.etree.ErrorTypes.CHECK_FOUND_PI   lxml.etree.ErrorTypes-class.html#CHECK_FOUND_PI
+lxml.etree.ErrorTypes.DTD_DUP_TOKEN    lxml.etree.ErrorTypes-class.html#DTD_DUP_TOKEN
+lxml.etree.ErrorTypes.DTD_ATTRIBUTE_VALUE      lxml.etree.ErrorTypes-class.html#DTD_ATTRIBUTE_VALUE
+lxml.etree.ErrorTypes.XPATH_INVALID_ARITY      lxml.etree.ErrorTypes-class.html#XPATH_INVALID_ARITY
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_EXTENSION_CHILD  lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_EXTENSION_CHILD
+lxml.etree.ErrorTypes.SCHEMAP_REF_AND_SUBTYPE  lxml.etree.ErrorTypes-class.html#SCHEMAP_REF_AND_SUBTYPE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT       lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT
+lxml.etree.ErrorTypes.SCHEMAP_NO_XSI   lxml.etree.ErrorTypes-class.html#SCHEMAP_NO_XSI
+lxml.etree.ErrorTypes.SCHEMAV_HAVEDEFAULT      lxml.etree.ErrorTypes-class.html#SCHEMAV_HAVEDEFAULT
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_LIST        lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_LIST
+lxml.etree.ErrorTypes.SCHEMAP_WARN_UNLOCATED_SCHEMA    lxml.etree.ErrorTypes-class.html#SCHEMAP_WARN_UNLOCATED_SCHEMA
+lxml.etree.ErrorTypes.ERR_NOT_STANDALONE       lxml.etree.ErrorTypes-class.html#ERR_NOT_STANDALONE
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_COMBINATION lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ATTR_COMBINATION
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_3      lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_3
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_1      lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_1
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_UNION_CHILD      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_UNION_CHILD
+lxml.etree.ErrorTypes.XINCLUDE_FALLBACKS_IN_INCLUDE    lxml.etree.ErrorTypes-class.html#XINCLUDE_FALLBACKS_IN_INCLUDE
+lxml.etree.ErrorTypes.IO_BUFFER_FULL   lxml.etree.ErrorTypes-class.html#IO_BUFFER_FULL
+lxml.etree.ErrorTypes.TREE_INVALID_DEC lxml.etree.ErrorTypes-class.html#TREE_INVALID_DEC
+lxml.etree.ErrorTypes.DTD_STANDALONE_DEFAULTED lxml.etree.ErrorTypes-class.html#DTD_STANDALONE_DEFAULTED
+lxml.etree.FallbackElementClassLookup  lxml.etree.FallbackElementClassLookup-class.html
+lxml.etree.FallbackElementClassLookup.__new__  lxml.etree.FallbackElementClassLookup-class.html#__new__
+lxml.etree.FallbackElementClassLookup.fallback lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback     lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.FallbackElementClassLookup.__init__ lxml.etree.FallbackElementClassLookup-class.html#__init__
+lxml.etree.HTMLParser  lxml.etree.HTMLParser-class.html
+lxml.etree._FeedParser.feed    lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup        lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close   lxml.etree._FeedParser-class.html#close
+lxml.etree.HTMLParser.__init__ lxml.etree.HTMLParser-class.html#__init__
+lxml.etree.HTMLParser.__new__  lxml.etree.HTMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup   lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement     lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy    lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers       lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target  lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log       lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log  lxml.etree._FeedParser-class.html#feed_error_log
+lxml.etree.LxmlError   lxml.etree.LxmlError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.LxmlRegistryError   lxml.etree.LxmlRegistryError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.LxmlSyntaxError     lxml.etree.LxmlSyntaxError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.NamespaceRegistryError      lxml.etree.NamespaceRegistryError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.PIBase      lxml.etree.PIBase-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text   lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._ProcessingInstruction.tag  lxml.etree._ProcessingInstruction-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree.PIBase.__new__      lxml.etree.PIBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.PIBase.__init__     lxml.etree.PIBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._ProcessingInstruction.target       lxml.etree._ProcessingInstruction-class.html#target
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._ProcessingInstruction.__repr__     lxml.etree._ProcessingInstruction-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree.ParseError  lxml.etree.ParseError-class.html
+lxml.etree.ParseError.__init__ lxml.etree.ParseError-class.html#__init__
+lxml.etree.ParserBasedElementClassLookup       lxml.etree.ParserBasedElementClassLookup-class.html
+lxml.etree.ParserBasedElementClassLookup.__new__       lxml.etree.ParserBasedElementClassLookup-class.html#__new__
+lxml.etree.FallbackElementClassLookup.fallback lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback     lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.FallbackElementClassLookup.__init__ lxml.etree.FallbackElementClassLookup-class.html#__init__
+lxml.etree.ParserError lxml.etree.ParserError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.PyErrorLog  lxml.etree.PyErrorLog-class.html
+lxml.etree.PyErrorLog.level_map        lxml.etree.PyErrorLog-class.html#level_map
+lxml.etree.PyErrorLog.__new__  lxml.etree.PyErrorLog-class.html#__new__
+lxml.etree.PyErrorLog.receive  lxml.etree.PyErrorLog-class.html#receive
+lxml.etree._BaseErrorLog.last_error    lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._BaseErrorLog.__repr__      lxml.etree._BaseErrorLog-class.html#__repr__
+lxml.etree.PyErrorLog.copy     lxml.etree.PyErrorLog-class.html#copy
+lxml.etree.PyErrorLog.__init__ lxml.etree.PyErrorLog-class.html#__init__
+lxml.etree.PyErrorLog.log      lxml.etree.PyErrorLog-class.html#log
+lxml.etree.PythonElementClassLookup    lxml.etree.PythonElementClassLookup-class.html
+lxml.etree.PythonElementClassLookup.__new__    lxml.etree.PythonElementClassLookup-class.html#__new__
+lxml.etree.PythonElementClassLookup.lookup     lxml.etree.PythonElementClassLookup-class.html#lookup
+lxml.etree.FallbackElementClassLookup.fallback lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback     lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.FallbackElementClassLookup.__init__ lxml.etree.FallbackElementClassLookup-class.html#__init__
+lxml.etree.QName       lxml.etree.QName-class.html
+lxml.etree.QName.text  lxml.etree.QName-class.html#text
+lxml.etree.QName.__str__       lxml.etree.QName-class.html#__str__
+lxml.etree.QName.localname     lxml.etree.QName-class.html#localname
+lxml.etree.QName.__lt__        lxml.etree.QName-class.html#__lt__
+lxml.etree.QName.__init__      lxml.etree.QName-class.html#__init__
+lxml.etree.QName.__new__       lxml.etree.QName-class.html#__new__
+lxml.etree.QName.namespace     lxml.etree.QName-class.html#namespace
+lxml.etree.QName.__ne__        lxml.etree.QName-class.html#__ne__
+lxml.etree.QName.__gt__        lxml.etree.QName-class.html#__gt__
+lxml.etree.QName.__eq__        lxml.etree.QName-class.html#__eq__
+lxml.etree.QName.__le__        lxml.etree.QName-class.html#__le__
+lxml.etree.QName.__hash__      lxml.etree.QName-class.html#__hash__
+lxml.etree.QName.__ge__        lxml.etree.QName-class.html#__ge__
+lxml.etree.RelaxNG     lxml.etree.RelaxNG-class.html
+lxml.etree.RelaxNG.__new__     lxml.etree.RelaxNG-class.html#__new__
+lxml.etree._Validator._clear_error_log lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid      lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message      lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log        lxml.etree._Validator-class.html#error_log
+lxml.etree.RelaxNG.__call__    lxml.etree.RelaxNG-class.html#__call__
+lxml.etree._Validator.assert_  lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate lxml.etree._Validator-class.html#validate
+lxml.etree.RelaxNG.__init__    lxml.etree.RelaxNG-class.html#__init__
+lxml.etree.RelaxNGError        lxml.etree.RelaxNGError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.RelaxNGErrorTypes   lxml.etree.RelaxNGErrorTypes-class.html
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TEXTWRONG     lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_TEXTWRONG
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRACONTENT  lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_EXTRACONTENT
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPEVAL       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_TYPEVAL
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NODEFINE      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NODEFINE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOTELEM       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NOTELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALUE lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_VALUE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPECMP       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_TYPECMP
+lxml.etree.RelaxNGErrorTypes._getName  lxml.etree.RelaxNGErrorTypes-class.html#_getName
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTELEM      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LISTELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNAL      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INTERNAL
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATATYPE      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_DATATYPE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATAELEM      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_DATAELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INVALIDATTR   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INVALIDATTR
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNAME      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMNAME
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DUPID lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_DUPID
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNOTEMPTY  lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMNOTEMPTY
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOELEM        lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NOELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPE  lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_TYPE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_OK        lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_OK
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNONS      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMNONS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_CONTENTVALID  lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_CONTENTVALID
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LIST  lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LIST
+lxml.etree.RelaxNGErrorTypes._names    lxml.etree.RelaxNGErrorTypes-class.html#_names
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRADATA     lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_EXTRADATA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_MEMORY        lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_MEMORY
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOSTATE       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NOSTATE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONG     lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMWRONG
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEXTRA     lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LISTEXTRA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNONS      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTRNONS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONGNS   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMWRONGNS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNAME      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTRNAME
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALELEM       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_VALELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNODATA   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INTERNODATA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOGRAMMAR     lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NOGRAMMAR
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMEXTRANS   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMEXTRANS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRWRONGNS   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTRWRONGNS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTEREXTRA    lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INTEREXTRA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTREXTRANS   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTREXTRANS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LACKDATA      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LACKDATA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEMPTY     lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LISTEMPTY
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERSEQ      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INTERSEQ
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRVALID     lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTRVALID
+lxml.etree.RelaxNGParseError   lxml.etree.RelaxNGParseError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.RelaxNGValidateError        lxml.etree.RelaxNGValidateError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.Resolver    lxml.etree.Resolver-class.html
+lxml.etree.Resolver.resolve    lxml.etree.Resolver-class.html#resolve
+lxml.etree.Resolver.resolve_filename   lxml.etree.Resolver-class.html#resolve_filename
+lxml.etree.Resolver.__new__    lxml.etree.Resolver-class.html#__new__
+lxml.etree.Resolver.resolve_string     lxml.etree.Resolver-class.html#resolve_string
+lxml.etree.Resolver.resolve_file       lxml.etree.Resolver-class.html#resolve_file
+lxml.etree.Resolver.resolve_empty      lxml.etree.Resolver-class.html#resolve_empty
+lxml.etree.Schematron  lxml.etree.Schematron-class.html
+lxml.etree.Schematron.__new__  lxml.etree.Schematron-class.html#__new__
+lxml.etree._Validator._clear_error_log lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid      lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message      lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log        lxml.etree._Validator-class.html#error_log
+lxml.etree.Schematron.__call__ lxml.etree.Schematron-class.html#__call__
+lxml.etree._Validator.assert_  lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate lxml.etree._Validator-class.html#validate
+lxml.etree.Schematron.__init__ lxml.etree.Schematron-class.html#__init__
+lxml.etree.SchematronError     lxml.etree.SchematronError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.SchematronParseError        lxml.etree.SchematronParseError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.SchematronValidateError     lxml.etree.SchematronValidateError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.SerialisationError  lxml.etree.SerialisationError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.SiblingsIterator    lxml.etree.SiblingsIterator-class.html
+lxml.etree.SiblingsIterator.__new__    lxml.etree.SiblingsIterator-class.html#__new__
+lxml.etree._ElementIterator.__next__   lxml.etree._ElementIterator-class.html#__next__
+lxml.etree._ElementIterator.next       lxml.etree._ElementIterator-class.html#next
+lxml.etree._ElementIterator.__iter__   lxml.etree._ElementIterator-class.html#__iter__
+lxml.etree.TreeBuilder lxml.etree.TreeBuilder-class.html
+lxml.etree.TreeBuilder.comment lxml.etree.TreeBuilder-class.html#comment
+lxml.etree.TreeBuilder.end     lxml.etree.TreeBuilder-class.html#end
+lxml.etree.TreeBuilder.__new__ lxml.etree.TreeBuilder-class.html#__new__
+lxml.etree.TreeBuilder.start   lxml.etree.TreeBuilder-class.html#start
+lxml.etree.TreeBuilder.close   lxml.etree.TreeBuilder-class.html#close
+lxml.etree.TreeBuilder.pi      lxml.etree.TreeBuilder-class.html#pi
+lxml.etree.TreeBuilder.data    lxml.etree.TreeBuilder-class.html#data
+lxml.etree.TreeBuilder.__init__        lxml.etree.TreeBuilder-class.html#__init__
+lxml.etree.XInclude    lxml.etree.XInclude-class.html
+lxml.etree.XInclude.__new__    lxml.etree.XInclude-class.html#__new__
+lxml.etree.XInclude.error_log  lxml.etree.XInclude-class.html#error_log
+lxml.etree.XInclude.__call__   lxml.etree.XInclude-class.html#__call__
+lxml.etree.XInclude.__init__   lxml.etree.XInclude-class.html#__init__
+lxml.etree.XIncludeError       lxml.etree.XIncludeError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XMLParser   lxml.etree.XMLParser-class.html
+lxml.etree._FeedParser.feed    lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup        lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close   lxml.etree._FeedParser-class.html#close
+lxml.etree.XMLParser.__init__  lxml.etree.XMLParser-class.html#__init__
+lxml.etree.XMLParser.__new__   lxml.etree.XMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup   lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement     lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy    lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers       lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target  lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log       lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log  lxml.etree._FeedParser-class.html#feed_error_log
+lxml.etree.XMLSchema   lxml.etree.XMLSchema-class.html
+lxml.etree.XMLSchema.__new__   lxml.etree.XMLSchema-class.html#__new__
+lxml.etree._Validator._clear_error_log lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid      lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message      lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log        lxml.etree._Validator-class.html#error_log
+lxml.etree.XMLSchema.__call__  lxml.etree.XMLSchema-class.html#__call__
+lxml.etree._Validator.assert_  lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate lxml.etree._Validator-class.html#validate
+lxml.etree.XMLSchema.__init__  lxml.etree.XMLSchema-class.html#__init__
+lxml.etree.XMLSchemaError      lxml.etree.XMLSchemaError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XMLSchemaParseError lxml.etree.XMLSchemaParseError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XMLSchemaValidateError      lxml.etree.XMLSchemaValidateError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XMLSyntaxError      lxml.etree.XMLSyntaxError-class.html
+lxml.etree.ParseError.__init__ lxml.etree.ParseError-class.html#__init__
+lxml.etree.XPath       lxml.etree.XPath-class.html
+lxml.etree.XPath.__new__       lxml.etree.XPath-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate        lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log       lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree.XPath.__repr__      lxml.etree.XPath-class.html#__repr__
+lxml.etree.XPath.__call__      lxml.etree.XPath-class.html#__call__
+lxml.etree.XPath.path  lxml.etree.XPath-class.html#path
+lxml.etree.XPath.__init__      lxml.etree.XPath-class.html#__init__
+lxml.etree.XPathDocumentEvaluator      lxml.etree.XPathDocumentEvaluator-class.html
+lxml.etree.XPathElementEvaluator.register_namespace    lxml.etree.XPathElementEvaluator-class.html#register_namespace
+lxml.etree.XPathDocumentEvaluator.__new__      lxml.etree.XPathDocumentEvaluator-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate        lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log       lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree.XPathDocumentEvaluator.__call__     lxml.etree.XPathDocumentEvaluator-class.html#__call__
+lxml.etree.XPathElementEvaluator.register_namespaces   lxml.etree.XPathElementEvaluator-class.html#register_namespaces
+lxml.etree.XPathDocumentEvaluator.__init__     lxml.etree.XPathDocumentEvaluator-class.html#__init__
+lxml.etree.XPathElementEvaluator       lxml.etree.XPathElementEvaluator-class.html
+lxml.etree.XPathElementEvaluator.register_namespace    lxml.etree.XPathElementEvaluator-class.html#register_namespace
+lxml.etree.XPathElementEvaluator.__new__       lxml.etree.XPathElementEvaluator-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate        lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log       lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree.XPathElementEvaluator.__call__      lxml.etree.XPathElementEvaluator-class.html#__call__
+lxml.etree.XPathElementEvaluator.register_namespaces   lxml.etree.XPathElementEvaluator-class.html#register_namespaces
+lxml.etree.XPathElementEvaluator.__init__      lxml.etree.XPathElementEvaluator-class.html#__init__
+lxml.etree.XPathError  lxml.etree.XPathError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XPathEvalError      lxml.etree.XPathEvalError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XPathFunctionError  lxml.etree.XPathFunctionError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XPathResultError    lxml.etree.XPathResultError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XPathSyntaxError    lxml.etree.XPathSyntaxError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLT        lxml.etree.XSLT-class.html
+lxml.etree.XSLT.__new__        lxml.etree.XSLT-class.html#__new__
+lxml.etree.XSLT.__deepcopy__   lxml.etree.XSLT-class.html#__deepcopy__
+lxml.etree.XSLT.strparam       lxml.etree.XSLT-class.html#strparam
+lxml.etree.XSLT.error_log      lxml.etree.XSLT-class.html#error_log
+lxml.etree.XSLT.tostring       lxml.etree.XSLT-class.html#tostring
+lxml.etree.XSLT.__call__       lxml.etree.XSLT-class.html#__call__
+lxml.etree.XSLT.apply  lxml.etree.XSLT-class.html#apply
+lxml.etree.XSLT.__copy__       lxml.etree.XSLT-class.html#__copy__
+lxml.etree.XSLT.__init__       lxml.etree.XSLT-class.html#__init__
+lxml.etree.XSLTAccessControl   lxml.etree.XSLTAccessControl-class.html
+lxml.etree.XSLTAccessControl.DENY_WRITE        lxml.etree.XSLTAccessControl-class.html#DENY_WRITE
+lxml.etree.XSLTAccessControl.__new__   lxml.etree.XSLTAccessControl-class.html#__new__
+lxml.etree.XSLTAccessControl.__repr__  lxml.etree.XSLTAccessControl-class.html#__repr__
+lxml.etree.XSLTAccessControl.options   lxml.etree.XSLTAccessControl-class.html#options
+lxml.etree.XSLTAccessControl.DENY_ALL  lxml.etree.XSLTAccessControl-class.html#DENY_ALL
+lxml.etree.XSLTApplyError      lxml.etree.XSLTApplyError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLTError   lxml.etree.XSLTError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLTExtension       lxml.etree.XSLTExtension-class.html
+lxml.etree.XSLTExtension.execute       lxml.etree.XSLTExtension-class.html#execute
+lxml.etree.XSLTExtension.__new__       lxml.etree.XSLTExtension-class.html#__new__
+lxml.etree.XSLTExtension.apply_templates       lxml.etree.XSLTExtension-class.html#apply_templates
+lxml.etree.XSLTExtension.process_children      lxml.etree.XSLTExtension-class.html#process_children
+lxml.etree.XSLTExtensionError  lxml.etree.XSLTExtensionError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLTParseError      lxml.etree.XSLTParseError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLTSaveError       lxml.etree.XSLTSaveError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.etree._AppendOnlyElementProxy     lxml.etree._AppendOnlyElementProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious  lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent    lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline   lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._AppendOnlyElementProxy.text        lxml.etree._AppendOnlyElementProxy-class.html#text
+lxml.etree._ReadOnlyProxy.__getitem__  lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.iterchildren lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyElementProxy.prefix        lxml.etree._ReadOnlyElementProxy-class.html#prefix
+lxml.etree._ReadOnlyProxy.tag  lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._AppendOnlyElementProxy.append      lxml.etree._AppendOnlyElementProxy-class.html#append
+lxml.etree._ReadOnlyProxy.getnext      lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._AppendOnlyElementProxy.__new__     lxml.etree._AppendOnlyElementProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren  lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__      lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._AppendOnlyElementProxy.extend      lxml.etree._AppendOnlyElementProxy-class.html#extend
+lxml.etree._ReadOnlyElementProxy.get   lxml.etree._ReadOnlyElementProxy-class.html#get
+lxml.etree._ReadOnlyElementProxy.keys  lxml.etree._ReadOnlyElementProxy-class.html#keys
+lxml.etree._ReadOnlyProxy.__deepcopy__ lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__     lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__  lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyElementProxy.items lxml.etree._ReadOnlyElementProxy-class.html#items
+lxml.etree._ReadOnlyElementProxy.values        lxml.etree._ReadOnlyElementProxy-class.html#values
+lxml.etree._ReadOnlyProxy.__repr__     lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyElementProxy.attrib        lxml.etree._ReadOnlyElementProxy-class.html#attrib
+lxml.etree._ReadOnlyProxy.__copy__     lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._Attrib     lxml.etree._Attrib-class.html
+lxml.etree._Attrib.iteritems   lxml.etree._Attrib-class.html#iteritems
+lxml.etree._Attrib.pop lxml.etree._Attrib-class.html#pop
+lxml.etree._Attrib.has_key     lxml.etree._Attrib-class.html#has_key
+lxml.etree._Attrib.__lt__      lxml.etree._Attrib-class.html#__lt__
+lxml.etree._Attrib.__new__     lxml.etree._Attrib-class.html#__new__
+lxml.etree._Attrib.__contains__        lxml.etree._Attrib-class.html#__contains__
+lxml.etree._Attrib.itervalues  lxml.etree._Attrib-class.html#itervalues
+lxml.etree._Attrib.__len__     lxml.etree._Attrib-class.html#__len__
+lxml.etree._Attrib.__ne__      lxml.etree._Attrib-class.html#__ne__
+lxml.etree._Attrib.__getitem__ lxml.etree._Attrib-class.html#__getitem__
+lxml.etree._Attrib.get lxml.etree._Attrib-class.html#get
+lxml.etree._Attrib.keys        lxml.etree._Attrib-class.html#keys
+lxml.etree._Attrib.update      lxml.etree._Attrib-class.html#update
+lxml.etree._Attrib.__iter__    lxml.etree._Attrib-class.html#__iter__
+lxml.etree._Attrib.__gt__      lxml.etree._Attrib-class.html#__gt__
+lxml.etree._Attrib.__eq__      lxml.etree._Attrib-class.html#__eq__
+lxml.etree._Attrib.iterkeys    lxml.etree._Attrib-class.html#iterkeys
+lxml.etree._Attrib.__delitem__ lxml.etree._Attrib-class.html#__delitem__
+lxml.etree._Attrib.__nonzero__ lxml.etree._Attrib-class.html#__nonzero__
+lxml.etree._Attrib.items       lxml.etree._Attrib-class.html#items
+lxml.etree._Attrib.clear       lxml.etree._Attrib-class.html#clear
+lxml.etree._Attrib.__setitem__ lxml.etree._Attrib-class.html#__setitem__
+lxml.etree._Attrib.__le__      lxml.etree._Attrib-class.html#__le__
+lxml.etree._Attrib.values      lxml.etree._Attrib-class.html#values
+lxml.etree._Attrib.__repr__    lxml.etree._Attrib-class.html#__repr__
+lxml.etree._Attrib.__ge__      lxml.etree._Attrib-class.html#__ge__
+lxml.etree._AttribIterator     lxml.etree._AttribIterator-class.html
+lxml.etree._AttribIterator.__new__     lxml.etree._AttribIterator-class.html#__new__
+lxml.etree._AttribIterator.__next__    lxml.etree._AttribIterator-class.html#__next__
+lxml.etree._AttribIterator.next        lxml.etree._AttribIterator-class.html#next
+lxml.etree._AttribIterator.__iter__    lxml.etree._AttribIterator-class.html#__iter__
+lxml.etree._BaseContext        lxml.etree._BaseContext-class.html
+lxml.etree._BaseContext.__new__        lxml.etree._BaseContext-class.html#__new__
+lxml.etree._BaseContext.eval_context   lxml.etree._BaseContext-class.html#eval_context
+lxml.etree._BaseContext.context_node   lxml.etree._BaseContext-class.html#context_node
+lxml.etree._BaseContext.__init__       lxml.etree._BaseContext-class.html#__init__
+lxml.etree._BaseErrorLog       lxml.etree._BaseErrorLog-class.html
+lxml.etree._BaseErrorLog.__new__       lxml.etree._BaseErrorLog-class.html#__new__
+lxml.etree._BaseErrorLog.last_error    lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._BaseErrorLog.__repr__      lxml.etree._BaseErrorLog-class.html#__repr__
+lxml.etree._BaseErrorLog.copy  lxml.etree._BaseErrorLog-class.html#copy
+lxml.etree._BaseErrorLog.__init__      lxml.etree._BaseErrorLog-class.html#__init__
+lxml.etree._BaseParser lxml.etree._BaseParser-class.html
+lxml.etree._BaseParser.set_element_class_lookup        lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._BaseParser.__init__        lxml.etree._BaseParser-class.html#__init__
+lxml.etree._BaseParser.__new__ lxml.etree._BaseParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup   lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement     lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy    lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers       lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target  lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log       lxml.etree._BaseParser-class.html#error_log
+lxml.etree._ClassNamespaceRegistry     lxml.etree._ClassNamespaceRegistry-class.html
+lxml.etree._ClassNamespaceRegistry.__new__     lxml.etree._ClassNamespaceRegistry-class.html#__new__
+lxml.etree._NamespaceRegistry.__getitem__      lxml.etree._NamespaceRegistry-class.html#__getitem__
+lxml.etree._NamespaceRegistry.update   lxml.etree._NamespaceRegistry-class.html#update
+lxml.etree._NamespaceRegistry.__iter__ lxml.etree._NamespaceRegistry-class.html#__iter__
+lxml.etree._NamespaceRegistry.iteritems        lxml.etree._NamespaceRegistry-class.html#iteritems
+lxml.etree._ClassNamespaceRegistry.__delitem__ lxml.etree._ClassNamespaceRegistry-class.html#__delitem__
+lxml.etree._NamespaceRegistry.items    lxml.etree._NamespaceRegistry-class.html#items
+lxml.etree._NamespaceRegistry.clear    lxml.etree._NamespaceRegistry-class.html#clear
+lxml.etree._ClassNamespaceRegistry.__setitem__ lxml.etree._ClassNamespaceRegistry-class.html#__setitem__
+lxml.etree._ClassNamespaceRegistry.__repr__    lxml.etree._ClassNamespaceRegistry-class.html#__repr__
+lxml.etree._Comment    lxml.etree._Comment-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text   lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Comment.tag        lxml.etree._Comment-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Comment.__new__    lxml.etree._Comment-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Comment.__repr__   lxml.etree._Comment-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Document   lxml.etree._Document-class.html
+lxml.etree._Document.__new__   lxml.etree._Document-class.html#__new__
+lxml.etree._DomainErrorLog     lxml.etree._DomainErrorLog-class.html
+lxml.etree._ListErrorLog.filter_domains        lxml.etree._ListErrorLog-class.html#filter_domains
+lxml.etree._BaseErrorLog.last_error    lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._ListErrorLog.filter_from_warnings  lxml.etree._ListErrorLog-class.html#filter_from_warnings
+lxml.etree._DomainErrorLog.__init__    lxml.etree._DomainErrorLog-class.html#__init__
+lxml.etree._DomainErrorLog.__new__     lxml.etree._DomainErrorLog-class.html#__new__
+lxml.etree._ListErrorLog.__contains__  lxml.etree._ListErrorLog-class.html#__contains__
+lxml.etree._ListErrorLog.filter_from_level     lxml.etree._ListErrorLog-class.html#filter_from_level
+lxml.etree._ListErrorLog.__len__       lxml.etree._ListErrorLog-class.html#__len__
+lxml.etree._ListErrorLog.__getitem__   lxml.etree._ListErrorLog-class.html#__getitem__
+lxml.etree._ListErrorLog.filter_levels lxml.etree._ListErrorLog-class.html#filter_levels
+lxml.etree._ErrorLog.__iter__  lxml.etree._ErrorLog-class.html#__iter__
+lxml.etree._ErrorLog.copy      lxml.etree._ErrorLog-class.html#copy
+lxml.etree._ListErrorLog.__nonzero__   lxml.etree._ListErrorLog-class.html#__nonzero__
+lxml.etree._ListErrorLog.filter_from_fatals    lxml.etree._ListErrorLog-class.html#filter_from_fatals
+lxml.etree._DomainErrorLog.receive     lxml.etree._DomainErrorLog-class.html#receive
+lxml.etree._ErrorLog.clear     lxml.etree._ErrorLog-class.html#clear
+lxml.etree._ListErrorLog.filter_from_errors    lxml.etree._ListErrorLog-class.html#filter_from_errors
+lxml.etree._ListErrorLog.filter_types  lxml.etree._ListErrorLog-class.html#filter_types
+lxml.etree._ListErrorLog.__repr__      lxml.etree._ListErrorLog-class.html#__repr__
+lxml.etree._Element    lxml.etree._Element-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.__new__    lxml.etree._Element-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._ElementIterator    lxml.etree._ElementIterator-class.html
+lxml.etree._ElementIterator.__new__    lxml.etree._ElementIterator-class.html#__new__
+lxml.etree._ElementIterator.__next__   lxml.etree._ElementIterator-class.html#__next__
+lxml.etree._ElementIterator.next       lxml.etree._ElementIterator-class.html#next
+lxml.etree._ElementIterator.__iter__   lxml.etree._ElementIterator-class.html#__iter__
+lxml.etree._ElementStringResult        lxml.etree._ElementStringResult-class.html
+lxml.etree._ElementStringResult.getparent      lxml.etree._ElementStringResult-class.html#getparent
+lxml.etree._ElementTagMatcher  lxml.etree._ElementTagMatcher-class.html
+lxml.etree._ElementTagMatcher.__new__  lxml.etree._ElementTagMatcher-class.html#__new__
+lxml.etree._ElementTree        lxml.etree._ElementTree-class.html
+lxml.etree._ElementTree.getroot        lxml.etree._ElementTree-class.html#getroot
+lxml.etree._ElementTree.iterfind       lxml.etree._ElementTree-class.html#iterfind
+lxml.etree._ElementTree.parse  lxml.etree._ElementTree-class.html#parse
+lxml.etree._ElementTree.relaxng        lxml.etree._ElementTree-class.html#relaxng
+lxml.etree._ElementTree.find   lxml.etree._ElementTree-class.html#find
+lxml.etree._ElementTree.__new__        lxml.etree._ElementTree-class.html#__new__
+lxml.etree._ElementTree.findtext       lxml.etree._ElementTree-class.html#findtext
+lxml.etree._ElementTree.findall        lxml.etree._ElementTree-class.html#findall
+lxml.etree._ElementTree.write  lxml.etree._ElementTree-class.html#write
+lxml.etree._ElementTree._setroot       lxml.etree._ElementTree-class.html#_setroot
+lxml.etree._ElementTree.xpath  lxml.etree._ElementTree-class.html#xpath
+lxml.etree._ElementTree.parser lxml.etree._ElementTree-class.html#parser
+lxml.etree._ElementTree.xslt   lxml.etree._ElementTree-class.html#xslt
+lxml.etree._ElementTree.__deepcopy__   lxml.etree._ElementTree-class.html#__deepcopy__
+lxml.etree._ElementTree.getpath        lxml.etree._ElementTree-class.html#getpath
+lxml.etree._ElementTree.write_c14n     lxml.etree._ElementTree-class.html#write_c14n
+lxml.etree._ElementTree.xmlschema      lxml.etree._ElementTree-class.html#xmlschema
+lxml.etree._ElementTree.xinclude       lxml.etree._ElementTree-class.html#xinclude
+lxml.etree._ElementTree.docinfo        lxml.etree._ElementTree-class.html#docinfo
+lxml.etree._ElementTree.getiterator    lxml.etree._ElementTree-class.html#getiterator
+lxml.etree._ElementTree.iter   lxml.etree._ElementTree-class.html#iter
+lxml.etree._ElementTree.__copy__       lxml.etree._ElementTree-class.html#__copy__
+lxml.etree._ElementUnicodeResult       lxml.etree._ElementUnicodeResult-class.html
+lxml.etree._ElementUnicodeResult.getparent     lxml.etree._ElementUnicodeResult-class.html#getparent
+lxml.etree._ElementUnicodeResult.is_attribute  lxml.etree._ElementUnicodeResult-class.html#is_attribute
+lxml.etree._ElementUnicodeResult.__new__       lxml.etree._ElementUnicodeResult-class.html#__new__
+lxml.etree._ElementUnicodeResult.is_text       lxml.etree._ElementUnicodeResult-class.html#is_text
+lxml.etree._ElementUnicodeResult.attrname      lxml.etree._ElementUnicodeResult-class.html#attrname
+lxml.etree._ElementUnicodeResult.is_tail       lxml.etree._ElementUnicodeResult-class.html#is_tail
+lxml.etree._Entity     lxml.etree._Entity-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Entity.text        lxml.etree._Entity-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Entity.tag lxml.etree._Entity-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Entity.__new__     lxml.etree._Entity-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Entity.name        lxml.etree._Entity-class.html#name
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Entity.__repr__    lxml.etree._Entity-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._ErrorLog   lxml.etree._ErrorLog-class.html
+lxml.etree._ListErrorLog.filter_domains        lxml.etree._ListErrorLog-class.html#filter_domains
+lxml.etree._BaseErrorLog.last_error    lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._ListErrorLog.filter_from_warnings  lxml.etree._ListErrorLog-class.html#filter_from_warnings
+lxml.etree._ErrorLog.__init__  lxml.etree._ErrorLog-class.html#__init__
+lxml.etree._ErrorLog.__new__   lxml.etree._ErrorLog-class.html#__new__
+lxml.etree._ListErrorLog.__contains__  lxml.etree._ListErrorLog-class.html#__contains__
+lxml.etree._ListErrorLog.filter_from_level     lxml.etree._ListErrorLog-class.html#filter_from_level
+lxml.etree._ListErrorLog.__len__       lxml.etree._ListErrorLog-class.html#__len__
+lxml.etree._ListErrorLog.__getitem__   lxml.etree._ListErrorLog-class.html#__getitem__
+lxml.etree._ListErrorLog.filter_levels lxml.etree._ListErrorLog-class.html#filter_levels
+lxml.etree._ErrorLog.__iter__  lxml.etree._ErrorLog-class.html#__iter__
+lxml.etree._ErrorLog.copy      lxml.etree._ErrorLog-class.html#copy
+lxml.etree._ListErrorLog.__nonzero__   lxml.etree._ListErrorLog-class.html#__nonzero__
+lxml.etree._ListErrorLog.filter_from_fatals    lxml.etree._ListErrorLog-class.html#filter_from_fatals
+lxml.etree._ErrorLog.receive   lxml.etree._ErrorLog-class.html#receive
+lxml.etree._ErrorLog.clear     lxml.etree._ErrorLog-class.html#clear
+lxml.etree._ListErrorLog.filter_from_errors    lxml.etree._ListErrorLog-class.html#filter_from_errors
+lxml.etree._ListErrorLog.filter_types  lxml.etree._ListErrorLog-class.html#filter_types
+lxml.etree._ListErrorLog.__repr__      lxml.etree._ListErrorLog-class.html#__repr__
+lxml.etree._ExceptionContext   lxml.etree._ExceptionContext-class.html
+lxml.etree._ExceptionContext.__new__   lxml.etree._ExceptionContext-class.html#__new__
+lxml.etree._ExsltRegExp        lxml.etree._ExsltRegExp-class.html
+lxml.etree._ExsltRegExp.__new__        lxml.etree._ExsltRegExp-class.html#__new__
+lxml.etree._ExsltRegExp.replace        lxml.etree._ExsltRegExp-class.html#replace
+lxml.etree._ExsltRegExp.test   lxml.etree._ExsltRegExp-class.html#test
+lxml.etree._ExsltRegExp.match  lxml.etree._ExsltRegExp-class.html#match
+lxml.etree._FeedParser lxml.etree._FeedParser-class.html
+lxml.etree._FeedParser.feed    lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup        lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close   lxml.etree._FeedParser-class.html#close
+lxml.etree._BaseParser.__init__        lxml.etree._BaseParser-class.html#__init__
+lxml.etree._FeedParser.__new__ lxml.etree._FeedParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup   lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement     lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy    lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers       lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target  lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log       lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log  lxml.etree._FeedParser-class.html#feed_error_log
+lxml.etree._FileReaderContext  lxml.etree._FileReaderContext-class.html
+lxml.etree._FileReaderContext.__new__  lxml.etree._FileReaderContext-class.html#__new__
+lxml.etree._FilelikeWriter     lxml.etree._FilelikeWriter-class.html
+lxml.etree._FilelikeWriter.__new__     lxml.etree._FilelikeWriter-class.html#__new__
+lxml.etree._FunctionNamespaceRegistry  lxml.etree._FunctionNamespaceRegistry-class.html
+lxml.etree._FunctionNamespaceRegistry.__new__  lxml.etree._FunctionNamespaceRegistry-class.html#__new__
+lxml.etree._NamespaceRegistry.__getitem__      lxml.etree._NamespaceRegistry-class.html#__getitem__
+lxml.etree._NamespaceRegistry.update   lxml.etree._NamespaceRegistry-class.html#update
+lxml.etree._NamespaceRegistry.__iter__ lxml.etree._NamespaceRegistry-class.html#__iter__
+lxml.etree._NamespaceRegistry.iteritems        lxml.etree._NamespaceRegistry-class.html#iteritems
+lxml.etree._FunctionNamespaceRegistry.__delitem__      lxml.etree._FunctionNamespaceRegistry-class.html#__delitem__
+lxml.etree._NamespaceRegistry.items    lxml.etree._NamespaceRegistry-class.html#items
+lxml.etree._NamespaceRegistry.clear    lxml.etree._NamespaceRegistry-class.html#clear
+lxml.etree._FunctionNamespaceRegistry.__setitem__      lxml.etree._FunctionNamespaceRegistry-class.html#__setitem__
+lxml.etree._FunctionNamespaceRegistry.__repr__ lxml.etree._FunctionNamespaceRegistry-class.html#__repr__
+lxml.etree._IDDict     lxml.etree._IDDict-class.html
+lxml.etree._IDDict.has_key     lxml.etree._IDDict-class.html#has_key
+lxml.etree._IDDict.__new__     lxml.etree._IDDict-class.html#__new__
+lxml.etree._IDDict.__contains__        lxml.etree._IDDict-class.html#__contains__
+lxml.etree._IDDict.itervalues  lxml.etree._IDDict-class.html#itervalues
+lxml.etree._IDDict.__len__     lxml.etree._IDDict-class.html#__len__
+lxml.etree._IDDict.__getitem__ lxml.etree._IDDict-class.html#__getitem__
+lxml.etree._IDDict.get lxml.etree._IDDict-class.html#get
+lxml.etree._IDDict.keys        lxml.etree._IDDict-class.html#keys
+lxml.etree._IDDict.__iter__    lxml.etree._IDDict-class.html#__iter__
+lxml.etree._IDDict.iteritems   lxml.etree._IDDict-class.html#iteritems
+lxml.etree._IDDict.copy        lxml.etree._IDDict-class.html#copy
+lxml.etree._IDDict.iterkeys    lxml.etree._IDDict-class.html#iterkeys
+lxml.etree._IDDict.items       lxml.etree._IDDict-class.html#items
+lxml.etree._IDDict.values      lxml.etree._IDDict-class.html#values
+lxml.etree._IDDict.__repr__    lxml.etree._IDDict-class.html#__repr__
+lxml.etree._InputDocument      lxml.etree._InputDocument-class.html
+lxml.etree._InputDocument.__new__      lxml.etree._InputDocument-class.html#__new__
+lxml.etree._IterparseContext   lxml.etree._IterparseContext-class.html
+lxml.etree._IterparseContext.__new__   lxml.etree._IterparseContext-class.html#__new__
+lxml.etree._ListErrorLog       lxml.etree._ListErrorLog-class.html
+lxml.etree._ListErrorLog.filter_domains        lxml.etree._ListErrorLog-class.html#filter_domains
+lxml.etree._BaseErrorLog.last_error    lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._ListErrorLog.filter_from_warnings  lxml.etree._ListErrorLog-class.html#filter_from_warnings
+lxml.etree._ListErrorLog.__init__      lxml.etree._ListErrorLog-class.html#__init__
+lxml.etree._ListErrorLog.__new__       lxml.etree._ListErrorLog-class.html#__new__
+lxml.etree._ListErrorLog.__contains__  lxml.etree._ListErrorLog-class.html#__contains__
+lxml.etree._ListErrorLog.filter_from_level     lxml.etree._ListErrorLog-class.html#filter_from_level
+lxml.etree._ListErrorLog.__len__       lxml.etree._ListErrorLog-class.html#__len__
+lxml.etree._ListErrorLog.__getitem__   lxml.etree._ListErrorLog-class.html#__getitem__
+lxml.etree._ListErrorLog.filter_levels lxml.etree._ListErrorLog-class.html#filter_levels
+lxml.etree._ListErrorLog.__iter__      lxml.etree._ListErrorLog-class.html#__iter__
+lxml.etree._ListErrorLog.copy  lxml.etree._ListErrorLog-class.html#copy
+lxml.etree._ListErrorLog.__nonzero__   lxml.etree._ListErrorLog-class.html#__nonzero__
+lxml.etree._ListErrorLog.filter_from_fatals    lxml.etree._ListErrorLog-class.html#filter_from_fatals
+lxml.etree._ListErrorLog.filter_from_errors    lxml.etree._ListErrorLog-class.html#filter_from_errors
+lxml.etree._ListErrorLog.filter_types  lxml.etree._ListErrorLog-class.html#filter_types
+lxml.etree._ListErrorLog.__repr__      lxml.etree._ListErrorLog-class.html#__repr__
+lxml.etree._LogEntry   lxml.etree._LogEntry-class.html
+lxml.etree._LogEntry.domain    lxml.etree._LogEntry-class.html#domain
+lxml.etree._LogEntry.message   lxml.etree._LogEntry-class.html#message
+lxml.etree._LogEntry.level_name        lxml.etree._LogEntry-class.html#level_name
+lxml.etree._LogEntry.__new__   lxml.etree._LogEntry-class.html#__new__
+lxml.etree._LogEntry.type_name lxml.etree._LogEntry-class.html#type_name
+lxml.etree._LogEntry.domain_name       lxml.etree._LogEntry-class.html#domain_name
+lxml.etree._LogEntry.filename  lxml.etree._LogEntry-class.html#filename
+lxml.etree._LogEntry.type      lxml.etree._LogEntry-class.html#type
+lxml.etree._LogEntry.line      lxml.etree._LogEntry-class.html#line
+lxml.etree._LogEntry.level     lxml.etree._LogEntry-class.html#level
+lxml.etree._LogEntry.column    lxml.etree._LogEntry-class.html#column
+lxml.etree._LogEntry.__repr__  lxml.etree._LogEntry-class.html#__repr__
+lxml.etree._ModifyContentOnlyEntityProxy       lxml.etree._ModifyContentOnlyEntityProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious  lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent    lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline   lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ModifyContentOnlyProxy.text        lxml.etree._ModifyContentOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag  lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext      lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ModifyContentOnlyEntityProxy.__new__       lxml.etree._ModifyContentOnlyEntityProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren  lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__      lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__  lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__ lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__     lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__  lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ModifyContentOnlyEntityProxy.name  lxml.etree._ModifyContentOnlyEntityProxy-class.html#name
+lxml.etree._ReadOnlyProxy.__repr__     lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__     lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ModifyContentOnlyPIProxy   lxml.etree._ModifyContentOnlyPIProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious  lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent    lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline   lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ModifyContentOnlyProxy.text        lxml.etree._ModifyContentOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag  lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext      lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ModifyContentOnlyPIProxy.__new__   lxml.etree._ModifyContentOnlyPIProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren  lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__      lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__  lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__ lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__     lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__  lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ModifyContentOnlyPIProxy.target    lxml.etree._ModifyContentOnlyPIProxy-class.html#target
+lxml.etree._ReadOnlyProxy.__repr__     lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__     lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ModifyContentOnlyProxy     lxml.etree._ModifyContentOnlyProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious  lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent    lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline   lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ModifyContentOnlyProxy.text        lxml.etree._ModifyContentOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag  lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext      lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ModifyContentOnlyProxy.__new__     lxml.etree._ModifyContentOnlyProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren  lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__      lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__  lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__ lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__     lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__  lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyProxy.__repr__     lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__     lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._NamespaceRegistry  lxml.etree._NamespaceRegistry-class.html
+lxml.etree._NamespaceRegistry.__new__  lxml.etree._NamespaceRegistry-class.html#__new__
+lxml.etree._NamespaceRegistry.__getitem__      lxml.etree._NamespaceRegistry-class.html#__getitem__
+lxml.etree._NamespaceRegistry.update   lxml.etree._NamespaceRegistry-class.html#update
+lxml.etree._NamespaceRegistry.__iter__ lxml.etree._NamespaceRegistry-class.html#__iter__
+lxml.etree._NamespaceRegistry.iteritems        lxml.etree._NamespaceRegistry-class.html#iteritems
+lxml.etree._NamespaceRegistry.__delitem__      lxml.etree._NamespaceRegistry-class.html#__delitem__
+lxml.etree._NamespaceRegistry.items    lxml.etree._NamespaceRegistry-class.html#items
+lxml.etree._NamespaceRegistry.clear    lxml.etree._NamespaceRegistry-class.html#clear
+lxml.etree._NamespaceRegistry.__setitem__      lxml.etree._NamespaceRegistry-class.html#__setitem__
+lxml.etree._OpaqueDocumentWrapper      lxml.etree._OpaqueDocumentWrapper-class.html
+lxml.etree._OpaqueDocumentWrapper.__new__      lxml.etree._OpaqueDocumentWrapper-class.html#__new__
+lxml.etree._OpaqueDocumentWrapper.extend       lxml.etree._OpaqueDocumentWrapper-class.html#extend
+lxml.etree._OpaqueDocumentWrapper.append       lxml.etree._OpaqueDocumentWrapper-class.html#append
+lxml.etree._OpaqueNodeWrapper.__init__ lxml.etree._OpaqueNodeWrapper-class.html#__init__
+lxml.etree._OpaqueNodeWrapper  lxml.etree._OpaqueNodeWrapper-class.html
+lxml.etree._OpaqueNodeWrapper.__new__  lxml.etree._OpaqueNodeWrapper-class.html#__new__
+lxml.etree._OpaqueNodeWrapper.__init__ lxml.etree._OpaqueNodeWrapper-class.html#__init__
+lxml.etree._ParserContext      lxml.etree._ParserContext-class.html
+lxml.etree._ParserContext.__new__      lxml.etree._ParserContext-class.html#__new__
+lxml.etree._ParserDictionaryContext    lxml.etree._ParserDictionaryContext-class.html
+lxml.etree._ParserDictionaryContext.__new__    lxml.etree._ParserDictionaryContext-class.html#__new__
+lxml.etree._ParserSchemaValidationContext      lxml.etree._ParserSchemaValidationContext-class.html
+lxml.etree._ParserSchemaValidationContext.__new__      lxml.etree._ParserSchemaValidationContext-class.html#__new__
+lxml.etree._ProcessingInstruction      lxml.etree._ProcessingInstruction-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text   lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._ProcessingInstruction.tag  lxml.etree._ProcessingInstruction-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._ProcessingInstruction.__new__      lxml.etree._ProcessingInstruction-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._ProcessingInstruction.target       lxml.etree._ProcessingInstruction-class.html#target
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._ProcessingInstruction.__repr__     lxml.etree._ProcessingInstruction-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._PythonSaxParserTarget      lxml.etree._PythonSaxParserTarget-class.html
+lxml.etree._PythonSaxParserTarget.__new__      lxml.etree._PythonSaxParserTarget-class.html#__new__
+lxml.etree._ReadOnlyElementProxy       lxml.etree._ReadOnlyElementProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious  lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent    lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline   lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ReadOnlyProxy.text lxml.etree._ReadOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyElementProxy.prefix        lxml.etree._ReadOnlyElementProxy-class.html#prefix
+lxml.etree._ReadOnlyProxy.tag  lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext      lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ReadOnlyElementProxy.__new__       lxml.etree._ReadOnlyElementProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren  lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__      lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__  lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyElementProxy.get   lxml.etree._ReadOnlyElementProxy-class.html#get
+lxml.etree._ReadOnlyElementProxy.keys  lxml.etree._ReadOnlyElementProxy-class.html#keys
+lxml.etree._ReadOnlyProxy.__deepcopy__ lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__     lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__  lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyElementProxy.items lxml.etree._ReadOnlyElementProxy-class.html#items
+lxml.etree._ReadOnlyElementProxy.values        lxml.etree._ReadOnlyElementProxy-class.html#values
+lxml.etree._ReadOnlyProxy.__repr__     lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyElementProxy.attrib        lxml.etree._ReadOnlyElementProxy-class.html#attrib
+lxml.etree._ReadOnlyProxy.__copy__     lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ReadOnlyEntityProxy        lxml.etree._ReadOnlyEntityProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious  lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent    lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline   lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ReadOnlyEntityProxy.text   lxml.etree._ReadOnlyEntityProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag  lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext      lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ReadOnlyEntityProxy.__new__        lxml.etree._ReadOnlyEntityProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren  lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__      lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__  lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__ lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__     lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__  lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyEntityProxy.name   lxml.etree._ReadOnlyEntityProxy-class.html#name
+lxml.etree._ReadOnlyProxy.__repr__     lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__     lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ReadOnlyPIProxy    lxml.etree._ReadOnlyPIProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious  lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent    lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline   lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ReadOnlyProxy.text lxml.etree._ReadOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag  lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext      lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ReadOnlyPIProxy.__new__    lxml.etree._ReadOnlyPIProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren  lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__      lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__  lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__ lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__     lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__  lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyPIProxy.target     lxml.etree._ReadOnlyPIProxy-class.html#target
+lxml.etree._ReadOnlyProxy.__repr__     lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__     lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ReadOnlyProxy      lxml.etree._ReadOnlyProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious  lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent    lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline   lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ReadOnlyProxy.text lxml.etree._ReadOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag  lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext      lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ReadOnlyProxy.__new__      lxml.etree._ReadOnlyProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.tail lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.getchildren  lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.__len__      lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__  lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__ lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__     lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__  lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyProxy.__repr__     lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__     lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ResolverContext    lxml.etree._ResolverContext-class.html
+lxml.etree._ResolverContext.__new__    lxml.etree._ResolverContext-class.html#__new__
+lxml.etree._ResolverRegistry   lxml.etree._ResolverRegistry-class.html
+lxml.etree._ResolverRegistry.resolve   lxml.etree._ResolverRegistry-class.html#resolve
+lxml.etree._ResolverRegistry.__new__   lxml.etree._ResolverRegistry-class.html#__new__
+lxml.etree._ResolverRegistry.remove    lxml.etree._ResolverRegistry-class.html#remove
+lxml.etree._ResolverRegistry.add       lxml.etree._ResolverRegistry-class.html#add
+lxml.etree._ResolverRegistry.__repr__  lxml.etree._ResolverRegistry-class.html#__repr__
+lxml.etree._ResolverRegistry.copy      lxml.etree._ResolverRegistry-class.html#copy
+lxml.etree._RotatingErrorLog   lxml.etree._RotatingErrorLog-class.html
+lxml.etree._ListErrorLog.filter_domains        lxml.etree._ListErrorLog-class.html#filter_domains
+lxml.etree._BaseErrorLog.last_error    lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._ListErrorLog.filter_from_warnings  lxml.etree._ListErrorLog-class.html#filter_from_warnings
+lxml.etree._RotatingErrorLog.__init__  lxml.etree._RotatingErrorLog-class.html#__init__
+lxml.etree._RotatingErrorLog.__new__   lxml.etree._RotatingErrorLog-class.html#__new__
+lxml.etree._ListErrorLog.__contains__  lxml.etree._ListErrorLog-class.html#__contains__
+lxml.etree._ListErrorLog.filter_from_level     lxml.etree._ListErrorLog-class.html#filter_from_level
+lxml.etree._ListErrorLog.__len__       lxml.etree._ListErrorLog-class.html#__len__
+lxml.etree._ListErrorLog.__getitem__   lxml.etree._ListErrorLog-class.html#__getitem__
+lxml.etree._ListErrorLog.filter_levels lxml.etree._ListErrorLog-class.html#filter_levels
+lxml.etree._ErrorLog.__iter__  lxml.etree._ErrorLog-class.html#__iter__
+lxml.etree._ErrorLog.copy      lxml.etree._ErrorLog-class.html#copy
+lxml.etree._ListErrorLog.__nonzero__   lxml.etree._ListErrorLog-class.html#__nonzero__
+lxml.etree._ListErrorLog.filter_from_fatals    lxml.etree._ListErrorLog-class.html#filter_from_fatals
+lxml.etree._RotatingErrorLog.receive   lxml.etree._RotatingErrorLog-class.html#receive
+lxml.etree._ErrorLog.clear     lxml.etree._ErrorLog-class.html#clear
+lxml.etree._ListErrorLog.filter_from_errors    lxml.etree._ListErrorLog-class.html#filter_from_errors
+lxml.etree._ListErrorLog.filter_types  lxml.etree._ListErrorLog-class.html#filter_types
+lxml.etree._ListErrorLog.__repr__      lxml.etree._ListErrorLog-class.html#__repr__
+lxml.etree._SaxParserContext   lxml.etree._SaxParserContext-class.html
+lxml.etree._SaxParserContext.__new__   lxml.etree._SaxParserContext-class.html#__new__
+lxml.etree._SaxParserTarget    lxml.etree._SaxParserTarget-class.html
+lxml.etree._SaxParserTarget.__new__    lxml.etree._SaxParserTarget-class.html#__new__
+lxml.etree._TargetParserContext        lxml.etree._TargetParserContext-class.html
+lxml.etree._TargetParserContext.__new__        lxml.etree._TargetParserContext-class.html#__new__
+lxml.etree._TargetParserResult lxml.etree._TargetParserResult-class.html
+lxml.etree._TargetParserResult.__init__        lxml.etree._TargetParserResult-class.html#__init__
+lxml.etree._TempStore  lxml.etree._TempStore-class.html
+lxml.etree._TempStore.__new__  lxml.etree._TempStore-class.html#__new__
+lxml.etree._TempStore.__init__ lxml.etree._TempStore-class.html#__init__
+lxml.etree._Validator  lxml.etree._Validator-class.html
+lxml.etree._Validator.__new__  lxml.etree._Validator-class.html#__new__
+lxml.etree._Validator._clear_error_log lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid      lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message      lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log        lxml.etree._Validator-class.html#error_log
+lxml.etree._Validator.assert_  lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate lxml.etree._Validator-class.html#validate
+lxml.etree._XPathContext       lxml.etree._XPathContext-class.html
+lxml.etree._XPathContext.__new__       lxml.etree._XPathContext-class.html#__new__
+lxml.etree._BaseContext.eval_context   lxml.etree._BaseContext-class.html#eval_context
+lxml.etree._BaseContext.context_node   lxml.etree._BaseContext-class.html#context_node
+lxml.etree._XPathContext.__init__      lxml.etree._XPathContext-class.html#__init__
+lxml.etree._XPathEvaluatorBase lxml.etree._XPathEvaluatorBase-class.html
+lxml.etree._XPathEvaluatorBase.__new__ lxml.etree._XPathEvaluatorBase-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate        lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log       lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree._XPathEvaluatorBase.__init__        lxml.etree._XPathEvaluatorBase-class.html#__init__
+lxml.etree._XPathFunctionNamespaceRegistry     lxml.etree._XPathFunctionNamespaceRegistry-class.html
+lxml.etree._XPathFunctionNamespaceRegistry.prefix      lxml.etree._XPathFunctionNamespaceRegistry-class.html#prefix
+lxml.etree._XPathFunctionNamespaceRegistry.__new__     lxml.etree._XPathFunctionNamespaceRegistry-class.html#__new__
+lxml.etree._NamespaceRegistry.__getitem__      lxml.etree._NamespaceRegistry-class.html#__getitem__
+lxml.etree._NamespaceRegistry.update   lxml.etree._NamespaceRegistry-class.html#update
+lxml.etree._NamespaceRegistry.__iter__ lxml.etree._NamespaceRegistry-class.html#__iter__
+lxml.etree._NamespaceRegistry.iteritems        lxml.etree._NamespaceRegistry-class.html#iteritems
+lxml.etree._FunctionNamespaceRegistry.__delitem__      lxml.etree._FunctionNamespaceRegistry-class.html#__delitem__
+lxml.etree._NamespaceRegistry.items    lxml.etree._NamespaceRegistry-class.html#items
+lxml.etree._NamespaceRegistry.clear    lxml.etree._NamespaceRegistry-class.html#clear
+lxml.etree._FunctionNamespaceRegistry.__setitem__      lxml.etree._FunctionNamespaceRegistry-class.html#__setitem__
+lxml.etree._FunctionNamespaceRegistry.__repr__ lxml.etree._FunctionNamespaceRegistry-class.html#__repr__
+lxml.etree._XSLTContext        lxml.etree._XSLTContext-class.html
+lxml.etree._XSLTContext.__new__        lxml.etree._XSLTContext-class.html#__new__
+lxml.etree._BaseContext.eval_context   lxml.etree._BaseContext-class.html#eval_context
+lxml.etree._BaseContext.context_node   lxml.etree._BaseContext-class.html#context_node
+lxml.etree._XSLTContext.__init__       lxml.etree._XSLTContext-class.html#__init__
+lxml.etree._XSLTProcessingInstruction  lxml.etree._XSLTProcessingInstruction-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._XSLTProcessingInstruction.set      lxml.etree._XSLTProcessingInstruction-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text   lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._ProcessingInstruction.tag  lxml.etree._ProcessingInstruction-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._XSLTProcessingInstruction.__new__  lxml.etree._XSLTProcessingInstruction-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.PIBase.__init__     lxml.etree.PIBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree._XSLTProcessingInstruction.get      lxml.etree._XSLTProcessingInstruction-class.html#get
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._ProcessingInstruction.target       lxml.etree._ProcessingInstruction-class.html#target
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._ProcessingInstruction.__repr__     lxml.etree._ProcessingInstruction-class.html#__repr__
+lxml.etree._XSLTProcessingInstruction.parseXSL lxml.etree._XSLTProcessingInstruction-class.html#parseXSL
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._XSLTQuotedStringParam      lxml.etree._XSLTQuotedStringParam-class.html
+lxml.etree._XSLTQuotedStringParam.__new__      lxml.etree._XSLTQuotedStringParam-class.html#__new__
+lxml.etree._XSLTResolverContext        lxml.etree._XSLTResolverContext-class.html
+lxml.etree._XSLTResolverContext.__new__        lxml.etree._XSLTResolverContext-class.html#__new__
+lxml.etree._XSLTResultTree     lxml.etree._XSLTResultTree-class.html
+lxml.etree._ElementTree.getroot        lxml.etree._ElementTree-class.html#getroot
+lxml.etree._XSLTResultTree.__str__     lxml.etree._XSLTResultTree-class.html#__str__
+lxml.etree._ElementTree.parser lxml.etree._ElementTree-class.html#parser
+lxml.etree._ElementTree.parse  lxml.etree._ElementTree-class.html#parse
+lxml.etree._ElementTree.relaxng        lxml.etree._ElementTree-class.html#relaxng
+lxml.etree._ElementTree.findall        lxml.etree._ElementTree-class.html#findall
+lxml.etree._XSLTResultTree.__new__     lxml.etree._XSLTResultTree-class.html#__new__
+lxml.etree._ElementTree.findtext       lxml.etree._ElementTree-class.html#findtext
+lxml.etree._ElementTree.find   lxml.etree._ElementTree-class.html#find
+lxml.etree._ElementTree.write  lxml.etree._ElementTree-class.html#write
+lxml.etree._ElementTree._setroot       lxml.etree._ElementTree-class.html#_setroot
+lxml.etree._ElementTree.xpath  lxml.etree._ElementTree-class.html#xpath
+lxml.etree._ElementTree.iterfind       lxml.etree._ElementTree-class.html#iterfind
+lxml.etree._ElementTree.xslt   lxml.etree._ElementTree-class.html#xslt
+lxml.etree._ElementTree.__deepcopy__   lxml.etree._ElementTree-class.html#__deepcopy__
+lxml.etree._ElementTree.getpath        lxml.etree._ElementTree-class.html#getpath
+lxml.etree._ElementTree.write_c14n     lxml.etree._ElementTree-class.html#write_c14n
+lxml.etree._ElementTree.xmlschema      lxml.etree._ElementTree-class.html#xmlschema
+lxml.etree._ElementTree.xinclude       lxml.etree._ElementTree-class.html#xinclude
+lxml.etree._ElementTree.docinfo        lxml.etree._ElementTree-class.html#docinfo
+lxml.etree._XSLTResultTree.__unicode__ lxml.etree._XSLTResultTree-class.html#__unicode__
+lxml.etree._XSLTResultTree.xslt_profile        lxml.etree._XSLTResultTree-class.html#xslt_profile
+lxml.etree._ElementTree.iter   lxml.etree._ElementTree-class.html#iter
+lxml.etree._ElementTree.getiterator    lxml.etree._ElementTree-class.html#getiterator
+lxml.etree._ElementTree.__copy__       lxml.etree._ElementTree-class.html#__copy__
+lxml.etree.__ContentOnlyElement        lxml.etree.__ContentOnlyElement-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text   lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree.__ContentOnlyElement.__new__        lxml.etree.__ContentOnlyElement-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree.iterparse   lxml.etree.iterparse-class.html
+lxml.etree._BaseParser.set_element_class_lookup        lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree.iterparse.__init__  lxml.etree.iterparse-class.html#__init__
+lxml.etree.iterparse.__new__   lxml.etree.iterparse-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup   lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree.iterparse.next      lxml.etree.iterparse-class.html#next
+lxml.etree._BaseParser.version lxml.etree._BaseParser-class.html#version
+lxml.etree.iterparse.__next__  lxml.etree.iterparse-class.html#__next__
+lxml.etree._BaseParser.makeelement     lxml.etree._BaseParser-class.html#makeelement
+lxml.etree.iterparse.__iter__  lxml.etree.iterparse-class.html#__iter__
+lxml.etree.iterparse.copy      lxml.etree.iterparse-class.html#copy
+lxml.etree._BaseParser.resolvers       lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target  lxml.etree._BaseParser-class.html#target
+lxml.etree.iterparse.error_log lxml.etree.iterparse-class.html#error_log
+lxml.etree.iterparse.root      lxml.etree.iterparse-class.html#root
+lxml.etree.iterwalk    lxml.etree.iterwalk-class.html
+lxml.etree.iterwalk.__new__    lxml.etree.iterwalk-class.html#__new__
+lxml.etree.iterwalk.__next__   lxml.etree.iterwalk-class.html#__next__
+lxml.etree.iterwalk.next       lxml.etree.iterwalk-class.html#next
+lxml.etree.iterwalk.__iter__   lxml.etree.iterwalk-class.html#__iter__
+lxml.etree.iterwalk.__init__   lxml.etree.iterwalk-class.html#__init__
+lxml.html.CheckboxGroup        lxml.html.CheckboxGroup-class.html
+lxml.html.CheckboxGroup._value__del    lxml.html.CheckboxGroup-class.html#_value__del
+lxml.html.CheckboxGroup.value  lxml.html.CheckboxGroup-class.html#value
+lxml.html.CheckboxGroup._value__set    lxml.html.CheckboxGroup-class.html#_value__set
+lxml.html.CheckboxGroup.__repr__       lxml.html.CheckboxGroup-class.html#__repr__
+lxml.html.CheckboxGroup._value__get    lxml.html.CheckboxGroup-class.html#_value__get
+lxml.html.CheckboxValues       lxml.html.CheckboxValues-class.html
+lxml.html.CheckboxValues.__init__      lxml.html.CheckboxValues-class.html#__init__
+lxml.html.CheckboxValues.add   lxml.html.CheckboxValues-class.html#add
+lxml.html.CheckboxValues.__iter__      lxml.html.CheckboxValues-class.html#__iter__
+lxml.html.CheckboxValues.remove        lxml.html.CheckboxValues-class.html#remove
+lxml.html.CheckboxValues.__repr__      lxml.html.CheckboxValues-class.html#__repr__
+lxml.html.FieldsDict   lxml.html.FieldsDict-class.html
+lxml.html.FieldsDict.__init__  lxml.html.FieldsDict-class.html#__init__
+lxml.html.FieldsDict.__contains__      lxml.html.FieldsDict-class.html#__contains__
+lxml.html.FieldsDict.__getitem__       lxml.html.FieldsDict-class.html#__getitem__
+lxml.html.FieldsDict.keys      lxml.html.FieldsDict-class.html#keys
+lxml.html.FieldsDict.__delitem__       lxml.html.FieldsDict-class.html#__delitem__
+lxml.html.FieldsDict.__setitem__       lxml.html.FieldsDict-class.html#__setitem__
+lxml.html.FieldsDict.__repr__  lxml.html.FieldsDict-class.html#__repr__
+lxml.html.FormElement  lxml.html.FormElement-class.html
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.html.FormElement._fields__get     lxml.html.FormElement-class.html#_fields__get
+lxml.html.FormElement.form_values      lxml.html.FormElement-class.html#form_values
+lxml.html.FormElement._action__del     lxml.html.FormElement-class.html#_action__del
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.html.FormElement._fields__set     lxml.html.FormElement-class.html#_fields__set
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.html.FormElement._method__set     lxml.html.FormElement-class.html#_method__set
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.FormElement.fields   lxml.html.FormElement-class.html#fields
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.html.FormElement.method   lxml.html.FormElement-class.html#method
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.html.FormElement._action__get     lxml.html.FormElement-class.html#_action__get
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.html.FormElement._name    lxml.html.FormElement-class.html#_name
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.html.FormElement.action   lxml.html.FormElement-class.html#action
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.html.FormElement._method__get     lxml.html.FormElement-class.html#_method__get
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.html.FormElement._action__set     lxml.html.FormElement-class.html#_action__set
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.html.FormElement.inputs   lxml.html.FormElement-class.html#inputs
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.html.HTMLParser   lxml.html.HTMLParser-class.html
+lxml.etree._FeedParser.feed    lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup        lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close   lxml.etree._FeedParser-class.html#close
+lxml.html.HTMLParser.__init__  lxml.html.HTMLParser-class.html#__init__
+lxml.etree.HTMLParser.__new__  lxml.etree.HTMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup   lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement     lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy    lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers       lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target  lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log       lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log  lxml.etree._FeedParser-class.html#feed_error_log
+lxml.html.HtmlComment  lxml.html.HtmlComment-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text   lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Comment.tag        lxml.etree._Comment-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.CommentBase.__new__ lxml.etree.CommentBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.CommentBase.__init__        lxml.etree.CommentBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Comment.__repr__   lxml.etree._Comment-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.html.HtmlElement  lxml.html.HtmlElement-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.html.HtmlElementClassLookup       lxml.html.HtmlElementClassLookup-class.html
+lxml.html.HtmlElementClassLookup._default_element_classes      lxml.html.HtmlElementClassLookup-class.html#_default_element_classes
+lxml.etree.CustomElementClassLookup.__new__    lxml.etree.CustomElementClassLookup-class.html#__new__
+lxml.html.HtmlElementClassLookup.lookup        lxml.html.HtmlElementClassLookup-class.html#lookup
+lxml.etree.FallbackElementClassLookup.fallback lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback     lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.html.HtmlElementClassLookup.__init__      lxml.html.HtmlElementClassLookup-class.html#__init__
+lxml.html.HtmlEntity   lxml.html.HtmlEntity-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Entity.text        lxml.etree._Entity-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Entity.tag lxml.etree._Entity-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.EntityBase.__new__  lxml.etree.EntityBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.EntityBase.__init__ lxml.etree.EntityBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Entity.name        lxml.etree._Entity-class.html#name
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Entity.__repr__    lxml.etree._Entity-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.html.HtmlMixin    lxml.html.HtmlMixin-class.html
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.html.HtmlProcessingInstruction    lxml.html.HtmlProcessingInstruction-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.etree.__ContentOnlyElement.set    lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text   lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._ProcessingInstruction.tag  lxml.etree._ProcessingInstruction-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append lxml.etree.__ContentOnlyElement-class.html#append
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.PIBase.__new__      lxml.etree.PIBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.PIBase.__init__     lxml.etree.PIBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__delitem__    lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.etree.__ContentOnlyElement.__len__        lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.etree.__ContentOnlyElement.__getitem__    lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.get    lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree.__ContentOnlyElement.keys   lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__    lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.insert lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._ProcessingInstruction.target       lxml.etree._ProcessingInstruction-class.html#target
+lxml.etree.__ContentOnlyElement.items  lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._ProcessingInstruction.__repr__     lxml.etree._ProcessingInstruction-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree.__ContentOnlyElement.attrib lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.html.InputElement lxml.html.InputElement-class.html
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.html.InputMixin._name__del        lxml.html.InputMixin-class.html#_name__del
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.html.InputMixin._name__set        lxml.html.InputMixin-class.html#_name__set
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.InputMixin.name      lxml.html.InputMixin-class.html#name
+lxml.html.InputMixin._name__get        lxml.html.InputMixin-class.html#_name__get
+lxml.html.InputElement._type__set      lxml.html.InputElement-class.html#_type__set
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.InputMixin.__repr__  lxml.html.InputMixin-class.html#__repr__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.html.InputElement.checked lxml.html.InputElement-class.html#checked
+lxml.html.InputElement._type__get      lxml.html.InputElement-class.html#_type__get
+lxml.html.InputElement.type    lxml.html.InputElement-class.html#type
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.html.InputElement.checkable       lxml.html.InputElement-class.html#checkable
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.html.InputElement.value   lxml.html.InputElement-class.html#value
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.html.InputElement._value__del     lxml.html.InputElement-class.html#_value__del
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.html.InputElement._value__set     lxml.html.InputElement-class.html#_value__set
+lxml.html.InputElement._checked__set   lxml.html.InputElement-class.html#_checked__set
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.html.InputElement._value__get     lxml.html.InputElement-class.html#_value__get
+lxml.html.InputElement._checked__get   lxml.html.InputElement-class.html#_checked__get
+lxml.html.InputGetter  lxml.html.InputGetter-class.html
+lxml.html.InputGetter.__getitem__      lxml.html.InputGetter-class.html#__getitem__
+lxml.html.InputGetter.__contains__     lxml.html.InputGetter-class.html#__contains__
+lxml.html.InputGetter.keys     lxml.html.InputGetter-class.html#keys
+lxml.html.InputGetter.__iter__ lxml.html.InputGetter-class.html#__iter__
+lxml.html.InputGetter.__repr__ lxml.html.InputGetter-class.html#__repr__
+lxml.html.InputGetter._all_xpath       lxml.html.InputGetter-class.html#_all_xpath
+lxml.html.InputGetter.__init__ lxml.html.InputGetter-class.html#__init__
+lxml.html.InputGetter._name_xpath      lxml.html.InputGetter-class.html#_name_xpath
+lxml.html.InputMixin   lxml.html.InputMixin-class.html
+lxml.html.InputMixin.name      lxml.html.InputMixin-class.html#name
+lxml.html.InputMixin._name__get        lxml.html.InputMixin-class.html#_name__get
+lxml.html.InputMixin._name__set        lxml.html.InputMixin-class.html#_name__set
+lxml.html.InputMixin.__repr__  lxml.html.InputMixin-class.html#__repr__
+lxml.html.InputMixin._name__del        lxml.html.InputMixin-class.html#_name__del
+lxml.html.LabelElement lxml.html.LabelElement-class.html
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.html.LabelElement._for_element__get       lxml.html.LabelElement-class.html#_for_element__get
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.html.LabelElement.for_element     lxml.html.LabelElement-class.html#for_element
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.html.LabelElement._for_element__del       lxml.html.LabelElement-class.html#_for_element__del
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.html.LabelElement._for_element__set       lxml.html.LabelElement-class.html#_for_element__set
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.html.MultipleSelectOptions        lxml.html.MultipleSelectOptions-class.html
+lxml.html.MultipleSelectOptions.__init__       lxml.html.MultipleSelectOptions-class.html#__init__
+lxml.html.MultipleSelectOptions.add    lxml.html.MultipleSelectOptions-class.html#add
+lxml.html.MultipleSelectOptions.__iter__       lxml.html.MultipleSelectOptions-class.html#__iter__
+lxml.html.MultipleSelectOptions.remove lxml.html.MultipleSelectOptions-class.html#remove
+lxml.html.MultipleSelectOptions.__repr__       lxml.html.MultipleSelectOptions-class.html#__repr__
+lxml.html.MultipleSelectOptions.options        lxml.html.MultipleSelectOptions-class.html#options
+lxml.html.RadioGroup   lxml.html.RadioGroup-class.html
+lxml.html.RadioGroup._value__del       lxml.html.RadioGroup-class.html#_value__del
+lxml.html.RadioGroup.value_options     lxml.html.RadioGroup-class.html#value_options
+lxml.html.RadioGroup._value__set       lxml.html.RadioGroup-class.html#_value__set
+lxml.html.RadioGroup.value     lxml.html.RadioGroup-class.html#value
+lxml.html.RadioGroup.__repr__  lxml.html.RadioGroup-class.html#__repr__
+lxml.html.RadioGroup._value__get       lxml.html.RadioGroup-class.html#_value__get
+lxml.html.SelectElement        lxml.html.SelectElement-class.html
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.html.InputMixin._name__del        lxml.html.InputMixin-class.html#_name__del
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.html.InputMixin._name__set        lxml.html.InputMixin-class.html#_name__set
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.InputMixin.name      lxml.html.InputMixin-class.html#name
+lxml.html.InputMixin._name__get        lxml.html.InputMixin-class.html#_name__get
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.InputMixin.__repr__  lxml.html.InputMixin-class.html#__repr__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.html.SelectElement._multiple__set lxml.html.SelectElement-class.html#_multiple__set
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.html.SelectElement.value_options  lxml.html.SelectElement-class.html#value_options
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.html.SelectElement.value  lxml.html.SelectElement-class.html#value
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.html.SelectElement._value__del    lxml.html.SelectElement-class.html#_value__del
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.html.SelectElement.multiple       lxml.html.SelectElement-class.html#multiple
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.html.SelectElement._value__set    lxml.html.SelectElement-class.html#_value__set
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.html.SelectElement._multiple__get lxml.html.SelectElement-class.html#_multiple__get
+lxml.html.SelectElement._value__get    lxml.html.SelectElement-class.html#_value__get
+lxml.html.TextareaElement      lxml.html.TextareaElement-class.html
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.html.InputMixin._name__del        lxml.html.InputMixin-class.html#_name__del
+lxml.html.HtmlMixin.drop_tag   lxml.html.HtmlMixin-class.html#drop_tag
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks  lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url   lxml.html.HtmlMixin-class.html#base_url
+lxml.html.InputMixin._name__set        lxml.html.InputMixin-class.html#_name__set
+lxml.html.HtmlMixin.forms      lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get        lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.InputMixin.name      lxml.html.InputMixin-class.html#name
+lxml.html.InputMixin._name__get        lxml.html.InputMixin-class.html#_name__get
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.html.HtmlMixin.find_rel_links     lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.html.HtmlMixin.label      lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href  lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body       lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del        lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.html.HtmlMixin.cssselect  lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.InputMixin.__repr__  lxml.html.InputMixin-class.html#__repr__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree  lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.text_content       lxml.html.HtmlMixin-class.html#text_content
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links      lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin.head       lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.html.TextareaElement.value        lxml.html.TextareaElement-class.html#value
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.html.TextareaElement._value__del  lxml.html.TextareaElement-class.html#_value__del
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute        lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set        lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id  lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.html.TextareaElement._value__set  lxml.html.TextareaElement-class.html#_value__set
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.html.TextareaElement._value__get  lxml.html.TextareaElement-class.html#_value__get
+lxml.html.XHTMLParser  lxml.html.XHTMLParser-class.html
+lxml.etree._FeedParser.feed    lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup        lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close   lxml.etree._FeedParser-class.html#close
+lxml.html.XHTMLParser.__init__ lxml.html.XHTMLParser-class.html#__init__
+lxml.etree.XMLParser.__new__   lxml.etree.XMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup   lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement     lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy    lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers       lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target  lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log       lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log  lxml.etree._FeedParser-class.html#feed_error_log
+lxml.html._MethodFunc  lxml.html._MethodFunc-class.html
+lxml.html._MethodFunc.__call__ lxml.html._MethodFunc-class.html#__call__
+lxml.html._MethodFunc.__init__ lxml.html._MethodFunc-class.html#__init__
+lxml.html.clean.Cleaner        lxml.html.clean.Cleaner-class.html
+lxml.html.clean.Cleaner.annoying_tags  lxml.html.clean.Cleaner-class.html#annoying_tags
+lxml.html.clean.Cleaner.links  lxml.html.clean.Cleaner-class.html#links
+lxml.html.clean.Cleaner.allow_embedded_url     lxml.html.clean.Cleaner-class.html#allow_embedded_url
+lxml.html.clean.Cleaner.remove_unknown_tags    lxml.html.clean.Cleaner-class.html#remove_unknown_tags
+lxml.html.clean.Cleaner.clean_html     lxml.html.clean.Cleaner-class.html#clean_html
+lxml.html.clean.Cleaner.meta   lxml.html.clean.Cleaner-class.html#meta
+lxml.html.clean.Cleaner.page_structure lxml.html.clean.Cleaner-class.html#page_structure
+lxml.html.clean.Cleaner.frames lxml.html.clean.Cleaner-class.html#frames
+lxml.html.clean.Cleaner.allow_follow   lxml.html.clean.Cleaner-class.html#allow_follow
+lxml.html.clean.Cleaner.__init__       lxml.html.clean.Cleaner-class.html#__init__
+lxml.html.clean.Cleaner.style  lxml.html.clean.Cleaner-class.html#style
+lxml.html.clean.Cleaner.allow_tags     lxml.html.clean.Cleaner-class.html#allow_tags
+lxml.html.clean.Cleaner._remove_javascript_link        lxml.html.clean.Cleaner-class.html#_remove_javascript_link
+lxml.html.clean.Cleaner.comments       lxml.html.clean.Cleaner-class.html#comments
+lxml.html.clean.Cleaner.forms  lxml.html.clean.Cleaner-class.html#forms
+lxml.html.clean.Cleaner._substitute_comments   lxml.html.clean.Cleaner-class.html#_substitute_comments
+lxml.html.clean.Cleaner.kill_conditional_comments      lxml.html.clean.Cleaner-class.html#kill_conditional_comments
+lxml.html.clean.Cleaner.host_whitelist lxml.html.clean.Cleaner-class.html#host_whitelist
+lxml.html.clean.Cleaner.whitelist_tags lxml.html.clean.Cleaner-class.html#whitelist_tags
+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._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
+lxml.html.clean.Cleaner.add_nofollow   lxml.html.clean.Cleaner-class.html#add_nofollow
+lxml.html.clean.Cleaner.allow_element  lxml.html.clean.Cleaner-class.html#allow_element
+lxml.html.clean.Cleaner.scripts        lxml.html.clean.Cleaner-class.html#scripts
+lxml.html.clean.Cleaner._tag_link_attrs        lxml.html.clean.Cleaner-class.html#_tag_link_attrs
+lxml.html.clean.Cleaner.safe_attrs_only        lxml.html.clean.Cleaner-class.html#safe_attrs_only
+lxml.html.clean.Cleaner.embedded       lxml.html.clean.Cleaner-class.html#embedded
+lxml.html.diff.DEL_END lxml.html.diff.DEL_END-class.html
+lxml.html.diff.DEL_START       lxml.html.diff.DEL_START-class.html
+lxml.html.diff.InsensitiveSequenceMatcher      lxml.html.diff.InsensitiveSequenceMatcher-class.html
+lxml.html.diff.InsensitiveSequenceMatcher.get_matching_blocks  lxml.html.diff.InsensitiveSequenceMatcher-class.html#get_matching_blocks
+lxml.html.diff.InsensitiveSequenceMatcher.threshold    lxml.html.diff.InsensitiveSequenceMatcher-class.html#threshold
+lxml.html.diff.NoDeletes       lxml.html.diff.NoDeletes-class.html
+lxml.html.diff.href_token      lxml.html.diff.href_token-class.html
+lxml.html.diff.href_token.hide_when_equal      lxml.html.diff.href_token-class.html#hide_when_equal
+lxml.html.diff.token.__new__   lxml.html.diff.token-class.html#__new__
+lxml.html.diff.href_token.html lxml.html.diff.href_token-class.html#html
+lxml.html.diff.token.__repr__  lxml.html.diff.token-class.html#__repr__
+lxml.html.diff.tag_token       lxml.html.diff.tag_token-class.html
+lxml.html.diff.token.hide_when_equal   lxml.html.diff.token-class.html#hide_when_equal
+lxml.html.diff.tag_token.__new__       lxml.html.diff.tag_token-class.html#__new__
+lxml.html.diff.tag_token.html  lxml.html.diff.tag_token-class.html#html
+lxml.html.diff.tag_token.__repr__      lxml.html.diff.tag_token-class.html#__repr__
+lxml.html.diff.token   lxml.html.diff.token-class.html
+lxml.html.diff.token.hide_when_equal   lxml.html.diff.token-class.html#hide_when_equal
+lxml.html.diff.token.__new__   lxml.html.diff.token-class.html#__new__
+lxml.html.diff.token.html      lxml.html.diff.token-class.html#html
+lxml.html.diff.token.__repr__  lxml.html.diff.token-class.html#__repr__
+lxml.html.formfill.DefaultErrorCreator lxml.html.formfill.DefaultErrorCreator-class.html
+lxml.html.formfill.DefaultErrorCreator.error_container_tag     lxml.html.formfill.DefaultErrorCreator-class.html#error_container_tag
+lxml.html.formfill.DefaultErrorCreator.default_message lxml.html.formfill.DefaultErrorCreator-class.html#default_message
+lxml.html.formfill.DefaultErrorCreator.insert_before   lxml.html.formfill.DefaultErrorCreator-class.html#insert_before
+lxml.html.formfill.DefaultErrorCreator.error_message_class     lxml.html.formfill.DefaultErrorCreator-class.html#error_message_class
+lxml.html.formfill.DefaultErrorCreator.__call__        lxml.html.formfill.DefaultErrorCreator-class.html#__call__
+lxml.html.formfill.DefaultErrorCreator.block_inside    lxml.html.formfill.DefaultErrorCreator-class.html#block_inside
+lxml.html.formfill.DefaultErrorCreator.error_block_class       lxml.html.formfill.DefaultErrorCreator-class.html#error_block_class
+lxml.html.formfill.DefaultErrorCreator.__init__        lxml.html.formfill.DefaultErrorCreator-class.html#__init__
+lxml.html.formfill.FormNotFound        lxml.html.formfill.FormNotFound-class.html
+lxml.html.html5parser.HTMLParser       lxml.html.html5parser.HTMLParser-class.html
+lxml.html.html5parser.HTMLParser.__init__      lxml.html.html5parser.HTMLParser-class.html#__init__
+lxml.html.html5parser.XHTMLParser      lxml.html.html5parser.XHTMLParser-class.html
+lxml.html.html5parser.XHTMLParser.__init__     lxml.html.html5parser.XHTMLParser-class.html#__init__
+lxml.isoschematron.Schematron  lxml.isoschematron.Schematron-class.html
+lxml.isoschematron.Schematron._extract_rng     lxml.isoschematron.Schematron-class.html#_extract_rng
+lxml.etree._Validator._append_log_message      lxml.etree._Validator-class.html#_append_log_message
+lxml.isoschematron.Schematron.validation_report        lxml.isoschematron.Schematron-class.html#validation_report
+lxml.isoschematron.Schematron.validator_xslt   lxml.isoschematron.Schematron-class.html#validator_xslt
+lxml.isoschematron.Schematron._expand  lxml.isoschematron.Schematron-class.html#_expand
+lxml.etree._Validator.assert_  lxml.etree._Validator-class.html#assert_
+lxml.isoschematron.Schematron.__init__ lxml.isoschematron.Schematron-class.html#__init__
+lxml.etree._Validator.__new__  lxml.etree._Validator-class.html#__new__
+lxml.etree._Validator._clear_error_log lxml.etree._Validator-class.html#_clear_error_log
+lxml.isoschematron.Schematron._extract lxml.isoschematron.Schematron-class.html#_extract
+lxml.isoschematron.Schematron.__call__ lxml.isoschematron.Schematron-class.html#__call__
+lxml.isoschematron.Schematron._compile lxml.isoschematron.Schematron-class.html#_compile
+lxml.isoschematron.Schematron.schematron       lxml.isoschematron.Schematron-class.html#schematron
+lxml.isoschematron.Schematron._validation_errors       lxml.isoschematron.Schematron-class.html#_validation_errors
+lxml.isoschematron.Schematron._include lxml.isoschematron.Schematron-class.html#_include
+lxml.etree._Validator.validate lxml.etree._Validator-class.html#validate
+lxml.isoschematron.Schematron._level   lxml.isoschematron.Schematron-class.html#_level
+lxml.isoschematron.Schematron._domain  lxml.isoschematron.Schematron-class.html#_domain
+lxml.etree._Validator.assertValid      lxml.etree._Validator-class.html#assertValid
+lxml.isoschematron.Schematron._error_type      lxml.isoschematron.Schematron-class.html#_error_type
+lxml.etree._Validator.error_log        lxml.etree._Validator-class.html#error_log
+lxml.isoschematron.Schematron._extract_xsd     lxml.isoschematron.Schematron-class.html#_extract_xsd
+lxml.objectify.BoolElement     lxml.objectify.BoolElement-class.html
+lxml.objectify.NumberElement.__int__   lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__   lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr      lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.BoolElement.__str__     lxml.objectify.BoolElement-class.html#__str__
+lxml.objectify.BoolElement._init       lxml.objectify.BoolElement-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__  lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__  lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.BoolElement.__lt__      lxml.objectify.BoolElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__        lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__  lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__   lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.BoolElement.__gt__      lxml.objectify.BoolElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__   lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__  lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__  lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.objectify.BoolElement.__nonzero__ lxml.objectify.BoolElement-class.html#__nonzero__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths      lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__  lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__       lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__  lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__  lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__  lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__  lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall      lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren  lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.BoolElement.__le__      lxml.objectify.BoolElement-class.html#__le__
+lxml.objectify.NumberElement.__float__ lxml.objectify.NumberElement-class.html#__float__
+lxml.objectify.BoolElement.__ne__      lxml.objectify.BoolElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext     lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__  lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__   lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__   lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__  lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__mul__   lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rlshift__       lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__  lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__   lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__complex__       lxml.objectify.NumberElement-class.html#__complex__
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__   lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__      lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__        lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__   lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__     lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren        lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__        lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.objectify.BoolElement.__eq__      lxml.objectify.BoolElement-class.html#__eq__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__   lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.objectify.BoolElement.__hash__    lxml.objectify.BoolElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__   lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.BoolElement.__ge__      lxml.objectify.BoolElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__      lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind     lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__     lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__  lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__       lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.BoolElement.__new__     lxml.objectify.BoolElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser   lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__   lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__rpow__  lxml.objectify.NumberElement-class.html#__rpow__
+lxml.objectify.BoolElement.pyval       lxml.objectify.BoolElement-class.html#pyval
+lxml.objectify.BoolElement.__repr__    lxml.objectify.BoolElement-class.html#__repr__
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__or__    lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.__add__   lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__   lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__   lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.ElementMaker    lxml.objectify.ElementMaker-class.html
+lxml.objectify.ElementMaker.__new__    lxml.objectify.ElementMaker-class.html#__new__
+lxml.objectify.ElementMaker.__getattribute__   lxml.objectify.ElementMaker-class.html#__getattribute__
+lxml.objectify.ElementMaker.__getattr__        lxml.objectify.ElementMaker-class.html#__getattr__
+lxml.objectify.ElementMaker.__init__   lxml.objectify.ElementMaker-class.html#__init__
+lxml.objectify.FloatElement    lxml.objectify.FloatElement-class.html
+lxml.objectify.NumberElement.__int__   lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__   lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr      lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NumberElement.__str__   lxml.objectify.NumberElement-class.html#__str__
+lxml.objectify.FloatElement._init      lxml.objectify.FloatElement-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__  lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__  lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.NumberElement.__lt__    lxml.objectify.NumberElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__        lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__  lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__   lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.NumberElement.__gt__    lxml.objectify.NumberElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__   lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__  lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__  lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.objectify.NumberElement.__nonzero__       lxml.objectify.NumberElement-class.html#__nonzero__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths      lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__  lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__       lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__  lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__  lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__  lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__  lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall      lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren  lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.NumberElement.__le__    lxml.objectify.NumberElement-class.html#__le__
+lxml.objectify.NumberElement.__complex__       lxml.objectify.NumberElement-class.html#__complex__
+lxml.objectify.NumberElement.__ne__    lxml.objectify.NumberElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext     lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__  lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__   lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__   lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__  lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__mul__   lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rlshift__       lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__  lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__   lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__float__ lxml.objectify.NumberElement-class.html#__float__
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__   lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__      lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__        lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__   lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__     lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren        lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__        lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NumberElement.__eq__    lxml.objectify.NumberElement-class.html#__eq__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__   lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.objectify.NumberElement.__hash__  lxml.objectify.NumberElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__   lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.NumberElement.__ge__    lxml.objectify.NumberElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__      lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind     lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__     lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__  lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__       lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.FloatElement.__new__    lxml.objectify.FloatElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser   lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__   lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__rpow__  lxml.objectify.NumberElement-class.html#__rpow__
+lxml.objectify.NumberElement.pyval     lxml.objectify.NumberElement-class.html#pyval
+lxml.objectify.NumberElement.__repr__  lxml.objectify.NumberElement-class.html#__repr__
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__or__    lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.__add__   lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__   lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__   lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.IntElement      lxml.objectify.IntElement-class.html
+lxml.objectify.NumberElement.__int__   lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__   lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr      lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NumberElement.__str__   lxml.objectify.NumberElement-class.html#__str__
+lxml.objectify.IntElement._init        lxml.objectify.IntElement-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__  lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__  lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.NumberElement.__lt__    lxml.objectify.NumberElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__        lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__  lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__   lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.NumberElement.__gt__    lxml.objectify.NumberElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__   lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__  lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__  lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.objectify.NumberElement.__nonzero__       lxml.objectify.NumberElement-class.html#__nonzero__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths      lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__  lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__       lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__  lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__  lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__  lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__  lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall      lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren  lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.NumberElement.__le__    lxml.objectify.NumberElement-class.html#__le__
+lxml.objectify.NumberElement.__complex__       lxml.objectify.NumberElement-class.html#__complex__
+lxml.objectify.NumberElement.__ne__    lxml.objectify.NumberElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext     lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__  lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__   lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__   lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__  lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__mul__   lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rlshift__       lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__  lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__   lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__float__ lxml.objectify.NumberElement-class.html#__float__
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__   lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__      lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__        lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__   lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__     lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren        lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__        lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NumberElement.__eq__    lxml.objectify.NumberElement-class.html#__eq__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__   lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.objectify.NumberElement.__hash__  lxml.objectify.NumberElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__   lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.NumberElement.__ge__    lxml.objectify.NumberElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__      lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind     lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__     lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__  lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__       lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.IntElement.__new__      lxml.objectify.IntElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser   lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__   lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__rpow__  lxml.objectify.NumberElement-class.html#__rpow__
+lxml.objectify.NumberElement.pyval     lxml.objectify.NumberElement-class.html#pyval
+lxml.objectify.NumberElement.__repr__  lxml.objectify.NumberElement-class.html#__repr__
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__or__    lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.__add__   lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__   lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__   lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.LongElement     lxml.objectify.LongElement-class.html
+lxml.objectify.NumberElement.__int__   lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__   lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr      lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NumberElement.__str__   lxml.objectify.NumberElement-class.html#__str__
+lxml.objectify.LongElement._init       lxml.objectify.LongElement-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__  lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__  lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.NumberElement.__lt__    lxml.objectify.NumberElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__        lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__  lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__   lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.NumberElement.__gt__    lxml.objectify.NumberElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__   lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__  lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__  lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.objectify.NumberElement.__nonzero__       lxml.objectify.NumberElement-class.html#__nonzero__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths      lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__  lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__       lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__  lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__  lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__  lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__  lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall      lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren  lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.NumberElement.__le__    lxml.objectify.NumberElement-class.html#__le__
+lxml.objectify.NumberElement.__complex__       lxml.objectify.NumberElement-class.html#__complex__
+lxml.objectify.NumberElement.__ne__    lxml.objectify.NumberElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext     lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__  lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__   lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__   lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__  lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__mul__   lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rlshift__       lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__  lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__   lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__float__ lxml.objectify.NumberElement-class.html#__float__
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__   lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__      lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__        lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__   lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__     lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren        lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__        lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NumberElement.__eq__    lxml.objectify.NumberElement-class.html#__eq__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__   lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.objectify.NumberElement.__hash__  lxml.objectify.NumberElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__   lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.NumberElement.__ge__    lxml.objectify.NumberElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__      lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind     lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__     lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__  lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__       lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.LongElement.__new__     lxml.objectify.LongElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser   lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__   lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__rpow__  lxml.objectify.NumberElement-class.html#__rpow__
+lxml.objectify.NumberElement.pyval     lxml.objectify.NumberElement-class.html#pyval
+lxml.objectify.NumberElement.__repr__  lxml.objectify.NumberElement-class.html#__repr__
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__or__    lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.__add__   lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__   lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__   lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.NoneElement     lxml.objectify.NoneElement-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.objectify.ObjectifiedElement.addattr      lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NoneElement.__str__     lxml.objectify.NoneElement-class.html#__str__
+lxml.objectify.ObjectifiedElement.iterfind     lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__     lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.objectify.NoneElement.__lt__      lxml.objectify.NoneElement-class.html#__lt__
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.objectify.ObjectifiedElement.findall      lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.objectify.ObjectifiedElement.__setattr__  lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.objectify.NoneElement.__new__     lxml.objectify.NoneElement-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.objectify.ObjectifiedDataElement._setText lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getattr__  lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.find lxml.objectify.ObjectifiedElement-class.html#find
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.objectify.ObjectifiedElement.getchildren  lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.objectify.NoneElement.pyval       lxml.objectify.NoneElement-class.html#pyval
+lxml.objectify.ObjectifiedElement.__len__      lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.objectify.NoneElement.__ne__      lxml.objectify.NoneElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext     lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.objectify.ObjectifiedElement.__getitem__  lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.objectify.ObjectifiedElement.__reduce__   lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.objectify.ObjectifiedElement.__setitem__  lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.objectify.ObjectifiedElement.countchildren        lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NoneElement.__gt__      lxml.objectify.NoneElement-class.html#__gt__
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NoneElement.__eq__      lxml.objectify.NoneElement-class.html#__eq__
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__delitem__  lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NoneElement.__nonzero__ lxml.objectify.NoneElement-class.html#__nonzero__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.objectify.ObjectifiedElement.__iter__     lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.__delattr__  lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NoneElement.__le__      lxml.objectify.NoneElement-class.html#__le__
+lxml.objectify.ObjectifiedElement.descendantpaths      lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NoneElement.__repr__    lxml.objectify.NoneElement-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.objectify.NoneElement.__hash__    lxml.objectify.NoneElement-class.html#__hash__
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.objectify.NoneElement.__ge__      lxml.objectify.NoneElement-class.html#__ge__
+lxml.objectify.NumberElement   lxml.objectify.NumberElement-class.html
+lxml.objectify.NumberElement.__int__   lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__   lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr      lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NumberElement.__str__   lxml.objectify.NumberElement-class.html#__str__
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__  lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__  lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.NumberElement.__lt__    lxml.objectify.NumberElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__        lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__  lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__   lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.NumberElement.__gt__    lxml.objectify.NumberElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__   lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__  lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__  lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.objectify.NumberElement.__nonzero__       lxml.objectify.NumberElement-class.html#__nonzero__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths      lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__  lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__       lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__  lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__  lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__  lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__  lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall      lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren  lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.NumberElement.__le__    lxml.objectify.NumberElement-class.html#__le__
+lxml.objectify.NumberElement.__complex__       lxml.objectify.NumberElement-class.html#__complex__
+lxml.objectify.NumberElement.__ne__    lxml.objectify.NumberElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext     lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__  lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__   lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__   lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__  lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__repr__  lxml.objectify.NumberElement-class.html#__repr__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rpow__  lxml.objectify.NumberElement-class.html#__rpow__
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__  lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__   lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__float__ lxml.objectify.NumberElement-class.html#__float__
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__   lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__      lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__        lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__   lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__     lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren        lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__        lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NumberElement.__eq__    lxml.objectify.NumberElement-class.html#__eq__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__   lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.objectify.NumberElement.__hash__  lxml.objectify.NumberElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__   lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.NumberElement.__ge__    lxml.objectify.NumberElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__      lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind     lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__     lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__  lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__       lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.NumberElement.__new__   lxml.objectify.NumberElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser   lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__   lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__or__    lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.pyval     lxml.objectify.NumberElement-class.html#pyval
+lxml.objectify.NumberElement.__mul__   lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__rlshift__       lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.objectify.NumberElement.__add__   lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__   lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__   lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.ObjectPath      lxml.objectify.ObjectPath-class.html
+lxml.objectify.ObjectPath.addattr      lxml.objectify.ObjectPath-class.html#addattr
+lxml.objectify.ObjectPath.__new__      lxml.objectify.ObjectPath-class.html#__new__
+lxml.objectify.ObjectPath.setattr      lxml.objectify.ObjectPath-class.html#setattr
+lxml.objectify.ObjectPath.__str__      lxml.objectify.ObjectPath-class.html#__str__
+lxml.objectify.ObjectPath.hasattr      lxml.objectify.ObjectPath-class.html#hasattr
+lxml.objectify.ObjectPath.__call__     lxml.objectify.ObjectPath-class.html#__call__
+lxml.objectify.ObjectPath.find lxml.objectify.ObjectPath-class.html#find
+lxml.objectify.ObjectPath.__init__     lxml.objectify.ObjectPath-class.html#__init__
+lxml.objectify.ObjectifiedDataElement  lxml.objectify.ObjectifiedDataElement-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.objectify.ObjectifiedElement.addattr      lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.findtext     lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.objectify.ObjectifiedDataElement.__str__  lxml.objectify.ObjectifiedDataElement-class.html#__str__
+lxml.objectify.ObjectifiedElement.iterfind     lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__     lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.objectify.ObjectifiedElement.findall      lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.objectify.ObjectifiedElement.__setattr__  lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.objectify.ObjectifiedDataElement.__new__  lxml.objectify.ObjectifiedDataElement-class.html#__new__
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.objectify.ObjectifiedDataElement._setText lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getattr__  lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.find lxml.objectify.ObjectifiedElement-class.html#find
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.objectify.ObjectifiedElement.getchildren  lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.objectify.ObjectifiedElement.text lxml.objectify.ObjectifiedElement-class.html#text
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.objectify.ObjectifiedDataElement.pyval    lxml.objectify.ObjectifiedDataElement-class.html#pyval
+lxml.objectify.ObjectifiedElement.__len__      lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.objectify.ObjectifiedElement.__getitem__  lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.objectify.ObjectifiedElement.__reduce__   lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.objectify.ObjectifiedElement.__setitem__  lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.objectify.ObjectifiedElement.countchildren        lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__delitem__  lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.objectify.ObjectifiedElement.__iter__     lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.__delattr__  lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.objectify.ObjectifiedElement.descendantpaths      lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.ObjectifiedDataElement.__repr__ lxml.objectify.ObjectifiedDataElement-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.objectify.ObjectifiedElement      lxml.objectify.ObjectifiedElement-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.objectify.ObjectifiedElement.addattr      lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.ObjectifiedElement.__str__      lxml.objectify.ObjectifiedElement-class.html#__str__
+lxml.objectify.ObjectifiedElement.iterfind     lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__     lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.objectify.ObjectifiedElement.findall      lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.objectify.ObjectifiedElement.__setattr__  lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.objectify.ObjectifiedElement.__new__      lxml.objectify.ObjectifiedElement-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.objectify.ObjectifiedElement.findtext     lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getattr__  lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.find lxml.objectify.ObjectifiedElement-class.html#find
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.objectify.ObjectifiedElement.getchildren  lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.objectify.ObjectifiedElement.__len__      lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.objectify.ObjectifiedElement.__getitem__  lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.objectify.ObjectifiedElement.__reduce__   lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.objectify.ObjectifiedElement.__setitem__  lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.objectify.ObjectifiedElement.countchildren        lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__delitem__  lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.objectify.ObjectifiedElement.__iter__     lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.__delattr__  lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.objectify.ObjectifiedElement.descendantpaths      lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.objectify.ObjectifyElementClassLookup     lxml.objectify.ObjectifyElementClassLookup-class.html
+lxml.objectify.ObjectifyElementClassLookup.__new__     lxml.objectify.ObjectifyElementClassLookup-class.html#__new__
+lxml.objectify.ObjectifyElementClassLookup.__init__    lxml.objectify.ObjectifyElementClassLookup-class.html#__init__
+lxml.objectify.PyType  lxml.objectify.PyType-class.html
+lxml.objectify.PyType.stringify        lxml.objectify.PyType-class.html#stringify
+lxml.objectify.PyType.__new__  lxml.objectify.PyType-class.html#__new__
+lxml.objectify.PyType.xmlSchemaTypes   lxml.objectify.PyType-class.html#xmlSchemaTypes
+lxml.objectify.PyType.unregister       lxml.objectify.PyType-class.html#unregister
+lxml.objectify.PyType.register lxml.objectify.PyType-class.html#register
+lxml.objectify.PyType.__repr__ lxml.objectify.PyType-class.html#__repr__
+lxml.objectify.PyType.type_check       lxml.objectify.PyType-class.html#type_check
+lxml.objectify.PyType.__init__ lxml.objectify.PyType-class.html#__init__
+lxml.objectify.PyType.name     lxml.objectify.PyType-class.html#name
+lxml.objectify.StringElement   lxml.objectify.StringElement-class.html
+lxml.objectify.StringElement.__int__   lxml.objectify.StringElement-class.html#__int__
+lxml.objectify.ObjectifiedElement.addattr      lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.ObjectifiedDataElement.__str__  lxml.objectify.ObjectifiedDataElement-class.html#__str__
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.objectify.StringElement.__rmul__  lxml.objectify.StringElement-class.html#__rmul__
+lxml.objectify.StringElement.__lt__    lxml.objectify.StringElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.findall      lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__  lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.StringElement.__gt__    lxml.objectify.StringElement-class.html#__gt__
+lxml.objectify.ObjectifiedElement.__delitem__  lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.objectify.StringElement.__nonzero__       lxml.objectify.StringElement-class.html#__nonzero__
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.objectify.ObjectifiedElement.descendantpaths      lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.StringElement.__long__  lxml.objectify.StringElement-class.html#__long__
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.objectify.StringElement.__rmod__  lxml.objectify.StringElement-class.html#__rmod__
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.objectify.ObjectifiedElement.__setattr__  lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__  lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.find lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.ObjectifiedElement.getchildren  lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.StringElement.__float__ lxml.objectify.StringElement-class.html#__float__
+lxml.objectify.StringElement.__ne__    lxml.objectify.StringElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext     lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__  lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.objectify.ObjectifiedElement.__delattr__  lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.StringElement.__mul__   lxml.objectify.StringElement-class.html#__mul__
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.objectify.StringElement.__complex__       lxml.objectify.StringElement-class.html#__complex__
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.objectify.ObjectifiedElement.__len__      lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.objectify.ObjectifiedElement.__reduce__   lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__     lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren        lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.objectify.StringElement.__eq__    lxml.objectify.StringElement-class.html#__eq__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.objectify.StringElement.__mod__   lxml.objectify.StringElement-class.html#__mod__
+lxml.objectify.StringElement.__le__    lxml.objectify.StringElement-class.html#__le__
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.objectify.StringElement.__hash__  lxml.objectify.StringElement-class.html#__hash__
+lxml.objectify.StringElement.__ge__    lxml.objectify.StringElement-class.html#__ge__
+lxml.objectify.ObjectifiedElement.iterfind     lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__     lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.StringElement.__radd__  lxml.objectify.StringElement-class.html#__radd__
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.objectify.StringElement.strlen    lxml.objectify.StringElement-class.html#strlen
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.StringElement.__new__   lxml.objectify.StringElement-class.html#__new__
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.objectify.StringElement.pyval     lxml.objectify.StringElement-class.html#pyval
+lxml.objectify.StringElement.__repr__  lxml.objectify.StringElement-class.html#__repr__
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.objectify.StringElement.__add__   lxml.objectify.StringElement-class.html#__add__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.objectify._ObjectifyElementMakerCaller    lxml.objectify._ObjectifyElementMakerCaller-class.html
+lxml.objectify._ObjectifyElementMakerCaller.__new__    lxml.objectify._ObjectifyElementMakerCaller-class.html#__new__
+lxml.objectify._ObjectifyElementMakerCaller.__call__   lxml.objectify._ObjectifyElementMakerCaller-class.html#__call__
+lxml.sax.ElementTreeContentHandler     lxml.sax.ElementTreeContentHandler-class.html
+lxml.sax.ElementTreeContentHandler.startPrefixMapping  lxml.sax.ElementTreeContentHandler-class.html#startPrefixMapping
+lxml.sax.ElementTreeContentHandler.endPrefixMapping    lxml.sax.ElementTreeContentHandler-class.html#endPrefixMapping
+lxml.sax.ElementTreeContentHandler.etree       lxml.sax.ElementTreeContentHandler-class.html#etree
+lxml.sax.ElementTreeContentHandler.processingInstruction       lxml.sax.ElementTreeContentHandler-class.html#processingInstruction
+lxml.sax.ElementTreeContentHandler.endElement  lxml.sax.ElementTreeContentHandler-class.html#endElement
+lxml.sax.ElementTreeContentHandler._get_etree  lxml.sax.ElementTreeContentHandler-class.html#_get_etree
+lxml.sax.ElementTreeContentHandler.startElement        lxml.sax.ElementTreeContentHandler-class.html#startElement
+lxml.sax.ElementTreeContentHandler.setDocumentLocator  lxml.sax.ElementTreeContentHandler-class.html#setDocumentLocator
+lxml.sax.ElementTreeContentHandler.startDocument       lxml.sax.ElementTreeContentHandler-class.html#startDocument
+lxml.sax.ElementTreeContentHandler.startElementNS      lxml.sax.ElementTreeContentHandler-class.html#startElementNS
+lxml.sax.ElementTreeContentHandler.characters  lxml.sax.ElementTreeContentHandler-class.html#characters
+lxml.sax.ElementTreeContentHandler.endDocument lxml.sax.ElementTreeContentHandler-class.html#endDocument
+lxml.sax.ElementTreeContentHandler.ignorableWhitespace lxml.sax.ElementTreeContentHandler-class.html#ignorableWhitespace
+lxml.sax.ElementTreeContentHandler.__init__    lxml.sax.ElementTreeContentHandler-class.html#__init__
+lxml.sax.ElementTreeContentHandler.endElementNS        lxml.sax.ElementTreeContentHandler-class.html#endElementNS
+lxml.sax.ElementTreeProducer   lxml.sax.ElementTreeProducer-class.html
+lxml.sax.ElementTreeProducer._build_qname      lxml.sax.ElementTreeProducer-class.html#_build_qname
+lxml.sax.ElementTreeProducer.saxify    lxml.sax.ElementTreeProducer-class.html#saxify
+lxml.sax.ElementTreeProducer.__init__  lxml.sax.ElementTreeProducer-class.html#__init__
+lxml.sax.ElementTreeProducer._recursive_saxify lxml.sax.ElementTreeProducer-class.html#_recursive_saxify
+lxml.sax.SaxError      lxml.sax.SaxError-class.html
+lxml.etree.LxmlError.__init__  lxml.etree.LxmlError-class.html#__init__
+lxml.tests.common_imports.HelperTestCase       lxml.tests.common_imports.HelperTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.common_imports.LargeFileLike        lxml.tests.common_imports.LargeFileLike-class.html
+lxml.tests.common_imports.LargeFileLike.read   lxml.tests.common_imports.LargeFileLike-class.html#read
+lxml.tests.common_imports.LargeFileLike.iterelements   lxml.tests.common_imports.LargeFileLike-class.html#iterelements
+lxml.tests.common_imports.LargeFileLike.__init__       lxml.tests.common_imports.LargeFileLike-class.html#__init__
+lxml.tests.common_imports.LargeFileLikeUnicode lxml.tests.common_imports.LargeFileLikeUnicode-class.html
+lxml.tests.common_imports.LargeFileLike.read   lxml.tests.common_imports.LargeFileLike-class.html#read
+lxml.tests.common_imports.LargeFileLikeUnicode.iterelements    lxml.tests.common_imports.LargeFileLikeUnicode-class.html#iterelements
+lxml.tests.common_imports.LargeFileLikeUnicode.__init__        lxml.tests.common_imports.LargeFileLikeUnicode-class.html#__init__
+lxml.tests.common_imports.SillyFileLike        lxml.tests.common_imports.SillyFileLike-class.html
+lxml.tests.common_imports.SillyFileLike.read   lxml.tests.common_imports.SillyFileLike-class.html#read
+lxml.tests.common_imports.SillyFileLike.__init__       lxml.tests.common_imports.SillyFileLike-class.html#__init__
+lxml.tests.test_classlookup.ClassLookupTestCase        lxml.tests.test_classlookup.ClassLookupTestCase-class.html
+lxml.tests.test_classlookup.ClassLookupTestCase.tearDown       lxml.tests.test_classlookup.ClassLookupTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_classlookup.ClassLookupTestCase.test_attribute_based_lookup    lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_attribute_based_lookup
+lxml.tests.test_classlookup.ClassLookupTestCase.test_default_class_lookup      lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_default_class_lookup
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_classlookup.ClassLookupTestCase.test_class_lookup_reentry      lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_class_lookup_reentry
+lxml.tests.test_classlookup.ClassLookupTestCase.test_namespace_lookup  lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_namespace_lookup
+lxml.tests.test_classlookup.ClassLookupTestCase.test_parser_based_lookup       lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_parser_based_lookup
+lxml.tests.test_classlookup.ClassLookupTestCase.test_lookup_without_fallback   lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_lookup_without_fallback
+lxml.tests.test_classlookup.ClassLookupTestCase.test_custom_lookup     lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup
+lxml.tests.test_classlookup.ClassLookupTestCase.etree  lxml.etree-module.html
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_classlookup.ClassLookupTestCase.test_custom_lookup_ns_fallback lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup_ns_fallback
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_css.CSSTestCase        lxml.tests.test_css.CSSTestCase-class.html
+lxml.tests.test_css.CSSTestCase.all    lxml.tests.test_css.CSSTestCase-class.html#all
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_css.CSSTestCase.shortDescription       lxml.tests.test_css.CSSTestCase-class.html#shortDescription
+lxml.tests.test_css.CSSTestCase.__init__       lxml.tests.test_css.CSSTestCase-class.html#__init__
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_css.CSSTestCase.selectors      lxml.tests.test_css.CSSTestCase-class.html#selectors
+lxml.tests.test_css.CSSTestCase.runTest        lxml.tests.test_css.CSSTestCase-class.html#runTest
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_dtd.ETreeDtdTestCase   lxml.tests.test_dtd.ETreeDtdTestCase-class.html
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_parse_valid      lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_broken   lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_broken
+lxml.tests.test_dtd.ETreeDtdTestCase.test_parse_file_dtd       lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_parse_file_dtd
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_stringio lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_stringio
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_parse_invalid    lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_invalid
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_internal_invalid lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal_invalid
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_assertValid      lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_assertValid
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_parse_file_not_found     lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_file_not_found
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_parse_valid_relative     lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_relative
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_file     lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_file
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_internal lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal
+lxml.tests.test_dtd.ETreeDtdTestCase.test_iterparse_file_dtd   lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_iterparse_file_dtd
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_invalid  lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_invalid
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd  lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd
+lxml.tests.test_elementtree.CElementTreeTestCase       lxml.tests.test_elementtree.CElementTreeTestCase-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_iter       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_reversed  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_pi       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElement    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_subelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_empty     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_crash     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_end        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_cdata lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_ET     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_ET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes3 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes3
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity_unknown        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElementFile        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElementFile
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_nonexistent      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_nonexistent
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder_target  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_cdata     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_empty  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_empty
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_double    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_double
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_negative     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_getitem_getslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_getitem_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_subelement        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_unknown   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_latin1        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_latin1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_contains    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iselement   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iselement
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_del_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_del_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy_elementtree     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_tag   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_tag
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_sequence   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_sequence
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes_ns       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_bytes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_bytes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_attrib        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_default_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib_resolve        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_empty  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_step       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_child_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_child_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_replace     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_with_encoding lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_with_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_element_boolean    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_element_boolean
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_getset      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_getset
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_mapping   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_mapping
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail1       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_beyond_index lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_beyond_index
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_getiterator       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_insert  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_set_clear    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_set_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_text       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_default    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_write   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_none       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_broken    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_broken
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_empty_default    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_empty_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_indexerror  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_indexerror
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_file      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext_child      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_parse_stringio        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_property      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_property
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_crash       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_utf8_bom   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_utf8_bom
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_namespaces_after_serialize  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_namespaces_after_serialize
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_invalid_args     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_wrong_unicode_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_move     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XML lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_setting  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_setting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_elementtree        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_ElementTreeDoctest    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_contains  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_explicit        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_str_subclass   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_simple      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_simple
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_fail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_fail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_comment  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_none       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_root_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_root_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_override        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_sub   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_only_text  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_only_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_tostring        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_makeelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_makeelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_none    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve_new lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_getchildren        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_getchildren
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_nonexisting  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_nonexisting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_single       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_single     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes2 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_set       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_set
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_elementtree_root       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_elementtree_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_whitespace  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_whitespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_extend      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_extend
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_memory     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_memory
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_append     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_encoding lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi_nonsense lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_ns        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_unknown  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator_filter      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_replace_slice_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_replace_slice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_text_only lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_text_only
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_cET    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_cET
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertEncodingDeclaration        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertEncodingDeclaration
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_ns_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_ns_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_str_subclass   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_register_namespace  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_with_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_write_default_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_write_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_out     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_out
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_unicode lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_unicode
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_clear        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_reference        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_reference
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_twice      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_twice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_stringio      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ElementTree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ElementTree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_cmp   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_cmp
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text2 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_version      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_version
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstring  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_dict       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_dict
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_move_elements     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_move_elements
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_multiple_elementrees        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_multiple_elementrees
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_nonsense    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_str       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_str
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_del_child lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_del_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_xml   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_xml
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_comment    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_comment
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_exact      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_exact
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_attrib_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_attrib_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_parser_target   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_parser_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setitem lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setitem
+lxml.tests.test_elementtree.CElementTreeTestCase.etree lxml.tests.test_elementtree.CElementTreeTestCase-class.html#etree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start_end lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_from_file       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_from_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_incomplete  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_append lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_other  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_other
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative1  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns_parsed     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_root       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iter        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_namespaces lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_namespaces
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_xmlns_move        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_xmlns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_keywords    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_keywords
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_default  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_processinginstruction       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_processinginstruction
+lxml.tests.test_elementtree.ETreeTestCaseBase._rootstring      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_rootstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setslice        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_all      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_manipulation      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_manipulation
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access2
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_attr     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_attr
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element_tree      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element_tree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_in      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_in
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_tag_parse        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_tag_parse
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_string    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_string
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_html   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_with_text       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_large     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_large
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_position  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_position
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertXML        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertXML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_html        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_characters   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_characters
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_iterator  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_iterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_data  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_data
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XMLID       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XMLID
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_weird_dict_interaction      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_weird_dict_interaction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes
+lxml.tests.test_elementtree.ETreeTestCase      lxml.tests.test_elementtree.ETreeTestCase-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_iter       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_reversed  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_pi       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElement    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_subelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_empty     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_crash     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_end        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_cdata lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_ET     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_ET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes3 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes3
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity_unknown        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElementFile        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElementFile
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_nonexistent      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_nonexistent
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder_target  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_cdata     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_empty  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_empty
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_double    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_double
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_negative     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_getitem_getslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_getitem_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_subelement        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_unknown   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_latin1        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_latin1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_contains    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iselement   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iselement
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_del_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_del_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy_elementtree     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_tag   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_tag
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_sequence   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_sequence
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes_ns       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_bytes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_bytes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_attrib        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_default_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib_resolve        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_empty  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_step       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_child_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_child_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_replace     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_with_encoding lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_with_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_element_boolean    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_element_boolean
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_getset      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_getset
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_mapping   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_mapping
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail1       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_beyond_index lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_beyond_index
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_getiterator       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_insert  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_set_clear    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_set_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_text       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_default    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_write   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_none       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_broken    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_broken
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_empty_default    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_empty_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_indexerror  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_indexerror
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_file      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext_child      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_parse_stringio        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_property      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_property
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_crash       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_utf8_bom   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_utf8_bom
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_namespaces_after_serialize  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_namespaces_after_serialize
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_invalid_args     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_wrong_unicode_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_move     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XML lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_setting  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_setting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_elementtree        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_ElementTreeDoctest    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_contains  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_explicit        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_str_subclass   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_simple      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_simple
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_fail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_fail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_comment  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_none       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_root_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_root_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_override        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_sub   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_only_text  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_only_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_tostring        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_makeelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_makeelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_none    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve_new lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_getchildren        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_getchildren
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_nonexisting  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_nonexisting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_single       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_single     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes2 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_set       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_set
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_elementtree_root       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_elementtree_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_whitespace  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_whitespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_extend      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_extend
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_memory     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_memory
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_append     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_encoding lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi_nonsense lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_ns        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_unknown  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator_filter      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_replace_slice_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_replace_slice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_text_only lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_text_only
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_cET    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_cET
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertEncodingDeclaration        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertEncodingDeclaration
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_ns_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_ns_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_str_subclass   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_register_namespace  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_with_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_write_default_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_write_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_out     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_out
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_unicode lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_unicode
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_clear        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_reference        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_reference
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_twice      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_twice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_stringio      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ElementTree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ElementTree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_cmp   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_cmp
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text2 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_version      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_version
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstring  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_dict       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_dict
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_move_elements     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_move_elements
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_multiple_elementrees        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_multiple_elementrees
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_nonsense    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_str       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_str
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_del_child lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_del_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_xml   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_xml
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_comment    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_comment
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_exact      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_exact
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_attrib_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_attrib_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_parser_target   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_parser_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setitem lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setitem
+lxml.tests.test_elementtree.ETreeTestCase.etree        lxml.etree-module.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start_end lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_from_file       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_from_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_incomplete  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_append lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_other  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_other
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative1  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns_parsed     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_root       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iter        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_namespaces lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_namespaces
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_xmlns_move        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_xmlns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_keywords    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_keywords
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_default  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_processinginstruction       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_processinginstruction
+lxml.tests.test_elementtree.ETreeTestCaseBase._rootstring      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_rootstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setslice        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_all      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_manipulation      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_manipulation
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access2
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_attr     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_attr
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element_tree      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element_tree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_in      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_in
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_tag_parse        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_tag_parse
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_string    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_string
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_html   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_with_text       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_large     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_large
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_position  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_position
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertXML        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertXML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_html        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_characters   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_characters
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_iterator  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_iterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_data  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_data
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XMLID       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XMLID
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_weird_dict_interaction      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_weird_dict_interaction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_iter       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_cdata lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_pi       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElement    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_subelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_empty     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_crash     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_end        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_reversed  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_ET     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_ET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes3 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes3
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity_unknown        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElementFile        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElementFile
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_nonexistent      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_nonexistent
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_cdata     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_empty  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_empty
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_double    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_double
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_negative     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_getitem_getslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_getitem_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_subelement        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_unknown   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_latin1        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_latin1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_contains    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iselement   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iselement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iter        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy_elementtree     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_tag   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_tag
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext_child      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_sequence   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_sequence
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib_resolve        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_bytes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_bytes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_attrib        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_default_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes_ns       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_empty  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_step       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_child_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_child_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_replace     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_with_encoding lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_with_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_element_boolean    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_element_boolean
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_getset      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_getset
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_mapping   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_mapping
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_file      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_stringio      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_getiterator       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_insert  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_set_clear    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_set_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_string    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_string
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_default    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_write   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_broken    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_broken
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_empty_default    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_empty_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_indexerror  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_indexerror
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_parse_stringio        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail1       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_whitespace  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_whitespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_crash       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_utf8_bom   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_utf8_bom
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_namespaces_after_serialize  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_namespaces_after_serialize
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_invalid_args     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_wrong_unicode_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_override        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_move     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XML lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_setting  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_setting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_elementtree        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_contains  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text2 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_explicit        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_str_subclass   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_simple      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_simple
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_fail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_fail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_comment  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_none       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_none       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_sub   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_only_text  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_only_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_tostring        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_makeelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_makeelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_none    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve_new lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_nonexisting  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_nonexisting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_single       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_single     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes2 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_set       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_set
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_elementtree_root       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_elementtree_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_extend      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_extend
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_default  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_memory     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_memory
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_append     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi_nonsense lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_ns        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_unknown  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator_filter      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_cET    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_cET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_replace_slice_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_replace_slice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_text_only lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_text_only
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertEncodingDeclaration        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertEncodingDeclaration
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_del_child lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_del_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_str_subclass   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_register_namespace  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_xml   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_xml
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_with_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_write_default_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_write_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_text       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setslice        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_out     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_out
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_unicode lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_unicode
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_clear        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_reference        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_reference
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_twice      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_twice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_beyond_index lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_beyond_index
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ElementTree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ElementTree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_cmp   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_cmp
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_position  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_position
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_version      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_version
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_parser_target   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_parser_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstring  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_dict       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_dict
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_move_elements     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_move_elements
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_multiple_elementrees        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_multiple_elementrees
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_nonsense    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_str       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_str
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_ns_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_ns_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_exact      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_exact
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_attrib_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_attrib_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setitem lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.etree    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#etree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start_end lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_from_file       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_from_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_incomplete  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_append lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_append
+lxml.tests.test_elementtree.ETreeTestCaseBase._rootstring      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_rootstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_other  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_other
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative1  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns_parsed     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder_target  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_root       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_del_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_del_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_namespaces lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_namespaces
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_processinginstruction       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_processinginstruction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_xmlns_move        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_xmlns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_keywords    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_keywords
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_getchildren        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_getchildren
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_encoding lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_ElementTreeDoctest    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_all      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XMLID       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XMLID
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_manipulation      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_manipulation
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access2
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_attr     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_attr
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_large     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_large
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element_tree      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element_tree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_in      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_in
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_tag_parse        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_tag_parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_html   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_weird_dict_interaction      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_weird_dict_interaction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_with_text       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_root_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_root_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertXML        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertXML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_comment    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_html        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_property      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_property
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_characters   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_characters
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_iterator  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_iterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_data  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_data
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes
+lxml.tests.test_elementtree.ElementTreeTestCase        lxml.tests.test_elementtree.ElementTreeTestCase-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_iter       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_cdata lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_pi       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElement    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_subelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_crash     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_end        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_reversed  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_ET     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_ET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes3 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes3
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parser_target_entity_unknown      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parser_target_entity_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElementFile        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElementFile
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_nonexistent      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_nonexistent
+lxml.tests.test_elementtree.ElementTreeTestCase.test_fromstringlist_characters lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_fromstringlist_characters
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_cdata     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_empty  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_empty
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_double    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_double
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_negative     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_getitem_getslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_getitem_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_subelement        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_unknown   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_latin1        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_latin1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_contains    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear
+lxml.tests.test_elementtree.ElementTreeTestCase.test_feed_parser_error_close_empty     lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_feed_parser_error_close_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iselement   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iselement
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_del_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_del_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy_elementtree     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_tag   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_tag
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_sequence   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_sequence
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes_ns       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_bytes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_bytes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_attrib        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_default_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib_resolve        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_empty  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_step       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_child_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_child_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_replace     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace
+lxml.tests.test_elementtree.ElementTreeTestCase.test_fromstringlist    lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_fromstringlist
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_with_encoding lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_with_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_element_boolean    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_element_boolean
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_getset      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_getset
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_mapping   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_mapping
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail1       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_beyond_index lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_beyond_index
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail
+lxml.tests.test_elementtree.ElementTreeTestCase.test_comment_whitespace        lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_comment_whitespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_negative
+lxml.tests.test_elementtree.ElementTreeTestCase.test_write_method_text lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_write_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_insert  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_set_clear    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_set_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_text       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_empty     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_default    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_write   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_none       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_none
+lxml.tests.test_elementtree.ElementTreeTestCase.test_feed_parser_error_broken  lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_feed_parser_error_broken
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_empty_default    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_empty_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_indexerror  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_indexerror
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_file      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_file
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parse_error_from_file     lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parse_error_from_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object
+lxml.tests.test_elementtree.ElementTreeTestCase.test_itertext_child    lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_itertext_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_parse_stringio        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder_target  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_crash       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_utf8_bom   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_utf8_bom
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_namespaces_after_serialize  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_namespaces_after_serialize
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_invalid_args     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_wrong_unicode_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parse_encoding_8bit_override      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_move     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XML lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_setting  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_setting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_elementtree        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_ElementTreeDoctest    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_contains  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_contains
+lxml.tests.test_elementtree.ElementTreeTestCase.test_itertext  lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_itertext
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parse_encoding_8bit_explicit      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_str_subclass   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_simple      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_simple
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_fail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_fail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_comment  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_none       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_root_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_root_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_sub   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parser_target_property    lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parser_target_property
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_tostring        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_makeelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_makeelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_only_text  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_only_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_none    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve_new lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_getchildren        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_getchildren
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_nonexisting  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_nonexisting
+lxml.tests.test_elementtree.ElementTreeTestCase.test_fromstringlist_single     lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_fromstringlist_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_single     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes2 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_set       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_set
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_elementtree_root       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_elementtree_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy
+lxml.tests.test_elementtree.ElementTreeTestCase.test_extend    lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_extend
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_memory     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_memory
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parse_error       lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parse_error
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_append     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_encoding lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi_nonsense lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_ns        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_unknown  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator_filter      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_replace_slice_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_replace_slice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_text_only lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_text_only
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_cET    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_cET
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertEncodingDeclaration        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertEncodingDeclaration
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_ns_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_ns_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_str_subclass   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail
+lxml.tests.test_elementtree.ElementTreeTestCase.test_register_namespace        lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_register_namespace
+lxml.tests.test_elementtree.ElementTreeTestCase.test_tostring_method_text      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_tostring_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_with_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_write_default_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_write_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element_tail
+lxml.tests.test_elementtree.ElementTreeTestCase.test_write_method_html lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_write_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_out     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_out
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_unicode lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_unicode
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_clear        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_reference        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_reference
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_twice      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_twice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_stringio      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ElementTree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ElementTree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_cmp   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_cmp
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text2 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_version      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_version
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstring  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_dict       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_dict
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_move_elements     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_move_elements
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_multiple_elementrees        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_multiple_elementrees
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_nonsense    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_str       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_str
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_del_child lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_del_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_xml   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_xml
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_comment    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_comment
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_exact      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_exact
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_attrib_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_attrib_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_parser_target   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_parser_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setitem lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setitem
+lxml.tests.test_elementtree.ElementTreeTestCase.etree  xml.etree.ElementTree-module.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start_end lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative2
+lxml.tests.test_elementtree.ElementTreeTestCase.test_feed_parser_error_close_incomplete        lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_feed_parser_error_close_incomplete
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_append lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_other  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_other
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative1  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns_parsed     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_root       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2
+lxml.tests.test_elementtree.ElementTreeTestCase.test_iter      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_namespaces lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_namespaces
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_getiterator       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_xmlns_move        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_xmlns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_keywords    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_keywords
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_default  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_processinginstruction       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_processinginstruction
+lxml.tests.test_elementtree.ETreeTestCaseBase._rootstring      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_rootstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setslice        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_all      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_tail       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_manipulation      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_manipulation
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access2
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_attr     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_attr
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element_tree      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element_tree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_in      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_in
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_tag_parse        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_tag_parse
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_string    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_string
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_with_text       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_large     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_large
+lxml.tests.test_elementtree.ElementTreeTestCase.test_feed_parser_error_position        lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_feed_parser_error_position
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertXML        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertXML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree.ElementTreeTestCase.test_tostring_method_html      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_tostring_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem2
+lxml.tests.test_elementtree.ElementTreeTestCase.test_comment_text      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_comment_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_iterator  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_iterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_data  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_data
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XMLID       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XMLID
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_weird_dict_interaction      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_weird_dict_interaction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes
+lxml.tests.test_errors.ErrorTestCase   lxml.tests.test_errors.ErrorTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_errors.ErrorTestCase.test_bad_element  lxml.tests.test_errors.ErrorTestCase-class.html#test_bad_element
+lxml.tests.test_errors.ErrorTestCase.etree     lxml.etree-module.html
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_errors.ErrorTestCase.test_element_cyclic_gc_none       lxml.tests.test_errors.ErrorTestCase-class.html#test_element_cyclic_gc_none
+lxml.tests.test_errors.ErrorTestCase.test_empty_parse  lxml.tests.test_errors.ErrorTestCase-class.html#test_empty_parse
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeC14NTestCase        lxml.tests.test_etree.ETreeC14NTestCase-class.html
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_exclusive    lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_exclusive
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_tostring_exclusive   lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_exclusive
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_gzip lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_gzip
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_element_tostring_with_comments       lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_with_comments
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_file lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_tostring_with_comments       lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_with_comments
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n      lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_with_comments        lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_with_comments
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_element_tostring_exclusive   lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_exclusive
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_file_gzip    lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file_gzip
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeErrorLogTest        lxml.tests.test_etree.ETreeErrorLogTest-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeErrorLogTest._test_python_error_logging     lxml.tests.test_etree.ETreeErrorLogTest-class.html#_test_python_error_logging
+lxml.tests.test_etree.ETreeErrorLogTest.etree  lxml.etree-module.html
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.ETreeErrorLogTest.test_parse_error_logging       lxml.tests.test_etree.ETreeErrorLogTest-class.html#test_parse_error_logging
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeOnlyTestCase        lxml.tests.test_etree.ETreeOnlyTestCase-class.html
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_root      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root
+lxml.tests.test_etree.ETreeOnlyTestCase.test_dump_none lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dump_none
+lxml.tests.test_etree.ETreeOnlyTestCase.test_unicode_byte_invalid_sequence     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid_sequence
+lxml.tests.test_etree.ETreeOnlyTestCase.test_nsmap_prefix_invalid      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_nsmap_prefix_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase._writeElement  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#_writeElement
+lxml.tests.test_etree.ETreeOnlyTestCase.test_xml_base  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_xml_base
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterchildren_tag  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_elementtree    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_elementtree
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_start    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_root_pi   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_pi  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_space       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_space
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_pi        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_deepcopy_elementtree_pi   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_name_quote     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_quote
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_start_end        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_end
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parseid   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parseid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_fileobject_unicode  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_fileobject_unicode
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_strip   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_strip
+lxml.tests.test_etree.ETreeOnlyTestCase.test_html_base_tag     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_xml_base_attribute        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_xml_base_attribute
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_standalone       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_standalone
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_root_comment      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getiterator_filter_all_comment_pi lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_all_comment_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_remove_comments lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_remove_comments
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode_element_tail     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_element_tail
+lxml.tests.test_etree.ETreeOnlyTestCase.etree  lxml.etree-module.html
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_name_space        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_space
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tag_ns_all      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_all
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_empty       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_replace   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace
+lxml.tests.test_etree.ETreeOnlyTestCase.test_docinfo_empty     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getiterator_filter_element        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_elements_ns lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_append_error      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_append_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_error      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_iterparse_start        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_start
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_getiterator      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_getiterator
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode_pretty   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_pretty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_c_api     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_c_api
+lxml.tests.test_etree.ETreeOnlyTestCase.test_standalone        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_standalone
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_encoding_8bit_override  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_8bit_override
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_reuse_after_move       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_reuse_after_move
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_text_resolve        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_text_resolve
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_broken  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_broken
+lxml.tests.test_etree.ETreeOnlyTestCase.test_elementtree_parser_target_type_error      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_parser_target_type_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_elements    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_namespace_localname lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_namespace_localname
+lxml.tests.test_etree.ETreeOnlyTestCase.test_findall_ns        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_comment_immutable lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_immutable
+lxml.tests.test_etree.ETreeOnlyTestCase.test_attribute_set_invalid     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_nsmap  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_nsmap
+lxml.tests.test_etree.ETreeOnlyTestCase.test_comment_empty     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_pi_parse  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_parse
+lxml.tests.test_etree.ETreeOnlyTestCase.test_XML_set_base_url_docinfo  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XML_set_base_url_docinfo
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setitem_assert    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setitem_assert
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_step_overrun     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_overrun
+lxml.tests.test_etree.ETreeOnlyTestCase.test_itersiblings      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_base_url_docinfo    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_base_url_docinfo
+lxml.tests.test_etree.ETreeOnlyTestCase.test_replace_new       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace_new
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_error     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tag     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_feed_exception      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_feed_exception
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_attrib_ns        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_attrib_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_parse  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_parse
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_pis     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_pis
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getparent lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getparent
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode_element lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_doctype_name_only_roundtrip       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_name_only_roundtrip
+lxml.tests.test_etree.ETreeOnlyTestCase.test_unicode_byte_zero lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_zero
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_tag      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespace_cleanup lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_name_quote        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_quote
+lxml.tests.test_etree.ETreeOnlyTestCase.test_comment_no_proxy_yet      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_no_proxy_yet
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_element     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_pretty   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_pretty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_filename_dtd_relative     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd_relative
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_string_dtd        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_string_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious_root_comment  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_root_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags_pi_comment     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_filelike_dtd      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filelike_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_keep_cdata      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_keep_cdata
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_names     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_names
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_nsmap     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_nsmap
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_filename_dtd      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode_element  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_byte_invalid      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterancestors_tag lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_none     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_none
+lxml.tests.test_etree.ETreeOnlyTestCase.test_version   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_version
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_comment   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_attributes  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_step_negative2   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative2
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_clear    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_clear
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_values     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_values
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_iterparse_end  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_end
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterchildren_tag_reversed lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_reversed
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_attribute_invalid      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_attribute_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_default_and_attr       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_and_attr
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tag_ns  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_name_colon        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_colon
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_copy_element   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_copy_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_encoding_unknown   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding_unknown
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_default_copy_element   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_copy_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags_ns     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_name_empty        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_attribute_set     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterchildren      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getroottree       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getroottree
+lxml.tests.test_etree.ETreeOnlyTestCase.test_attribute_values  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_values
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious_root_pi       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_root_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_method_text_unicode      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_method_text_unicode
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_recover     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_recover
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata_errors      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_errors
+lxml.tests.test_etree.ETreeOnlyTestCase.test_deepcopy_elementtree_dtd  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags_pi_comment_all lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment_all
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode_none     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_none
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_element        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_element
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tree_comments   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tree_comments
+lxml.tests.test_etree.ETreeOnlyTestCase.test_byte_zero lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_zero
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_stringio_base_url   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_stringio_base_url
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata_xpath       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_xpath
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious_pi    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_elementtree_findall_qname lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_qname
+lxml.tests.test_etree.ETreeOnlyTestCase.test_XMLDTDID  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XMLDTDID
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_method_text_encoding     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_method_text_encoding
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_parser_type_error   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_parser_type_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_elementtree_find_qname    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_find_qname
+lxml.tests.test_etree.ETreeOnlyTestCase.test_encoding_tostring_utf16   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_encoding_tostring_utf16
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode_pretty  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_pretty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_fromstring_exception        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_fromstring_exception
+lxml.tests.test_etree.ETreeOnlyTestCase.test_docinfo_system    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_system
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_attributes_ns       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_remove_pis  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_pis
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_encoding_error  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_docinfo_public    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_public
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_colon       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_colon
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_cdata       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_cdata
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_empty     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getnext   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getnext
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_name_empty     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_encoding   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_default        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default
+lxml.tests.test_etree.ETreeOnlyTestCase.test_itersiblings_tag  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata_type        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_type
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_name_colon     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_colon
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_all_empty_reversed       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_all_empty_reversed
+lxml.tests.test_etree.ETreeOnlyTestCase.test_doctype_output_override   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_output_override
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getprevious       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getprevious
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_XML    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_XML
+lxml.tests.test_etree.ETreeOnlyTestCase.test_unicode_byte_invalid      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterdescendants_tag       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_comment_parse_empty       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_parse_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_etree.ETreeOnlyTestCase.test_docinfo_name_only lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_name_only
+lxml.tests.test_etree.ETreeOnlyTestCase.test_XML_base_url_docinfo      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XML_base_url_docinfo
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_comments        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_comments
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_with_tail        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_with_tail
+lxml.tests.test_etree.ETreeOnlyTestCase.test_prefix_default_ns lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix_default_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getiterator_filter_namespace      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_namespace
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_remove_comments     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_comments
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_append     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_append
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_name_space     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_space
+lxml.tests.test_etree.ETreeOnlyTestCase.test_prefix    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix
+lxml.tests.test_etree.ETreeOnlyTestCase._checkIDDict   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#_checkIDDict
+lxml.tests.test_etree.ETreeOnlyTestCase.test_attribute_has_key lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_has_key
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious_comment       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_index     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_index
+lxml.tests.test_etree.ETreeOnlyTestCase.test_HTML_base_url_docinfo     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_HTML_base_url_docinfo
+lxml.tests.test_etree.ETreeOnlyTestCase.test_feed_parser_recover       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_feed_parser_recover
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterchildren_reversed     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_reversed
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_bytes_dtd lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_bytes_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_file_dtd  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_file_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_parse      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_parse
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_step_negative    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative
+lxml.tests.test_etree.ETreeOnlyTestCase.test_deepcopy_pi       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags_doc_style      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_doc_style
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode
+lxml.tests.test_etree.ETreeOnlyTestCase.test_dtd_io    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dtd_io
+lxml.tests.test_etree.ETreeOnlyTestCase.test_XMLDTDID_empty    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XMLDTDID_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getiterator_filter_entities       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_entities
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterdescendants   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tag_all lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_all
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode_none    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_none
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterancestors     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_step     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata_parser      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_parser
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_tag_all  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag_all
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_standalone_in_out        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_standalone_in_out
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode_element_tail    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_element_tail
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_restructure        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_restructure
+lxml.tests.test_etree.ETreeOnlyTestCase.test_elementtree_findall_ns_qname      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_ns_qname
+lxml.tests.test_etree.ETreeOnlyTestCase.test_html_base lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_comment     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_pi        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi
+lxml.tests.test_etree.ETreeWriteTestCase       lxml.tests.test_etree.ETreeWriteTestCase-class.html
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_file_gzip  lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzip
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_etree.ETreeWriteTestCase.test_write    lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_file       lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_gzip_level lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_gzip_level
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_file_gzipfile_parse        lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzipfile_parse
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_gzip       lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_gzip
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_file_gzip_parse    lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzip_parse
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeXIncludeTestCase    lxml.tests.test_etree.ETreeXIncludeTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude   lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeXIncludeTestCase.include    lxml.tests.test_etree.ETreeXIncludeTestCase-class.html#include
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_resolver  lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_resolver
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_text      lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_text
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ElementIncludeTestCase   lxml.tests.test_etree.ElementIncludeTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.ElementIncludeTestCase.ElementInclude    lxml.ElementInclude-module.html
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude   lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_etree.ElementIncludeTestCase.include   lxml.tests.test_etree.ElementIncludeTestCase-class.html#include
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_resolver  lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_resolver
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_text      lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_text
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.XIncludeTestCase lxml.tests.test_etree.XIncludeTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude   lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_resolver  lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_resolver
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_text      lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_text
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_htmlparser.HtmlParserTestCase  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_broken  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_broken
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_cdata   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_cdata
+lxml.tests.test_htmlparser.HtmlParserTestCase.tearDown lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#tearDown
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_subelement_name_colon  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_colon
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_element_name_quote     lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_quote
+lxml.tests.test_htmlparser.HtmlParserTestCase.uhtml_str        lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#uhtml_str
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_parse_html_filelike  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_filelike
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_pretty_print    lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_pretty_print
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_subelement_name_empty  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_empty
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_parse_html_norecover lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_norecover
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_default_parser_HTML_broken  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_default_parser_HTML_broken
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_subelement_name_space  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_space
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_htmlparser.HtmlParserTestCase.etree    lxml.etree-module.html
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_iterparse      lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_unicode lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_unicode
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_parse_html   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_element_name_colon     lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_colon
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_file_error     lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_file_error
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_subelement_name_quote  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_quote
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_parse_encoding_8bit_override        lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_htmlparser.HtmlParserTestCase.broken_html_str  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#broken_html_str
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_parse_html_error     lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_error
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_iterparse_file lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_file
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_access  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_access
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_parse_encoding_8bit_explicit        lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_element_name_empty     lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_empty
+lxml.tests.test_htmlparser.HtmlParserTestCase.html_str lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#html_str
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_element_name_space     lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_space
+lxml.tests.test_htmlparser.HtmlParserTestCase.html_str_pretty  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#html_str_pretty
+lxml.tests.test_io.ETreeIOTestCase     lxml.tests.test_io.ETreeIOTestCase-class.html
+lxml.tests.test_io.IOTestCaseBase.buildNodes   lxml.tests.test_io.IOTestCaseBase-class.html#buildNodes
+lxml.tests.test_io.IOTestCaseBase.tearDown     lxml.tests.test_io.IOTestCaseBase-class.html#tearDown
+lxml.tests.test_io.IOTestCaseBase.test_write_filename  lxml.tests.test_io.IOTestCaseBase-class.html#test_write_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_fileobject  lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_fileobject
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_gzipobject lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_gzipobject
+lxml.tests.test_io.IOTestCaseBase.getTestFilePath      lxml.tests.test_io.IOTestCaseBase-class.html#getTestFilePath
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_error   lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_error
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_large_fileobject   lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_large_fileobject
+lxml.tests.test_io.ETreeIOTestCase.etree       lxml.etree-module.html
+lxml.tests.test_io.IOTestCaseBase.test_tree_io_latin1  lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io_latin1
+lxml.tests.test_io.IOTestCaseBase.setUp        lxml.tests.test_io.IOTestCaseBase-class.html#setUp
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename    lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename_remove_previous    lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename_remove_previous
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_io.IOTestCaseBase.test_tree_io lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_late_error      lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_late_error
+lxml.tests.test_io.IOTestCaseBase.test_write_invalid_filename  lxml.tests.test_io.IOTestCaseBase-class.html#test_write_invalid_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_unamed_fileobject   lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_unamed_fileobject
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_type_error      lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_type_error
+lxml.tests.test_io.ElementTreeIOTestCase       lxml.tests.test_io.ElementTreeIOTestCase-class.html
+lxml.tests.test_io.IOTestCaseBase.buildNodes   lxml.tests.test_io.IOTestCaseBase-class.html#buildNodes
+lxml.tests.test_io.IOTestCaseBase.tearDown     lxml.tests.test_io.IOTestCaseBase-class.html#tearDown
+lxml.tests.test_io.IOTestCaseBase.test_write_filename  lxml.tests.test_io.IOTestCaseBase-class.html#test_write_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_fileobject  lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_fileobject
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_gzipobject lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_gzipobject
+lxml.tests.test_io.IOTestCaseBase.getTestFilePath      lxml.tests.test_io.IOTestCaseBase-class.html#getTestFilePath
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_error   lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_error
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_large_fileobject   lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_large_fileobject
+lxml.tests.test_io.ElementTreeIOTestCase.etree xml.etree.ElementTree-module.html
+lxml.tests.test_io.IOTestCaseBase.test_tree_io_latin1  lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io_latin1
+lxml.tests.test_io.IOTestCaseBase.setUp        lxml.tests.test_io.IOTestCaseBase-class.html#setUp
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename    lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename_remove_previous    lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename_remove_previous
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_io.IOTestCaseBase.test_tree_io lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_late_error      lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_late_error
+lxml.tests.test_io.IOTestCaseBase.test_write_invalid_filename  lxml.tests.test_io.IOTestCaseBase-class.html#test_write_invalid_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_unamed_fileobject   lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_unamed_fileobject
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_type_error      lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_type_error
+lxml.tests.test_io.IOTestCaseBase      lxml.tests.test_io.IOTestCaseBase-class.html
+lxml.tests.test_io.IOTestCaseBase.buildNodes   lxml.tests.test_io.IOTestCaseBase-class.html#buildNodes
+lxml.tests.test_io.IOTestCaseBase.tearDown     lxml.tests.test_io.IOTestCaseBase-class.html#tearDown
+lxml.tests.test_io.IOTestCaseBase.test_write_filename  lxml.tests.test_io.IOTestCaseBase-class.html#test_write_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_fileobject  lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_fileobject
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_gzipobject lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_gzipobject
+lxml.tests.test_io.IOTestCaseBase.getTestFilePath      lxml.tests.test_io.IOTestCaseBase-class.html#getTestFilePath
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_error   lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_error
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_large_fileobject   lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_large_fileobject
+lxml.tests.test_io.IOTestCaseBase.etree        lxml.tests.test_io.IOTestCaseBase-class.html#etree
+lxml.tests.test_io.IOTestCaseBase.test_tree_io_latin1  lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io_latin1
+lxml.tests.test_io.IOTestCaseBase.setUp        lxml.tests.test_io.IOTestCaseBase-class.html#setUp
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename    lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename_remove_previous    lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename_remove_previous
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_io.IOTestCaseBase.test_tree_io lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_late_error      lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_late_error
+lxml.tests.test_io.IOTestCaseBase.test_write_invalid_filename  lxml.tests.test_io.IOTestCaseBase-class.html#test_write_invalid_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_unamed_fileobject   lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_unamed_fileobject
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_type_error      lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_type_error
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase       lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_store_xslt    lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_xslt
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_call  lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_call
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_validate      lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_validate
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_from_element  lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_element
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_invalid_schema_namespace      lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_namespace
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_from_file     lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_file
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_assertValid   lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_assertValid
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_customization lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_customization
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_phases_kwarg  lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases_kwarg
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_error_log     lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_error_log
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_invalid_schema_empty  lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_empty
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_result_report lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_result_report
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_empty_pattern lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_empty_pattern
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_store_schematron      lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_schematron
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_invalid_args  lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_args
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_elementtree_error     lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_elementtree_error
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_relaxng_embedded      lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_relaxng_embedded
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron       lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_abstract      lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_abstract
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_phases        lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_xmlschema_embedded    lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_xmlschema_embedded
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_from_tree     lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_tree
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase        lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_ns_classes        lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_ns_classes
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.tearDown       lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#tearDown
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_create_element_default    lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element_default
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class  lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class-class.html
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_default_tagname   lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_default_tagname
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class     lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.setUp  lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#setUp
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_create_element    lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_element_creation  lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_element_creation
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class    lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_registry  lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_registry
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class    lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class.bluff      lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html#bluff
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class  lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class     lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html
+lxml.etree._Element.getprevious        lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set        lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent  lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text       lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind   lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init      lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap      lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace    lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix     lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag        lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter       lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext    lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious        lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find       lxml.etree._Element-class.html#find
+lxml.etree._Element.append     lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext    lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index      lxml.etree._Element-class.html#index
+lxml.etree.ElementBase.__new__ lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__       lxml.etree._Element-class.html#__contains__
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class.maeh        lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html#maeh
+lxml.etree._Element.findtext   lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail       lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree        lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants    lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren        lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__        lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.__len__    lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath      lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__        lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get        lxml.etree._Element-class.html#get
+lxml.etree._Element.keys       lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__       lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement        lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__   lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base       lxml.etree._Element-class.html#base
+lxml.etree._Element.insert     lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren       lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors      lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend     lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__        lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__       lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings       lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__        lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items      lxml.etree._Element-class.html#items
+lxml.etree._Element.clear      lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext   lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall    lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__        lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove     lxml.etree._Element-class.html#remove
+lxml.etree._Element.values     lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__   lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator        lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib     lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__   lxml.etree._Element-class.html#__copy__
+lxml.tests.test_objectify.ObjectifyTestCase    lxml.tests.test_objectify.ObjectifyTestCase-class.html
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_nested       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_nested
+lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_partial_allneg       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_allneg
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_bool_cmp lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool_cmp
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_floattelement  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_floattelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_unregistered     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_unregistered
+lxml.tests.test_objectify.ObjectifyTestCase.test_xml_base      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base
+lxml.tests.test_objectify.ObjectifyTestCase.test_pytype_annotation_use_old     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_use_old
+lxml.tests.test_objectify.ObjectifyTestCase.test_registered_types      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_types
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_data_element_nsmap_custom lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_element_nsmap_default     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_default
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_nonexistant     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_nonexistant
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_list      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_xsiannotate_ignore_old        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsiannotate_ignore_old
+lxml.tests.test_objectify.ObjectifyTestCase.test_schema_types  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_attrib_attributes_precedence     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_attrib_attributes_precedence
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_dot       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot
+lxml.tests.test_objectify.ObjectifyTestCase.test_pyannotate_use_old    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_use_old
+lxml.tests.test_objectify.ObjectifyTestCase.test_build_tree    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_build_tree
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str
+lxml.tests.test_objectify.ObjectifyTestCase.test_element_nsmap_empty   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_empty
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_dot_root_list     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_float_hash       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash
+lxml.tests.test_objectify.ObjectifyTestCase.test_setitem_string        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_hash lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_hash
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_dot_list  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_pytypes  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytypes
+lxml.tests.test_objectify.ObjectifyTestCase.test_xml_base_attribute    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base_attribute
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr_create_element    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_element
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_invalid_pytype  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_pytype
+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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_addattr_element       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr_element
+lxml.tests.test_objectify.ObjectifyTestCase.test_pyannotate_ignore_old lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_ignore_old
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_fail      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_ns        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns
+lxml.tests.test_objectify.ObjectifyTestCase.test_pyannotate_empty      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_empty
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_attrib       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_attrib
+lxml.tests.test_objectify.ObjectifyTestCase.test_class_lookup  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_class_lookup
+lxml.tests.test_objectify.ObjectifyTestCase.test_change_pytype_attribute       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_change_pytype_attribute
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_index_fail_lookup lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_lookup
+lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_partial      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path
+lxml.tests.test_objectify.ObjectifyTestCase.test_addattr_list  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_partial_wrong_length lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_wrong_length
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_default_absolute  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_absolute
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_index_fail_parse  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_parse
+lxml.tests.test_objectify.ObjectifyTestCase.test_findall_ns    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall_ns
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_ns_list   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_descendant_paths_prefix       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_prefix
+lxml.tests.test_objectify.ObjectifyTestCase.tearDown   lxml.tests.test_objectify.ObjectifyTestCase-class.html#tearDown
+lxml.tests.test_objectify.ObjectifyTestCase.test_pytype_xsitype_annotation     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_xsitype_annotation
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_elementtree    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_elementtree
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_int_hash lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int_hash
+lxml.tests.test_objectify.ObjectifyTestCase.test_parse_stringio_base_url       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_stringio_base_url
+lxml.tests.test_objectify.ObjectifyTestCase.test_setitem_string_special        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string_special
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_intliteral  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_intliteral
+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_root  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_root
+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
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_bool lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_bool
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_intelement     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_intelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_xsitypes lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle
+lxml.tests.test_objectify.ObjectifyTestCase._test_pickle       lxml.tests.test_objectify.ObjectifyTestCase-class.html#_test_pickle
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_index     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_set_create        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_element_nsmap_custom      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr
+lxml.tests.test_objectify.ObjectifyTestCase.test_xsinil_deannotate     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsinil_deannotate
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_float    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float
+lxml.tests.test_objectify.ObjectifyTestCase.test_dataelement_xsi_prefix_error  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_prefix_error
+lxml.tests.test_objectify.ObjectifyTestCase.setUp      lxml.tests.test_objectify.ObjectifyTestCase-class.html#setUp
+lxml.tests.test_objectify.ObjectifyTestCase.test_setattr       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_cmp  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_cmp
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_pytype_none     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_none
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_element_nsmap_custom_prefixes     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom_prefixes
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_index_list        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr_element   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_element
+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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_data_element_nsmap_empty  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_empty
+lxml.tests.test_objectify.ObjectifyTestCase.test_getslice_partial      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_partial
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_str      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_xsitype lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_xsitype
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_sequence     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_sequence
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr_create    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_set_element       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_element
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_str_intliteral   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_intliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_str  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_str
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_ustr     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_none lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_none
+lxml.tests.test_objectify.ObjectifyTestCase.test_str   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_str
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_syntax    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_syntax
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_bool     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_NoneType lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_NoneType
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_NoneType lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_NoneType
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_getattr_empty_ns        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr_empty_ns
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_xsdprefixed
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_float        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_float
+lxml.tests.test_objectify.ObjectifyTestCase.test_element_nsmap_default lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_default
+lxml.tests.test_objectify.ObjectifyTestCase.test_pytype_annotation_empty       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_empty
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_addattr lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_addattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_complete     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_complete
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_xsitypes_prefixed        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_prefixed
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr_create_list       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_list
+lxml.tests.test_objectify.ObjectifyTestCase.XML        lxml.tests.test_objectify.ObjectifyTestCase-class.html#XML
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_data_element_nsmap_custom_prefixes        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom_prefixes
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_invalid_xsi      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_invalid_xsi
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_boolelement    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_boolelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_dataelement_xsi       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi
+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_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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_floatliteral        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_floatliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_noneelement    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_noneelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_addattr       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_XML_set_base_url_docinfo      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_XML_set_base_url_docinfo
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_set       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_int      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int
+lxml.tests.test_objectify.ObjectifyTestCase.test_registered_type_stringify     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_type_stringify
+lxml.tests.test_objectify.ObjectifyTestCase.test_dir   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dir
+lxml.tests.test_objectify.ObjectifyTestCase.test_findall       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_add lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_add
+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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_int      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_unregistered     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_unregistered
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_str_floatliteral lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_floatliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_mul  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_mul
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_ustr_intliteral  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr_intliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_set_create_element        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_element
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_add  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_add
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_float    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_pytype  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_mul lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_mul
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_invalid_xsi     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_xsi
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_getattr lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_data_element_nsmap_default        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_default
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_objectify.ObjectifyTestCase.test_descendant_paths_child        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_child
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_fail_parse_empty_list     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_pytype_annotation     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_int_cmp  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int_cmp
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_strelement     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_strelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_set_ro  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_set_ro
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_intliteral   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_intliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_element_nsmap_custom_prefixes lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_custom_prefixes
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg
+lxml.tests.test_objectify.ObjectifyTestCase.test_vars  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_vars
+lxml.tests.test_objectify.ObjectifyTestCase.test_child lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child
+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_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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_descendant_paths      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_as_float     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_float
+lxml.tests.test_objectify.ObjectifyTestCase.test_deannotate    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_deannotate
+lxml.tests.test_objectify.ObjectifyTestCase.test_getslice_complete     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_complete
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_unicode      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_unicode
+lxml.tests.test_objectify.ObjectifyTestCase.test_set_string    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_set_string
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_index_neg       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_index_neg
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_objectify.ObjectifyTestCase.test_standard_lookup       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_standard_lookup
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_iter    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_iter
+lxml.tests.test_objectify.ObjectifyTestCase.test_countchildren lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_countchildren
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_get_default    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get_default
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_attrib lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_attrib
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.tearDown   lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#tearDown
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getitem_neg    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem_neg
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase._setClassLookup    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#_setClassLookup
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getparent      lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getparent
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_iterchildren   lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_len    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_len
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getnext        lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getnext
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_iterchildren_tag       lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren_tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_prefix lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_prefix
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getprevious    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getprevious
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_text   lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_text
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase._buildElementClass lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#_buildElementClass
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_bool   lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_bool
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_tag    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML        lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.etree      lxml.etree-module.html
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup        lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getitem        lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_keep_ref_assertion     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_keep_ref_assertion
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getchildren    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getchildren
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_tail   lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tail
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_get    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getslice       lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getslice
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_sourceline     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_sourceline
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_iter_children  lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iter_children
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase   lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_multiple_elementrees lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_multiple_elementrees
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng      lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_stringio     lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_stringio
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_invalid_schema       lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_shortcut     lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_shortcut
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_invalid_schema4      lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema4
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_invalid_schema2      lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema2
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_invalid_schema3      lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema3
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_include      lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_include
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_elementtree_error    lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_elementtree_error
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_error        lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_error
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_sax.ETreeSaxTestCase   lxml.tests.test_sax.ETreeSaxTestCase-class.html
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_comment    lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment
+lxml.tests.test_sax.ETreeSaxTestCase.test_element_sax_ns       lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax_ns
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_sax.ETreeSaxTestCase._saxify_unsaxify  lxml.tests.test_sax.ETreeSaxTestCase-class.html#_saxify_unsaxify
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_comment_root       lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment_root
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_error      lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_error2     lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error2
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_pi_root    lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi_root
+lxml.tests.test_sax.ETreeSaxTestCase.test_element_sax  lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_redefine_ns        lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_redefine_ns
+lxml.tests.test_sax.ETreeSaxTestCase._saxify_serialize lxml.tests.test_sax.ETreeSaxTestCase-class.html#_saxify_serialize
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_pi lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_simple     lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_simple
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_double     lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_double
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_ns1        lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns1
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_attributes lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_attributes
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_ns2        lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns2
+lxml.tests.test_sax.ETreeSaxTestCase.test_sax_to_pulldom       lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_sax_to_pulldom
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_handler_default_ns lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_handler_default_ns
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_no_ns      lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_schematron.ETreeSchematronTestCase     lxml.tests.test_schematron.ETreeSchematronTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron     lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron_invalid_schema_empty        lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_empty
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron_invalid_schema      lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron_elementtree_error   lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_elementtree_error
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron_invalid_schema_namespace    lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_namespace
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_threading.ThreadPipelineTestCase       lxml.tests.test_threading.ThreadPipelineTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.xml   lxml.tests.test_threading.ThreadPipelineTestCase-class.html#xml
+lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker  lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker        lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.item_count    lxml.tests.test_threading.ThreadPipelineTestCase-class.html#item_count
+lxml.tests.test_threading.ThreadPipelineTestCase._build_pipeline       lxml.tests.test_threading.ThreadPipelineTestCase-class.html#_build_pipeline
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker   lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker  lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker       lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.test_thread_pipeline_global_parse     lxml.tests.test_threading.ThreadPipelineTestCase-class.html#test_thread_pipeline_global_parse
+lxml.tests.test_threading.ThreadPipelineTestCase.etree lxml.etree-module.html
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_threading.ThreadPipelineTestCase.test_thread_pipeline_thread_parse     lxml.tests.test_threading.ThreadPipelineTestCase-class.html#test_thread_pipeline_thread_parse
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker  lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__       lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.XML      lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html#XML
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run    lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.handle   lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker   lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__       lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker.XML       lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html#XML
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run    lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker.handle    lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__       lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run    lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker.handle  lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker  lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__       lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run    lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker.handle   lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker       lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__       lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run    lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker.handle        lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker        lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__       lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run    lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadingTestCase    lxml.tests.test_threading.ThreadingTestCase-class.html
+lxml.tests.test_threading.ThreadingTestCase.test_concurrent_class_lookup       lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_class_lookup
+lxml.tests.test_threading.ThreadingTestCase.test_thread_mix    lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_mix
+lxml.tests.test_threading.ThreadingTestCase.test_subtree_copy_thread   lxml.tests.test_threading.ThreadingTestCase-class.html#test_subtree_copy_thread
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_threading.ThreadingTestCase.test_main_xslt_in_thread   lxml.tests.test_threading.ThreadingTestCase-class.html#test_main_xslt_in_thread
+lxml.tests.test_threading.ThreadingTestCase._run_thread        lxml.tests.test_threading.ThreadingTestCase-class.html#_run_thread
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_threading.ThreadingTestCase.test_concurrent_proxies    lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_proxies
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_threading.ThreadingTestCase.test_thread_create_xslt    lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_create_xslt
+lxml.tests.test_threading.ThreadingTestCase.etree      lxml.etree-module.html
+lxml.tests.test_threading.ThreadingTestCase.test_thread_xslt_attr_replace      lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_xslt_attr_replace
+lxml.tests.test_threading.ThreadingTestCase.test_thread_xslt   lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_xslt
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_threading.ThreadingTestCase.test_thread_error_log      lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_error_log
+lxml.tests.test_unicode.UnicodeTestCase        lxml.tests.test_unicode.UnicodeTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_qname     lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_qname
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_xml_broken        lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_xml_broken
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_nstag     lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_nstag
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_ns_invalid        lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_ns_invalid
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_qname_invalid     lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_qname_invalid
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_attr      lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_attr
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_comment   lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_comment
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_tag       lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_tag
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_nstag_invalid     lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_nstag_invalid
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_parse_stringio    lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_parse_stringio
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_tag_invalid       lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_tag_invalid
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_xml       lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_xml
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase      lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.resolver_schema_int2 lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#resolver_schema_int2
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.test_xmlschema_resolvers_noroot      lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers_noroot
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver      lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.test_xmlschema_resolvers     lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.test_xmlschema_resolvers_root        lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers_root
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.test_xmlschema_nested_resolvers      lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_nested_resolvers
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.resolver_schema_ext  lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#resolver_schema_ext
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.resolver_schema_int  lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#resolver_schema_int
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver      lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver.resolve      lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html#resolve
+lxml.etree.Resolver.resolve_filename   lxml.etree.Resolver-class.html#resolve_filename
+lxml.etree.Resolver.__new__    lxml.etree.Resolver-class.html#__new__
+lxml.etree.Resolver.resolve_string     lxml.etree.Resolver-class.html#resolve_string
+lxml.etree.Resolver.resolve_file       lxml.etree.Resolver-class.html#resolve_file
+lxml.etree.Resolver.resolve_empty      lxml.etree.Resolver-class.html#resolve_empty
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver.__init__     lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html#__init__
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase       lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_stringio       lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_stringio
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_import_file    lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_import_file
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_invalid_schema2        lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_invalid_schema2
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_invalid_schema1        lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_invalid_schema1
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_parse  lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_shortcut       lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_shortcut
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_iterparse_fail lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_iterparse_fail
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_elementtree_error      lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_elementtree_error
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_default_attributes     lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_default_attributes
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_file   lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_file
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_parse_default_attributes_schema_config lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_default_attributes_schema_config
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema        lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_parse_fixed_attributes lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_fixed_attributes
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_iterparse      lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_iterparse
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_parse_default_attributes       lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_default_attributes
+lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase       lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase.test_xpath_compile_ns lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html#test_xpath_compile_ns
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase._test_xpath_compile_unicode   lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html#_test_xpath_compile_unicode
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_compile_vars lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_vars
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_elementtree_error    lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_elementtree_error
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_compile_doc  lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_doc
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_compile_error        lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_error
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_compile_element      lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_element
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html
+lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase.test_xpath_exslt_functions_date lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html#test_xpath_exslt_functions_date
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase.NSMAP   lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html#NSMAP
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase.test_xpath_exslt_functions_strings      lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html#test_xpath_exslt_functions_strings
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_comment      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_comment
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_boolean   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_boolean
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_prefix_error      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_prefix_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_elementtree_getpath_partial     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath_partial
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_evaluator_element lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_element
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_attribute_parent     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute_parent
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_elementtree_getpath     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_text_parent  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text_parent
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_error     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_variables lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_variables
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_eval_context_propagation  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_eval_context_propagation
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_elements     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_elements
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_namespace lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_namespace
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_evaluator_tree    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_tree
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_unicode_text_parent  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_unicode_text_parent
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_mix    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_mix
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_attribute    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_namespace_empty   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_namespace_empty
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_eval_context_clear        lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_eval_context_clear
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_nothing      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_nothing
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_class_error       lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_class_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_nodes  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_variables_nodeset lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_variables_nodeset
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_nodes_append2  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes_append2
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_string    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_string
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions        lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_ns_none   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns_none
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_text lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_attribute_parent_no_smart_strings    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute_parent_no_smart_strings
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_document_root     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_document_root
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_wrong_args     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_wrong_args
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_evaluator lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_text_from_other_document  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_text_from_other_document
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_number    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_number
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_ns_empty  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns_empty
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_rel_xpath_list_elements lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_list_elements
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_nodes_append   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes_append
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_text_parent_no_smart_strings lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text_parent_no_smart_strings
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_rel_xpath_boolean       lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_boolean
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_evaluator_tree_absolute   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_tree_absolute
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_class_prefix_error        lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_class_prefix_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_context_node      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_context_node
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_error  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_ns        lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase       lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_content        lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_content
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node    lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase._test_extension_element_attribute_context     lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#_test_extension_element_attribute_context
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only        lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_append_only
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_apply_templates        lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_process_children       lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc        lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node_doc
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise    lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_read_only_raise
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context     lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_comment_pi_context
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_doc_context    lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_doc_context
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element        lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_raise  lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_raise
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element     lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_with_subextension_element
+lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase  lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase.test_extensions2 lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions2
+lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase.test_extensions1 lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions1
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment       lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_variable_result_tree_fragment
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xslt.ETreeXSLTTestCase lxml.tests.test_xslt.ETreeXSLTTestCase-class.html
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameter_xpath       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_default_parameters    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_default_parameters
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_repeat_transform      lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_repeat_transform
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_set_replace        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_replace
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get_all    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_html_output   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_html_output
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_match lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_match
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameter_invalid     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_invalid
+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_exslt_regexp_match1        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_match1
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_message       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_match2        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_match2
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_str  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_str
+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
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_resolver_url_building lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_resolver_url_building
+lxml.tests.test_xslt.ETreeXSLTTestCase._test_exslt_regexp_match4       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#_test_exslt_regexp_match4
+lxml.tests.test_xslt.ETreeXSLTTestCase._test_exslt_regexp_match3       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#_test_exslt_regexp_match3
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_replace       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_replace
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_broken        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_broken
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_copy  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_copy
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_input_none    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_none
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameter_xpath_object        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath_object
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get_unknown        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_unknown
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_multiple_transforms   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_transforms
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_test  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_test
+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_exslt_math lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_math
+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
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_multiple_elementrees       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_multiple_elementrees
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_input_partial_doc     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_partial_doc
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_include       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_str_attribute_replace        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_str_attribute_replace
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_embedded_id        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_id
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_match_groups  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_match_groups
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_parse_deny   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_XML_resolver lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML_resolver
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_move_result   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_move_result
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_string_parameters     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_string_parameters
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_parse_deny_all       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny_all
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_elementtree  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_elementtree
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_multiple_parameters   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_parameters
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameters    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameters
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_XML  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_xmlid
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_set_new    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_new
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_parse        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_utf8  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_utf8
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_encoding      lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_encoding
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get_all_reversed   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all_reversed
+lxml.tests.test_xslt.Py3XSLTTestCase   lxml.tests.test_xslt.Py3XSLTTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown      lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException     exceptions.AssertionError-class.html
+lxml.tests.test_xslt.Py3XSLTTestCase.test_xslt_result_bytearray        lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytearray
+lxml.tests.test_xslt.Py3XSLTTestCase.test_xslt_result_memoryview       lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_memoryview
+lxml.tests.common_imports.HelperTestCase._rootstring   lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xslt.Py3XSLTTestCase.test_xslt_result_bytes    lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytes
+lxml.tests.common_imports.HelperTestCase.assertFalse   lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+xml.etree.ElementTree.ElementTree      xml.etree.ElementTree.ElementTree-class.html
+xml.etree.ElementTree.ElementTree.parse        xml.etree.ElementTree.ElementTree-class.html#parse
+xml.etree.ElementTree.ElementTree.getroot      xml.etree.ElementTree.ElementTree-class.html#getroot
+xml.etree.ElementTree.ElementTree.getiterator  xml.etree.ElementTree.ElementTree-class.html#getiterator
+xml.etree.ElementTree.ElementTree.findtext     xml.etree.ElementTree.ElementTree-class.html#findtext
+xml.etree.ElementTree.ElementTree.find xml.etree.ElementTree.ElementTree-class.html#find
+xml.etree.ElementTree.ElementTree.write        xml.etree.ElementTree.ElementTree-class.html#write
+xml.etree.ElementTree.ElementTree._setroot     xml.etree.ElementTree.ElementTree-class.html#_setroot
+xml.etree.ElementTree.ElementTree._write       xml.etree.ElementTree.ElementTree-class.html#_write
+xml.etree.ElementTree.ElementTree.findall      xml.etree.ElementTree.ElementTree-class.html#findall
+xml.etree.ElementTree.ElementTree.__init__     xml.etree.ElementTree.ElementTree-class.html#__init__
+xml.etree.ElementTree.QName    xml.etree.ElementTree.QName-class.html
+xml.etree.ElementTree.QName.__hash__   xml.etree.ElementTree.QName-class.html#__hash__
+xml.etree.ElementTree.QName.__str__    xml.etree.ElementTree.QName-class.html#__str__
+xml.etree.ElementTree.QName.__init__   xml.etree.ElementTree.QName-class.html#__init__
+xml.etree.ElementTree.QName.__cmp__    xml.etree.ElementTree.QName-class.html#__cmp__
+xml.etree.ElementTree.TreeBuilder      xml.etree.ElementTree.TreeBuilder-class.html
+xml.etree.ElementTree.TreeBuilder.end  xml.etree.ElementTree.TreeBuilder-class.html#end
+xml.etree.ElementTree.TreeBuilder.start        xml.etree.ElementTree.TreeBuilder-class.html#start
+xml.etree.ElementTree.TreeBuilder._flush       xml.etree.ElementTree.TreeBuilder-class.html#_flush
+xml.etree.ElementTree.TreeBuilder.close        xml.etree.ElementTree.TreeBuilder-class.html#close
+xml.etree.ElementTree.TreeBuilder.data xml.etree.ElementTree.TreeBuilder-class.html#data
+xml.etree.ElementTree.TreeBuilder.__init__     xml.etree.ElementTree.TreeBuilder-class.html#__init__
+xml.etree.ElementTree.XMLTreeBuilder   xml.etree.ElementTree.XMLTreeBuilder-class.html
+xml.etree.ElementTree.XMLTreeBuilder.feed      xml.etree.ElementTree.XMLTreeBuilder-class.html#feed
+xml.etree.ElementTree.XMLTreeBuilder._start    xml.etree.ElementTree.XMLTreeBuilder-class.html#_start
+xml.etree.ElementTree.XMLTreeBuilder.doctype   xml.etree.ElementTree.XMLTreeBuilder-class.html#doctype
+xml.etree.ElementTree.XMLTreeBuilder._end      xml.etree.ElementTree.XMLTreeBuilder-class.html#_end
+xml.etree.ElementTree.XMLTreeBuilder._fixtext  xml.etree.ElementTree.XMLTreeBuilder-class.html#_fixtext
+xml.etree.ElementTree.XMLTreeBuilder._fixname  xml.etree.ElementTree.XMLTreeBuilder-class.html#_fixname
+xml.etree.ElementTree.XMLTreeBuilder.close     xml.etree.ElementTree.XMLTreeBuilder-class.html#close
+xml.etree.ElementTree.XMLTreeBuilder._data     xml.etree.ElementTree.XMLTreeBuilder-class.html#_data
+xml.etree.ElementTree.XMLTreeBuilder._start_list       xml.etree.ElementTree.XMLTreeBuilder-class.html#_start_list
+xml.etree.ElementTree.XMLTreeBuilder._default  xml.etree.ElementTree.XMLTreeBuilder-class.html#_default
+xml.etree.ElementTree.XMLTreeBuilder.__init__  xml.etree.ElementTree.XMLTreeBuilder-class.html#__init__
+xml.etree.ElementTree._ElementInterface        xml.etree.ElementTree._ElementInterface-class.html
+xml.etree.ElementTree._ElementInterface.set    xml.etree.ElementTree._ElementInterface-class.html#set
+xml.etree.ElementTree._ElementInterface.__getslice__   xml.etree.ElementTree._ElementInterface-class.html#__getslice__
+xml.etree.ElementTree._ElementInterface.text   xml.etree.ElementTree._ElementInterface-class.html#text
+xml.etree.ElementTree._ElementInterface.tag    xml.etree.ElementTree._ElementInterface-class.html#tag
+xml.etree.ElementTree._ElementInterface.find   xml.etree.ElementTree._ElementInterface-class.html#find
+xml.etree.ElementTree._ElementInterface.__init__       xml.etree.ElementTree._ElementInterface-class.html#__init__
+xml.etree.ElementTree._ElementInterface.__delslice__   xml.etree.ElementTree._ElementInterface-class.html#__delslice__
+xml.etree.ElementTree._ElementInterface.findtext       xml.etree.ElementTree._ElementInterface-class.html#findtext
+xml.etree.ElementTree._ElementInterface.tail   xml.etree.ElementTree._ElementInterface-class.html#tail
+xml.etree.ElementTree._ElementInterface.findall        xml.etree.ElementTree._ElementInterface-class.html#findall
+xml.etree.ElementTree._ElementInterface.getchildren    xml.etree.ElementTree._ElementInterface-class.html#getchildren
+xml.etree.ElementTree._ElementInterface.append xml.etree.ElementTree._ElementInterface-class.html#append
+xml.etree.ElementTree._ElementInterface.__delitem__    xml.etree.ElementTree._ElementInterface-class.html#__delitem__
+xml.etree.ElementTree._ElementInterface.__len__        xml.etree.ElementTree._ElementInterface-class.html#__len__
+xml.etree.ElementTree._ElementInterface.__getitem__    xml.etree.ElementTree._ElementInterface-class.html#__getitem__
+xml.etree.ElementTree._ElementInterface.get    xml.etree.ElementTree._ElementInterface-class.html#get
+xml.etree.ElementTree._ElementInterface.keys   xml.etree.ElementTree._ElementInterface-class.html#keys
+xml.etree.ElementTree._ElementInterface.makeelement    xml.etree.ElementTree._ElementInterface-class.html#makeelement
+xml.etree.ElementTree._ElementInterface.__setitem__    xml.etree.ElementTree._ElementInterface-class.html#__setitem__
+xml.etree.ElementTree._ElementInterface.insert xml.etree.ElementTree._ElementInterface-class.html#insert
+xml.etree.ElementTree._ElementInterface.items  xml.etree.ElementTree._ElementInterface-class.html#items
+xml.etree.ElementTree._ElementInterface.__setslice__   xml.etree.ElementTree._ElementInterface-class.html#__setslice__
+xml.etree.ElementTree._ElementInterface.remove xml.etree.ElementTree._ElementInterface-class.html#remove
+xml.etree.ElementTree._ElementInterface.__repr__       xml.etree.ElementTree._ElementInterface-class.html#__repr__
+xml.etree.ElementTree._ElementInterface.getiterator    xml.etree.ElementTree._ElementInterface-class.html#getiterator
+xml.etree.ElementTree._ElementInterface.attrib xml.etree.ElementTree._ElementInterface-class.html#attrib
+xml.etree.ElementTree._ElementInterface.clear  xml.etree.ElementTree._ElementInterface-class.html#clear
+xml.etree.ElementTree._SimpleElementPath       xml.etree.ElementTree._SimpleElementPath-class.html
+xml.etree.ElementTree._SimpleElementPath.findtext      xml.etree.ElementTree._SimpleElementPath-class.html#findtext
+xml.etree.ElementTree._SimpleElementPath.find  xml.etree.ElementTree._SimpleElementPath-class.html#find
+xml.etree.ElementTree._SimpleElementPath.findall       xml.etree.ElementTree._SimpleElementPath-class.html#findall
+xml.etree.ElementTree.iterparse        xml.etree.ElementTree.iterparse-class.html
+xml.etree.ElementTree.iterparse.__iter__       xml.etree.ElementTree.iterparse-class.html#__iter__
+xml.etree.ElementTree.iterparse.__init__       xml.etree.ElementTree.iterparse-class.html#__init__
+xml.etree.ElementTree.iterparse.next   xml.etree.ElementTree.iterparse-class.html#next
diff --git a/doc/sphinx/_sources/html5parser.txt b/doc/sphinx/_sources/html5parser.txt
new file mode 100644 (file)
index 0000000..3c8b6ff
--- /dev/null
@@ -0,0 +1,80 @@
+===============
+html5lib Parser
+===============
+
+`html5lib`_ is a Python package that implements the HTML5 parsing algorithm
+which is heavily influenced by current browsers and based on the `WHATWG
+HTML5 specification`_.
+
+.. _html5lib: http://code.google.com/p/html5lib/
+.. _BeautifulSoup: http://www.crummy.com/software/BeautifulSoup/
+.. _WHATWG HTML5 specification: http://www.whatwg.org/specs/web-apps/current-work/
+
+lxml can benefit from the parsing capabilities of `html5lib` through
+the ``lxml.html.html5parser`` module.  It provides a similar interface
+to the ``lxml.html`` module by providing ``fromstring()``,
+``parse()``, ``document_fromstring()``, ``fragment_fromstring()`` and
+``fragments_fromstring()`` that work like the regular html parsing
+functions.
+
+
+Differences to regular HTML parsing
+===================================
+
+There are a few differences in the returned tree to the regular HTML
+parsing functions from ``lxml.html``.  html5lib normalizes some elements
+and element structures to a common format.  For example even if a tables
+does not have a `tbody` html5lib will inject one automatically:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.html import tostring, html5parser
+    >>> tostring(html5parser.fromstring("<table><td>foo"))
+    '<table><tbody><tr><td>foo</td></tr></tbody></table>'
+
+Also the parameters the functions accept are different.
+
+
+Function Reference
+==================
+
+``parse(filename_url_or_file)``:
+    Parses the named file or url, or if the object has a ``.read()``
+    method, parses from that.
+
+``document_fromstring(html, guess_charset=True)``:
+    Parses a document from the given string.  This always creates a
+    correct HTML document, which means the parent node is ``<html>``,
+    and there is a body and possibly a head.
+
+    If a bytestring is passed and ``guess_charset`` is true the chardet
+    library (if installed) will guess the charset if ambiguities exist.
+
+``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
+    wrap the element in a ``<div>``.  If ``create_parent`` is true the
+    default parent tag (div) is used.
+
+    If a bytestring is passed and ``guess_charset`` is true the chardet
+    library (if installed) will guess the charset if ambiguities exist.
+
+``fragments_fromstring(string, no_leading_text=False, parser=None)``:
+    Returns a list of the elements found in the fragment.  The first item in
+    the list may be a string.  If ``no_leading_text`` is true, then it will
+    be an error if there is leading text, and it will always be a list of
+    only elements.
+
+    If a bytestring is passed and ``guess_charset`` is true the chardet
+    library (if installed) will guess the charset if ambiguities exist.
+
+``fromstring(string)``:
+    Returns ``document_fromstring`` or ``fragment_fromstring``, based
+    on whether the string looks like a full document, or just a
+    fragment.
+
+Additionally all parsing functions accept an ``parser`` keyword argument
+that can be set to a custom parser instance.  To create custom parsers
+you can subclass the ``HTMLParser`` and ``XHTMLParser`` from the same
+module.  Note that these are the parser classes provided by html5lib.
diff --git a/doc/sphinx/_sources/index.txt b/doc/sphinx/_sources/index.txt
new file mode 100644 (file)
index 0000000..df71163
--- /dev/null
@@ -0,0 +1,29 @@
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   api
+   build
+   capi
+   compatibility
+   cssselect
+   element_classes
+   elementsoup
+   extensions
+   FAQ
+   html5parser
+   intro
+   lxml2
+   lxmlhtml
+   lxml-source-howto
+   memorymanagement
+   objectify
+   parsing
+   performance
+   resolvers
+   sax
+   tutorial
+   validation
+   xpathxslt
diff --git a/doc/sphinx/_sources/intro.txt b/doc/sphinx/_sources/intro.txt
new file mode 100644 (file)
index 0000000..1be3f54
--- /dev/null
@@ -0,0 +1,82 @@
+Why lxml?
+=========
+
+.. contents::
+..
+   1  Motto
+   2  Aims
+
+
+Motto
+-----
+
+"the thrills without the strangeness"
+
+To explain the motto:
+
+"Programming with libxml2 is like the thrilling embrace of an exotic stranger.
+It seems to have the potential to fulfill your wildest dreams, but there's a
+nagging voice somewhere in your head warning you that you're about to get
+screwed in the worst way."  (`a quote by Mark Pilgrim`_)
+
+Mark Pilgrim was describing in particular the experience a Python programmer
+has when dealing with libxml2.  The default Python bindings of libxml2 are
+fast, thrilling, powerful, and your code might fail in some horrible way that
+you really shouldn't have to worry about when writing Python code.  lxml
+combines the power of libxml2 with the ease of use of Python.
+
+.. _`a quote by Mark Pilgrim`: http://diveintomark.org/archives/2004/02/18/libxml2
+
+
+Aims
+----
+
+The C libraries libxml2_ and libxslt_ have huge benefits:
+
+* Standards-compliant XML support.
+
+* Support for (broken) HTML.
+
+* Full-featured.
+
+* Actively maintained by XML experts.
+
+* fast. fast! FAST!
+
+.. _libxml2: http://www.xmlsoft.org
+
+.. _libxslt: http://xmlsoft.org/XSLT
+
+
+These libraries already ship with Python bindings, but these Python bindings
+mimic the C-level interface.  This yields a number of problems:
+
+* very low level and C-ish (not Pythonic).
+
+* underdocumented and huge, you get lost in them.
+
+* UTF-8 in API, instead of Python unicode strings.
+
+* Can easily cause segfaults from Python.
+
+* Require manual memory management!
+
+
+lxml is a new Python binding for libxml2 and libxslt, completely independent
+from these existing Python bindings.  Its aims:
+
+* Pythonic API.
+
+* Documented.
+
+* Use Python unicode strings in API.
+
+* Safe (no segfaults).
+
+* No manual memory management!
+
+lxml aims to provide a Pythonic API by following as much as possible the
+`ElementTree API`_.  We're trying to avoid inventing too many new APIs, or you
+having to learn new things -- XML is complicated enough.
+
+.. _`ElementTree API`: http://effbot.org/zone/element-index.htm
diff --git a/doc/sphinx/_sources/licenses/BSD.txt b/doc/sphinx/_sources/licenses/BSD.txt
new file mode 100644 (file)
index 0000000..a76d0ed
--- /dev/null
@@ -0,0 +1,29 @@
+Copyright (c) 2004 Infrae. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   
+  2. Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+
+  3. Neither the name of Infrae nor the names of its contributors may
+     be used to endorse or promote products derived from this software
+     without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/doc/sphinx/_sources/licenses/GPL.txt b/doc/sphinx/_sources/licenses/GPL.txt
new file mode 100644 (file)
index 0000000..d60c31a
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/doc/sphinx/_sources/licenses/ZopePublicLicense.txt b/doc/sphinx/_sources/licenses/ZopePublicLicense.txt
new file mode 100644 (file)
index 0000000..44e0648
--- /dev/null
@@ -0,0 +1,59 @@
+Zope Public License (ZPL) Version 2.0
+-----------------------------------------------
+
+This software is Copyright (c) Zope Corporation (tm) and
+Contributors. All rights reserved.
+
+This license has been certified as open source. It has also
+been designated as GPL compatible by the Free Software
+Foundation (FSF).
+
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the
+following conditions are met:
+
+1. Redistributions in source code must retain the above
+   copyright notice, this list of conditions, and the following
+   disclaimer.
+
+2. Redistributions in binary form must reproduce the above
+   copyright notice, this list of conditions, and the following
+   disclaimer in the documentation and/or other materials
+   provided with the distribution.
+
+3. The name Zope Corporation (tm) must not be used to
+   endorse or promote products derived from this software
+   without prior written permission from Zope Corporation.
+
+4. The right to distribute this software or to use it for
+   any purpose does not give you the right to use Servicemarks
+   (sm) or Trademarks (tm) of Zope Corporation. Use of them is
+   covered in a separate agreement (see
+   http://www.zope.com/Marks).
+
+5. If any files are modified, you must cause the modified
+   files to carry prominent notices stating that you changed
+   the files and the date of any change.
+
+Disclaimer
+
+  THIS SOFTWARE IS PROVIDED BY ZOPE CORPORATION ``AS IS''
+  AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+  NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+  AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+  NO EVENT SHALL ZOPE CORPORATION OR ITS CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+
+This software consists of contributions made by Zope
+Corporation and many individuals on behalf of Zope
+Corporation.  Specific attributions are listed in the
+accompanying credits file.
diff --git a/doc/sphinx/_sources/licenses/elementtree.txt b/doc/sphinx/_sources/licenses/elementtree.txt
new file mode 100644 (file)
index 0000000..dde28f1
--- /dev/null
@@ -0,0 +1,25 @@
+The ElementTree / XML Toys Library is
+
+Copyright (c) 1999-2003 by Secret Labs AB
+Copyright (c) 1999-2003 by Fredrik Lundh
+
+By obtaining, using, and/or copying this software and/or its
+associated documentation, you agree that you have read, understood,
+and will comply with the following terms and conditions:
+
+Permission to use, copy, modify, and distribute this software and its
+associated documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appears in all
+copies, and that both that copyright notice and this permission notice
+appear in supporting documentation, and that the name of Secret Labs
+AB or the author not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/doc/sphinx/_sources/lxml-source-howto.txt b/doc/sphinx/_sources/lxml-source-howto.txt
new file mode 100644 (file)
index 0000000..16e765a
--- /dev/null
@@ -0,0 +1,313 @@
+==============================
+How to read the source of lxml
+==============================
+
+:Author:
+  Stefan Behnel
+
+.. meta::
+  :description: How to read and work on the source code of lxml
+  :keywords: lxml, XML, Cython, source code, develop, comprehend, understand
+
+This document describes how to read the source code of lxml_ and how
+to start working on it.  You might also be interested in the companion
+document that describes `how to build lxml from sources`_.
+
+.. _lxml: http://codespeak.net/lxml/
+.. _`how to build lxml from sources`: build.html
+.. _`ReStructured Text`: http://docutils.sourceforge.net/rst.html
+.. _epydoc: http://epydoc.sourceforge.net/
+.. _docutils: http://docutils.sourceforge.net/
+.. _`C-level API`: capi.html
+
+.. contents::
+..
+   1  What is Cython?
+   2  Where to start?
+     2.1  Concepts
+     2.2  The documentation
+   3  lxml.etree
+   4  lxml.objectify
+   5  lxml.html
+
+
+What is Cython?
+===============
+
+.. _Cython: http://cython.org/
+.. _Pyrex: http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/
+
+Cython_ is the language that lxml is written in.  It is a very
+Python-like language that was specifically designed for writing Python
+extension modules.
+
+The reason why Cython (or actually its predecessor Pyrex_ at the time)
+was chosen as an implementation language for lxml, is that it makes it
+very easy to interface with both the Python world and external C code.
+Cython generates all the necessary glue code for the Python API,
+including Python types, calling conventions and reference counting.
+On the other side of the table, calling into C code is not more than
+declaring the signature of the function and maybe some variables as
+being C types, pointers or structs, and then calling it.  The rest of
+the code is just plain Python code.
+
+The Cython language is so close to Python that the Cython compiler can
+actually compile many, many Python programs to C without major
+modifications.  But the real speed gains of a C compilation come from
+type annotations that were added to the language and that allow Cython
+to generate very efficient C code.
+
+Even if you are not familiar with Cython, you should keep in mind that
+a slow implementation of a feature is better than none.  So, if you
+want to contribute and have an idea what code you want to write, feel
+free to start with a pure Python implementation.  Chances are, if you
+get the change officially accepted and integrated, others will take
+the time to optimise it so that it runs fast in Cython.
+
+
+Where to start?
+===============
+
+First of all, read `how to build lxml from sources`_ to learn how to
+retrieve the source code from the Subversion repository and how to
+build it.  The source code lives in the subdirectory ``src`` of the
+checkout.
+
+The main extension modules in lxml are ``lxml.etree`` and
+``lxml.objectify``.  All main modules have the file extension
+``.pyx``, which shows the descendence from Pyrex.  As usual in Python,
+the main files start with a short description and a couple of imports.
+Cython distinguishes between the run-time ``import`` statement (as
+known from Python) and the compile-time ``cimport`` statement, which
+imports C declarations, either from external libraries or from other
+Cython modules.
+
+
+Concepts
+--------
+
+lxml's tree API is based on proxy objects.  That means, every Element
+object (or rather ``_Element`` object) is a proxy for a libxml2 node
+structure.  The class declaration is (mainly)::
+
+    cdef class _Element:
+        cdef _Document _doc
+        cdef xmlNode* _c_node
+
+It is a naming convention that C variables and C level class members
+that are passed into libxml2 start with a prefixed ``c_`` (commonly
+libxml2 struct pointers), and that C level class members are prefixed
+with an underscore.  So you will often see names like ``c_doc`` for an
+``xmlDoc*`` variable (or ``c_node`` for an ``xmlNode*``), or the above
+``_c_node`` for a class member that points to an ``xmlNode`` struct
+(or ``_c_doc`` for an ``xmlDoc*``).
+
+It is important to know that every proxy in lxml has a factory
+function that properly sets up C level members.  Proxy objects must
+*never* be instantiated outside of that factory.  For example, to
+instantiate an _Element object or its subclasses, you must always call
+its factory function::
+
+    cdef xmlNode* c_node
+    cdef _Document doc
+    cdef _Element element
+    ...
+    element = _elementFactory(doc, c_node)
+
+A good place to see how this factory is used are the Element methods
+``getparent()``, ``getnext()`` and ``getprevious()``.
+
+
+The documentation
+-----------------
+
+An important part of lxml is the documentation that lives in the
+``doc`` directory.  It describes a large part of the API and comprises
+a lot of example code in the form of doctests.
+
+The documentation is written in the `ReStructured Text`_ format, a
+very powerful text markup language that looks almost like plain text.
+It is part of the docutils_ package.
+
+The project web site of lxml_ is completely generated from these text
+documents.  Even the side menu is just collected from the table of
+contents that the ReST processor writes into each HTML page.
+Obviously, we use lxml for this.
+
+The easiest way to generate the HTML pages is by calling::
+
+    make html
+
+This will call the script ``doc/mkhtml.py`` to run the ReST processor
+on the files.  After generating an HTML page the script parses it back
+in to build the side menu, and injects the complete menu into each
+page at the very end.
+
+Running the ``make`` command will also generate the API documentation
+if you have epydoc_ installed.  The epydoc package will import and
+introspect the extension modules and also introspect and parse the
+Python modules of lxml.  The aggregated information will then be
+written out into an HTML documentation site.
+
+
+lxml.etree
+==========
+
+The main module, ``lxml.etree``, is in the file `lxml.etree.pyx
+<http://codespeak.net/svn/lxml/trunk/src/lxml/lxml.etree.pyx>`_.  It
+implements the main functions and types of the ElementTree API, as
+well as all the factory functions for proxies.  It is the best place
+to start if you want to find out how a specific feature is
+implemented.
+
+At the very end of the file, it contains a series of ``include``
+statements that merge the rest of the implementation into the
+generated C code.  Yes, you read right: no importing, no source file
+namespacing, just plain good old include and a huge C code result of
+more than 100,000 lines that we throw right into the C compiler.
+
+The main include files are:
+
+apihelpers.pxi
+    Private C helper functions.  Except for the factory functions,
+    most of the little functions that are used all over the place are
+    defined here.  This includes things like reading out the text
+    content of a libxml2 tree node, checking input from the API level,
+    creating a new Element node or handling attribute values.  If you
+    want to work on the lxml code, you should keep these functions in
+    the back of your head, as they will definitely make your life
+    easier.
+
+classlookup.pxi
+    Element class lookup mechanisms.  The main API and engines for
+    those who want to define custom Element classes and inject them
+    into lxml.
+
+docloader.pxi
+    Support for custom document loaders.  Base class and registry for
+    custom document resolvers.
+
+extensions.pxi
+    Infrastructure for extension functions in XPath/XSLT, including
+    XPath value conversion and function registration.
+
+iterparse.pxi
+    Incremental XML parsing.  An iterator class that builds iterparse
+    events while parsing.
+
+nsclasses.pxi
+    Namespace implementation and registry.  The registry and engine
+    for Element classes that use the ElementNamespaceClassLookup
+    scheme.
+
+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.
+
+parsertarget.pxi
+    An ElementTree compatible parser target implementation based on
+    the SAX2 interface of libxml2.
+
+proxy.pxi
+    Very low-level functions for memory allocation/deallocation
+    and Element proxy handling.  Ignoring this for the beginning
+    will safe your head from exploding.
+
+public-api.pxi
+    The set of C functions that are exported to other extension
+    modules at the C level.  For example, ``lxml.objectify`` makes use
+    of these.  See the `C-level API` documentation.
+
+readonlytree.pxi
+    A separate read-only implementation of the Element API.  This is
+    used in places where non-intrusive access to a tree is required,
+    such as the ``PythonElementClassLookup`` or XSLT extension
+    elements.
+
+saxparser.pxi
+    SAX-like parser interfaces as known from ElementTree's TreeBuilder.
+
+serializer.pxi
+    XML output functions.  Basically everything that creates byte
+    sequences from XML trees.
+
+xinclude.pxi
+    XInclude support.
+
+xmlerror.pxi
+    Error log handling.  All error messages that libxml2 generates
+    internally walk through the code in this file to end up in lxml's
+    Python level error logs.
+
+    At the end of the file, you will find a long list of named error
+    codes.  It is generated from the libxml2 HTML documentation (using
+    lxml, of course).  See the script ``update-error-constants.py``
+    for this.
+
+xmlid.pxi
+    XMLID and IDDict, a dictionary-like way to find Elements by their
+    XML-ID attribute.
+
+xpath.pxi
+    XPath evaluators.
+
+xslt.pxi
+    XSL transformations, including the ``XSLT`` class, document lookup
+    handling and access control.
+
+The different schema languages (DTD, RelaxNG, XML Schema and
+Schematron) are implemented in the following include files:
+
+* dtd.pxi
+* relaxng.pxi
+* schematron.pxi
+* xmlschema.pxi
+
+
+Python modules
+==============
+
+The ``lxml`` package also contains a number of pure Python modules:
+
+builder.py
+    The E-factory and the ElementBuilder class.  These provide a
+    simple interface to XML tree generation.
+
+cssselect.py
+    A CSS selector implementation based on XPath.  The main class is
+    called ``CSSSelector``.
+
+doctestcompare.py
+    A relaxed comparison scheme for XML/HTML markup in doctest.
+
+ElementInclude.py
+    XInclude-like document inclusion, compatible with ElementTree.
+
+_elementpath.py
+    XPath-like path language, compatible with ElementTree.
+
+sax.py
+    SAX2 compatible interfaces to copy lxml trees from/to SAX compatible
+    tools.
+
+usedoctest.py
+    Wrapper module for ``doctestcompare.py`` that simplifies its usage
+    from inside a doctest.
+
+
+lxml.objectify
+==============
+
+A Cython implemented extension module that uses the public C-API of
+lxml.etree.  It provides a Python object-like interface to XML trees.
+The implementation resides in the file `lxml.objectify.pyx
+<http://codespeak.net/svn/lxml/trunk/src/lxml/lxml.objectify.pyx>`_.
+
+
+lxml.html
+=========
+
+A specialised toolkit for HTML handling, based on lxml.etree.  This is
+implemented in pure Python.
diff --git a/doc/sphinx/_sources/lxml2.txt b/doc/sphinx/_sources/lxml2.txt
new file mode 100644 (file)
index 0000000..07a7b8b
--- /dev/null
@@ -0,0 +1,269 @@
+=======================
+What's new in lxml 2.0?
+=======================
+
+.. contents::
+..
+   1  Changes in etree and objectify
+     1.1  Incompatible changes
+     1.2  Enhancements
+     1.3  Deprecation
+   2  New modules
+     2.1  lxml.usedoctest
+     2.2  lxml.html
+     2.3  lxml.cssselect
+
+
+During the development of the lxml 1.x series, a couple of quirks were
+discovered in the design that made the API less obvious and its future
+extensions harder than necessary. lxml 2.0 is a soft evolution of lxml 1.x
+towards a simpler, more consistent and more powerful API - with some major
+extensions.  Wherever possible, lxml 1.3 comes close to the semantics of lxml
+2.0, so that migrating should be easier for code that currently runs with 1.3.
+
+One of the important internal changes was the switch from the Pyrex_
+compiler to Cython_, which provides better optimisation and improved
+support for newer Python language features.  This allows the code of
+lxml to become more Python-like again, while the performance improves
+as Cython continues its own development.  The code simplification,
+which will continue throughout the 2.x series, will hopefully make it
+even easier for users to contribute.
+
+.. _Cython: http://www.cython.org/
+.. _Pyrex:  http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/
+
+
+Changes in etree and objectify
+==============================
+
+A graduation towards a more consistent API cannot go without a certain amount
+of incompatible changes.  The following is a list of those differences that
+applications need to take into account when migrating from lxml 1.x to lxml
+2.0.
+
+Incompatible changes
+--------------------
+
+* lxml 0.9 introduced a feature called `namespace implementation`_.  The
+  global ``Namespace`` factory was added to register custom element classes
+  and have lxml.etree look them up automatically.  However, the later
+  development of further class lookup mechanisms made it appear less and less
+  adequate to register this mapping at a global level, so lxml 1.1 first
+  removed the namespace based lookup from the default setup and lxml 2.0
+  finally removes the global namespace registry completely.  As all other
+  lookup mechanisms, the namespace lookup is now local to a parser, including
+  the registry itself.  Applications that use a module-level parser can easily
+  map its ``get_namespace()`` method to a global ``Namespace`` function to
+  mimic the old behaviour.
+
+  .. _`namespace implementation`: element_classes.html#implementing-namespaces
+
+* Some API functions now require passing options as keyword arguments,
+  as opposed to positional arguments.  This restriction was introduced
+  to make the API usage independent of future extensions such as the
+  addition of new positional arguments.  Users should not rely on the
+  position of an optional argument in function signatures and instead
+  pass it explicitly named.  This also improves code readability - it
+  is common good practice to pass options in a consistent way
+  independent of their position, so many people may not even notice
+  the change in their code.  Another important reason is compatibility
+  with cElementTree, which also enforces keyword-only arguments in a
+  couple of places.
+
+* XML tag names are validated when creating an Element.  This does not
+  apply to HTML tags, where only HTML special characters are
+  forbidden.  The distinction is made by the ``SubElement()`` factory,
+  which tests if the tree it works on is an HTML tree, and by the
+  ``.makeelement()`` methods of parsers, which behave differently for
+  the ``XMLParser()`` and the ``HTMLParser()``.
+
+* XPath now raises exceptions specific to the part of the execution that
+  failed: ``XPathSyntaxError`` for parser errors and ``XPathEvalError`` for
+  errors that occurred during the evaluation.  Note that the distinction only
+  works for the ``XPath()`` class.  The other two evaluators only have a
+  single evaluation call that includes the parsing step, and will therefore
+  only raise an ``XPathEvalError``.  Applications can catch both exceptions
+  through the common base class ``XPathError`` (which also exists in earlier
+  lxml versions).
+
+* Network access in parsers is now disabled by default, i.e. the
+  ``no_network`` option defaults to True.  Due to a somewhat 'interesting'
+  implementation in libxml2, this does not affect the first document (i.e. the
+  URL that is parsed), but only subsequent documents, such as a DTD when
+  parsing with validation.  This means that you will have to check the URL you
+  pass, instead of relying on lxml to prevent *any* access to external
+  resources.  As this can be helpful in some use cases, lxml does not work
+  around it.
+
+* The type annotations in lxml.objectify (the ``pytype`` attribute) now use
+  ``NoneType`` for the None value as this is the correct Python type name.
+  Previously, lxml 1.x used a lower case ``none``.
+
+* Another change in objectify regards the way it deals with ambiguous types.
+  Previously, setting a value like the string ``"3"`` through normal attribute
+  access would let it come back as an integer when reading the object
+  attribute.  lxml 2.0 prevents this by always setting the ``pytype``
+  attribute to the type the user passed in, so ``"3"`` will come back as a
+  string, while the number ``3`` will come back as a number.  To remove the
+  type annotation on serialisation, you can use the ``deannotate()`` function.
+
+* The C-API function ``findOrBuildNodeNs()`` was replaced by the more generic
+  ``findOrBuildNodeNsPrefix()`` that accepts an additional default prefix.
+
+
+Enhancements
+------------
+
+Most of the enhancements of lxml 2.0 were made under the hood.  Most people
+won't even notice them, but they make the maintenance of lxml easier and thus
+facilitate further enhancements and an improved integration between lxml's
+features.
+
+* lxml.objectify now has its own implementation of the `E factory`_.  It uses
+  the built-in type lookup mechanism of lxml.objectify, thus removing the need
+  for an additional type registry mechanism (as previously available through
+  the ``typemap`` parameter).
+
+* XML entities are supported through the ``Entity()`` factory, an Entity
+  element class and a parser option ``resolve_entities`` that allows to keep
+  entities in the element tree when set to False.  Also, the parser will now
+  report undefined entities as errors if it needs to resolve them (which is
+  still the default, as in lxml 1.x).
+
+* A major part of the XPath code was rewritten and can now benefit from a
+  bigger overlap with the XSLT code.  The main benefits are improved thread
+  safety in the XPath evaluators and Python RegExp support in standard XPath.
+
+* The string results of an XPath evaluation have become 'smart' string
+  subclasses.  Formerly, there was no easy way to find out where a
+  string originated from.  In lxml 2.0, you can call its
+  ``getparent()`` method to `find the Element that carries it`_.  This
+  works for attributes (``//@attribute``) and for ``text()`` nodes,
+  i.e. Element text and tails.  Strings that were constructed in the
+  path expression, e.g. by the ``string()`` function or extension
+  functions, will return None as their parent.
+
+* Setting a ``QName`` object as value of the ``.text`` property or as
+  an attribute value will resolve its prefix in the respective context
+
+* Following ElementTree 1.3, the ``iterfind()`` method supports
+  efficient iteration based on XPath-like expressions.
+
+The parsers also received some major enhancements:
+
+* ``iterparse()`` can parse HTML when passing the boolean ``html``
+  keyword.
+
+* Parse time XML Schema validation by passing an
+  XMLSchema object to the ``schema`` keyword argument of a parser.
+
+* Support for a ``target`` object that implements ElementTree's
+  `TreeBuilder interface`_.
+
+* The ``encoding`` keyword allows overriding the document encoding.
+
+
+.. _`E factory`: objectify.html#tree-generation-with-the-e-factory
+.. _`find the Element that carries it`: tutorial.html#using-xpath-to-find-text
+.. _`TreeBuilder interface`: http://effbot.org/elementtree/elementtree-treebuilder.htm
+
+
+Deprecation
+-----------
+
+The following functions and methods are now deprecated.  They are
+still available in lxml 2.0 and will be removed in lxml 2.1:
+
+* The ``tounicode()`` function was replaced by the call
+  ``tostring(encoding=unicode)``.
+
+* CamelCaseNamed module functions and methods were renamed to their
+  underscore equivalents to follow `PEP 8`_ in naming.
+
+  - ``etree.clearErrorLog()``, use ``etree.clear_error_log()``
+
+  - ``etree.useGlobalPythonLog()``, use
+    ``etree.use_global_python_log()``
+
+  - ``etree.ElementClassLookup.setFallback()``, use
+    ``etree.ElementClassLookup.set_fallback()``
+
+  - ``etree.getDefaultParser()``, use ``etree.get_default_parser()``
+
+  - ``etree.setDefaultParser()``, use ``etree.set_default_parser()``
+
+  - ``etree.setElementClassLookup()``, use
+    ``etree.set_element_class_lookup()``
+
+  - ``XMLParser.setElementClassLookup()``, use ``.set_element_class_lookup()``
+
+  - ``HTMLParser.setElementClassLookup()``, use ``.set_element_class_lookup()``
+
+    Note that ``parser.setElementClassLookup()`` has not been removed
+    yet, although ``parser.set_element_class_lookup()`` should be used
+    instead.
+
+  - ``xpath_evaluator.registerNamespace()``, use
+    ``xpath_evaluator.register_namespace()``
+
+  - ``xpath_evaluator.registerNamespaces()``, use
+    ``xpath_evaluator.register_namespaces()``
+
+  - ``objectify.setPytypeAttributeTag``, use
+    ``objectify.set_pytype_attribute_tag``
+
+  - ``objectify.setDefaultParser()``, use
+    ``objectify.set_default_parser()``
+
+* The ``.getiterator()`` method on Elements and ElementTrees was
+  renamed to ``.iter()`` to follow ElementTree 1.3.
+
+.. _`PEP 8`: http://www.python.org/dev/peps/pep-0008/
+
+
+New modules
+===========
+
+The most visible changes in lxml 2.0 regard the new modules that were added.
+
+
+lxml.usedoctest
+---------------
+
+A very useful module for doctests based on XML or HTML is
+``lxml.doctestcompare``.  It provides a relaxed comparison mechanism
+for XML and HTML in doctests.  Using it for XML comparisons is as
+simple as:
+
+.. sourcecode:: pycon
+
+    >>> import lxml.usedoctest
+
+and for HTML comparisons:
+
+.. sourcecode:: pycon
+
+    >>> import lxml.html.usedoctest
+
+
+lxml.html
+---------
+
+The largest new package that was added to lxml 2.0 is `lxml.html`_.  It
+contains various tools and modules for HTML handling.  The major features
+include support for cleaning up HTML (removing unwanted content), a readable
+HTML diff and various tools for working with links.
+
+.. _`lxml.html`: lxmlhtml.html
+
+
+lxml.cssselect
+--------------
+
+The Cascading Stylesheet Language (CSS_) has a very short and generic path
+language for pointing at elements in XML/HTML trees (`CSS selectors`_).  The module
+lxml.cssselect_ provides an implementation based on XPath.
+
+.. _lxml.cssselect: cssselect.html
+.. _CSS: http://www.w3.org/Style/CSS/
+.. _`CSS selectors`: http://www.w3.org/TR/CSS21/selector.html
diff --git a/doc/sphinx/_sources/lxmlhtml.txt b/doc/sphinx/_sources/lxmlhtml.txt
new file mode 100644 (file)
index 0000000..ce6d962
--- /dev/null
@@ -0,0 +1,759 @@
+=========
+lxml.html
+=========
+
+:Author:
+  Ian Bicking
+
+Since version 2.0, lxml comes with a dedicated Python package for
+dealing with HTML: ``lxml.html``.  It is based on lxml's HTML parser,
+but provides a special Element API for HTML elements, as well as a
+number of utilities for common HTML processing tasks.
+
+.. contents::
+.. 
+   1  Parsing HTML
+     1.1  Parsing HTML fragments
+     1.2  Really broken pages
+   2  HTML Element Methods
+   3  Running HTML doctests
+   4  Creating HTML with the E-factory
+     4.1  Viewing your HTML
+   5  Working with links
+     5.1  Functions
+   6  Forms
+     6.1  Form Filling Example
+     6.2  Form Submission
+   7  Cleaning up HTML
+     7.1  autolink
+     7.2  wordwrap
+   8  HTML Diff
+   9  Examples
+     9.1  Microformat Example
+
+The main API is based on the `lxml.etree`_ API, and thus, on the ElementTree_
+API.
+
+.. _`lxml.etree`: tutorial.html
+.. _ElementTree:  http://effbot.org/zone/element-index.htm
+
+
+Parsing HTML
+============
+
+Parsing HTML fragments
+----------------------
+
+There are several functions available to parse HTML:
+
+``parse(filename_url_or_file)``:
+    Parses the named file or url, or if the object has a ``.read()``
+    method, parses from that.
+
+    If you give a URL, or if the object has a ``.geturl()`` method (as
+    file-like objects from ``urllib.urlopen()`` have), then that URL
+    is used as the base URL.  You can also provide an explicit
+    ``base_url`` keyword argument.
+
+``document_fromstring(string)``:
+    Parses a document from the given string.  This always creates a
+    correct HTML document, which means the parent node is ``<html>``,
+    and there is a body and possibly a head.
+
+``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
+    wrap the element in a ``<div>``.
+
+``fragments_fromstring(string)``:
+    Returns a list of the elements found in the fragment.
+
+``fromstring(string)``:
+    Returns ``document_fromstring`` or ``fragment_fromstring``, based
+    on whether the string looks like a full document, or just a
+    fragment.
+
+Really broken pages
+-------------------
+
+The normal HTML parser is capable of handling broken HTML, but for
+pages that are far enough from HTML to call them 'tag soup', it may
+still fail to parse the page in a useful way.  A way to deal with this
+is ElementSoup_, which deploys the well-known BeautifulSoup_ parser to
+build an lxml HTML tree.
+
+.. _BeautifulSoup: http://www.crummy.com/software/BeautifulSoup/
+.. _ElementSoup: elementsoup.html
+
+However, note that the most common problem with web pages is the lack
+of (or the existence of incorrect) encoding declarations.  It is
+therefore often sufficient to only use the encoding detection of
+BeautifulSoup, called UnicodeDammit, and to leave the rest to lxml's
+own HTML parser, which is several times faster.
+
+
+HTML Element Methods
+====================
+
+HTML elements have all the methods that come with ElementTree, but
+also include some extra methods:
+
+``.drop_tree()``:
+    Drops the element and all its children.  Unlike
+    ``el.getparent().remove(el)`` this does *not* remove the tail
+    text; with ``drop_tree`` the tail text is merged with the previous
+    element.
+
+``.drop_tag()``:
+    Drops the tag, but keeps its children and text.
+
+``.find_class(class_name)``:
+    Returns a list of all the elements with the given CSS class name.
+    Note that class names are space separated in HTML, so
+    ``doc.find_class_name('highlight')`` will find an element like
+    ``<div class="sidebar highlight">``.  Class names *are* case
+    sensitive.
+
+``.find_rel_links(rel)``:
+    Returns a list of all the ``<a rel="{rel}">`` elements.  E.g.,
+    ``doc.find_rel_links('tag')`` returns all the links `marked as
+    tags <http://microformats.org/wiki/rel-tag>`_.
+
+``.get_element_by_id(id, default=None)``:
+    Return the element with the given ``id``, or the ``default`` if
+    none is found.  If there are multiple elements with the same id
+    (which there shouldn't be, but there often is), this returns only
+    the first.
+
+``.text_content()``:
+    Returns the text content of the element, including the text
+    content of its children, with no markup.
+
+``.cssselect(expr)``:
+    Select elements from this element and its children, using a CSS
+    selector expression.  (Note that ``.xpath(expr)`` is also
+    available as on all lxml elements.)
+
+``.label``:
+    Returns the corresponding ``<label>`` element for this element, if
+    any exists (None if there is none).  Label elements have a
+    ``label.for_element`` attribute that points back to the element.
+
+``.base_url``:
+    The base URL for this element, if one was saved from the parsing.
+    This attribute is not settable.  Is None when no base URL was
+    saved.
+
+Running HTML doctests
+=====================
+
+One of the interesting modules in the ``lxml.html`` package deals with
+doctests.  It can be hard to compare two HTML pages for equality, as
+whitespace differences aren't meaningful and the structural formatting
+can differ.  This is even more a problem in doctests, where output is
+tested for equality and small differences in whitespace or the order
+of attributes can let a test fail.  And given the verbosity of
+tag-based languages, it may take more than a quick look to find the
+actual differences in the doctest output.
+
+Luckily, lxml provides the ``lxml.doctestcompare`` module that
+supports relaxed comparison of XML and HTML pages and provides a
+readable diff in the output when a test fails.  The HTML comparison is
+most easily used by importing the ``usedoctest`` module in a doctest:
+
+.. sourcecode:: pycon
+
+    >>> import lxml.html.usedoctest
+
+Now, if you have a HTML document and want to compare it to an expected result
+document in a doctest, you can do the following:
+
+.. sourcecode:: pycon
+
+    >>> import lxml.html
+    >>> html = lxml.html.fromstring('''\
+    ...    <html><body onload="" color="white">
+    ...      <p>Hi  !</p>
+    ...    </body></html>
+    ... ''')
+
+    >>> print lxml.html.tostring(html)
+    <html><body onload="" color="white"><p>Hi !</p></body></html>
+
+    >>> print lxml.html.tostring(html)
+    <html> <body color="white" onload=""> <p>Hi    !</p> </body> </html>
+
+    >>> print lxml.html.tostring(html)
+    <html>
+      <body color="white" onload="">
+        <p>Hi !</p>
+      </body>
+    </html>
+
+In documentation, you would likely prefer the pretty printed HTML output, as
+it is the most readable.  However, the three documents are equivalent from the
+point of view of an HTML tool, so the doctest will silently accept any of the
+above.  This allows you to concentrate on readability in your doctests, even
+if the real output is a straight ugly HTML one-liner.
+
+Note that there is also an ``lxml.usedoctest`` module which you can
+import for XML comparisons.  The HTML parser notably ignores
+namespaces and some other XMLisms.
+
+
+Creating HTML with the E-factory
+================================
+
+.. _`E-factory`: http://online.effbot.org/2006_11_01_archive.htm#et-builder
+
+lxml.html comes with a predefined HTML vocabulary for the `E-factory`_,
+originally written by Fredrik Lundh.  This allows you to quickly generate HTML
+pages and fragments:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.html import builder as E
+    >>> from lxml.html import usedoctest
+    >>> html = E.HTML(
+    ...   E.HEAD(
+    ...     E.LINK(rel="stylesheet", href="great.css", type="text/css"),
+    ...     E.TITLE("Best Page Ever")
+    ...   ),
+    ...   E.BODY(
+    ...     E.H1(E.CLASS("heading"), "Top News"),
+    ...     E.P("World News only on this page", style="font-size: 200%"),
+    ...     "Ah, and here's some more text, by the way.",
+    ...     lxml.html.fromstring("<p>... and this is a parsed fragment ...</p>")
+    ...   )
+    ... )
+
+    >>> print lxml.html.tostring(html)
+    <html>
+      <head>
+        <link href="great.css" rel="stylesheet" type="text/css">
+        <title>Best Page Ever</title>
+      </head>
+      <body>
+        <h1 class="heading">Top News</h1>
+        <p style="font-size: 200%">World News only on this page</p>
+        Ah, and here's some more text, by the way.
+        <p>... and this is a parsed fragment ...</p>
+      </body>
+    </html>
+
+Note that you should use ``lxml.html.tostring`` and **not**
+``lxml.tostring``.  ``lxml.tostring(doc)`` will return the XML
+representation of the document, which is not valid HTML.  In
+particular, things like ``<script src="..."></script>`` will be
+serialized as ``<script src="..." />``, which completely confuses
+browsers.
+
+Viewing your HTML
+-----------------
+
+A handy method for viewing your HTML:
+``lxml.html.open_in_browser(lxml_doc)`` will write the document to
+disk and open it in a browser (with the `webbrowser module
+<http://python.org/doc/current/lib/module-webbrowser.html>`_).
+
+Working with links
+==================
+
+There are several methods on elements that allow you to see and modify
+the links in a document.
+
+``.iterlinks()``:
+    This yields ``(element, attribute, link, pos)`` for every link in
+    the document.  ``attribute`` may be None if the link is in the
+    text (as will be the case with a ``<style>`` tag with
+    ``@import``).  
+
+    This finds any link in an ``action``, ``archive``, ``background``,
+    ``cite``, ``classid``, ``codebase``, ``data``, ``href``,
+    ``longdesc``, ``profile``, ``src``, ``usemap``, ``dynsrc``, or
+    ``lowsrc`` attribute.  It also searches ``style`` attributes for
+    ``url(link)``, and ``<style>`` tags for ``@import`` and ``url()``.
+
+    This function does *not* pay attention to ``<base href>``.
+
+``.resolve_base_href()``:
+    This function will modify the document in-place to take account of
+    ``<base href>`` if the document contains that tag.  In the process
+    it will also remove that tag from the document.
+
+``.make_links_absolute(base_href, resolve_base_href=True)``:
+    This makes all links in the document absolute, assuming that
+    ``base_href`` is the URL of the document.  So if you pass
+    ``base_href="http://localhost/foo/bar.html"`` and there is a link
+    to ``baz.html`` that will be rewritten as
+    ``http://localhost/foo/baz.html``.
+
+    If ``resolve_base_href`` is true, then any ``<base href>`` tag
+    will be taken into account (just calling
+    ``self.resolve_base_href()``).
+
+``.rewrite_links(link_repl_func, resolve_base_href=True, base_href=None)``:
+    This rewrites all the links in the document using your given link
+    replacement function.  If you give a ``base_href`` value, all
+    links will be passed in after they are joined with this URL.
+
+    For each link ``link_repl_func(link)`` is called.  That function
+    then returns the new link, or None to remove the attribute or tag
+    that contains the link.  Note that all links will be passed in,
+    including links like ``"#anchor"`` (which is purely internal), and
+    things like ``"mailto:bob@example.com"`` (or ``javascript:...``).
+
+    If you want access to the context of the link, you should use
+    ``.iterlinks()`` instead.
+
+Functions
+---------
+
+In addition to these methods, there are corresponding functions:
+
+* ``iterlinks(html)``
+* ``make_links_absolute(html, base_href, ...)``
+* ``rewrite_links(html, link_repl_func, ...)``
+* ``resolve_base_href(html)``
+
+These functions will parse ``html`` if it is a string, then return the new
+HTML as a string.  If you pass in a document, the document will be copied
+(except for ``iterlinks()``), the method performed, and the new document
+returned.
+
+Forms
+=====
+
+Any ``<form>`` elements in a document are available through
+the list ``doc.forms`` (e.g., ``doc.forms[0]``).  Form, input, select,
+and textarea elements each have special methods.
+
+Input elements (including ``<select>`` and ``<textarea>``) have these
+attributes:
+
+``.name``:
+    The name of the element.
+
+``.value``:
+    The value of an input, the content of a textarea, the selected
+    option(s) of a select.  This attribute can be set.  
+
+    In the case of a select that takes multiple options (``<select
+    multiple>``) this will be a set of the selected options; you can
+    add or remove items to select and unselect the options.
+
+Select attributes:
+
+``.value_options``:
+    For select elements, this is all the *possible* values (the values
+    of all the options).
+
+``.multiple``:
+    For select elements, true if this is a ``<select multiple>``
+    element.
+
+Input attributes:
+
+``.type``:
+    The type attribute in ``<input>`` elements.
+
+``.checkable``:
+    True if this can be checked (i.e., true for type=radio and
+    type=checkbox).
+
+``.checked``:
+    If this element is checkable, the checked state.  Raises
+    AttributeError on non-checkable inputs.
+
+The form itself has these attributes:
+
+``.inputs``:
+    A dictionary-like object that can be used to access input elements
+    by name.  When there are multiple input elements with the same
+    name, this returns list-like structures that can also be used to
+    access the options and their values as a group.
+
+``.fields``:
+    A dictionary-like object used to access *values* by their name.
+    ``form.inputs`` returns elements, this only returns values.
+    Setting values in this dictionary will effect the form inputs.
+    Basically ``form.fields[x]`` is equivalent to
+    ``form.inputs[x].value`` and ``form.fields[x] = y`` is equivalent
+    to ``form.inputs[x].value = y``.  (Note that sometimes
+    ``form.inputs[x]`` returns a compound object, but these objects
+    also have ``.value`` attributes.)
+
+    If you set this attribute, it is equivalent to
+    ``form.fields.clear(); form.fields.update(new_value)``
+
+``.form_values()``:
+    Returns a list of ``[(name, value), ...]``, suitable to be passed
+    to ``urllib.urlencode()`` for form submission.
+
+``.action``:
+    The ``action`` attribute.  This is resolved to an absolute URL if
+    possible.
+
+``.method``:
+    The ``method`` attribute, which defaults to ``GET``.
+
+Form Filling Example
+--------------------
+
+Note that you can change any of these attributes (values, method,
+action, etc) and then serialize the form to see the updated values.
+You can, for instance, do:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.html import fromstring, tostring
+    >>> form_page = fromstring('''<html><body><form>
+    ...   Your name: <input type="text" name="name"> <br>
+    ...   Your phone: <input type="text" name="phone"> <br>
+    ...   Your favorite pets: <br>
+    ...   Dogs: <input type="checkbox" name="interest" value="dogs"> <br>
+    ...   Cats: <input type="checkbox" name="interest" value="cats"> <br>
+    ...   Llamas: <input type="checkbox" name="interest" value="llamas"> <br>
+    ...   <input type="submit"></form></body></html>''')
+    >>> form = form_page.forms[0]
+    >>> form.fields = dict(
+    ...     name='John Smith',
+    ...     phone='555-555-3949',
+    ...     interest=set(['cats', 'llamas']))
+    >>> print tostring(form)
+    <html>
+      <body>
+        <form>
+        Your name:
+          <input name="name" type="text" value="John Smith">
+          <br>Your phone:
+          <input name="phone" type="text" value="555-555-3949">
+          <br>Your favorite pets:
+          <br>Dogs:
+          <input name="interest" type="checkbox" value="dogs">
+          <br>Cats:
+          <input checked name="interest" type="checkbox" value="cats">
+          <br>Llamas:
+          <input checked name="interest" type="checkbox" value="llamas">
+          <br>
+          <input type="submit">
+        </form>
+      </body>
+    </html>
+
+
+Form Submission
+---------------
+
+You can submit a form with ``lxml.html.submit_form(form_element)``.
+This will return a file-like object (the result of
+``urllib.urlopen()``).
+
+If you have extra input values you want to pass you can use the
+keyword argument ``extra_values``, like ``extra_values={'submit':
+'Yes!'}``.  This is the only way to get submit values into the form,
+as there is no state of "submitted" for these elements.
+
+You can pass in an alternate opener with the ``open_http`` keyword
+argument, which is a function with the signature ``open_http(method,
+url, values)``.
+
+Example:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.html import parse, submit_form
+    >>> page = parse('http://tinyurl.com').getroot()
+    >>> page.forms[1].fields['url'] = 'http://codespeak.net/lxml/'
+    >>> result = parse(submit_form(page.forms[1])).getroot()
+    >>> [a.attrib['href'] for a in result.xpath("//a[@target='_blank']")]
+    ['http://tinyurl.com/2xae8s', 'http://preview.tinyurl.com/2xae8s']
+
+Cleaning up HTML
+================
+
+The module ``lxml.html.clean`` provides a ``Cleaner`` class for cleaning up
+HTML pages.  It supports removing embedded or script content, special tags,
+CSS style annotations and much more.
+
+Say, you have an evil web page from an untrusted source that contains lots of
+content that upsets browsers and tries to run evil code on the client side:
+
+.. sourcecode:: pycon
+
+    >>> html = '''\
+    ... <html>
+    ...  <head>
+    ...    <script type="text/javascript" src="evil-site"></script>
+    ...    <link rel="alternate" type="text/rss" src="evil-rss">
+    ...    <style>
+    ...      body {background-image: url(javascript:do_evil)};
+    ...      div {color: expression(evil)};
+    ...    </style>
+    ...  </head>
+    ...  <body onload="evil_function()">
+    ...    <!-- I am interpreted for EVIL! -->
+    ...    <a href="javascript:evil_function()">a link</a>
+    ...    <a href="#" onclick="evil_function()">another link</a>
+    ...    <p onclick="evil_function()">a paragraph</p>
+    ...    <div style="display: none">secret EVIL!</div>
+    ...    <object> of EVIL! </object>
+    ...    <iframe src="evil-site"></iframe>
+    ...    <form action="evil-site">
+    ...      Password: <input type="password" name="password">
+    ...    </form>
+    ...    <blink>annoying EVIL!</blink>
+    ...    <a href="evil-site">spam spam SPAM!</a>
+    ...    <image src="evil!">
+    ...  </body>
+    ... </html>'''
+
+To remove the all suspicious content from this unparsed document, use the
+``clean_html`` function:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.html.clean import clean_html
+    
+    >>> print clean_html(html)
+    <html>
+      <body>
+        <div>
+          <style>/* deleted */</style>
+          <a href="">a link</a>
+          <a href="#">another link</a>
+          <p>a paragraph</p>
+          <div>secret EVIL!</div>
+          of EVIL!
+          Password:
+          annoying EVIL!
+          <a href="evil-site">spam spam SPAM!</a>
+          <img src="evil!">
+        </div>
+      </body>
+    </html>
+
+The ``Cleaner`` class supports several keyword arguments to control exactly
+which content is removed:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.html.clean import Cleaner
+
+    >>> cleaner = Cleaner(page_structure=False, links=False)
+    >>> print cleaner.clean_html(html)
+    <html>
+      <head>
+        <link rel="alternate" src="evil-rss" type="text/rss">
+        <style>/* deleted */</style>
+      </head>
+      <body>
+        <a href="">a link</a>
+        <a href="#">another link</a>
+        <p>a paragraph</p>
+        <div>secret EVIL!</div>
+        of EVIL!
+        Password:
+        annoying EVIL!
+        <a href="evil-site">spam spam SPAM!</a>
+        <img src="evil!">
+      </body>
+    </html>
+
+    >>> cleaner = Cleaner(style=True, links=True, add_nofollow=True,
+    ...                   page_structure=False, safe_attrs_only=False)
+    
+    >>> print cleaner.clean_html(html)
+    <html>
+      <head>
+      </head>
+      <body>
+        <a href="">a link</a>
+        <a href="#">another link</a>
+        <p>a paragraph</p>
+        <div>secret EVIL!</div>
+        of EVIL!
+        Password:
+        annoying EVIL!
+        <a href="evil-site" rel="nofollow">spam spam SPAM!</a>
+        <img src="evil!">
+      </body>
+    </html>
+
+You can also whitelist some otherwise dangerous content with
+``Cleaner(host_whitelist=['www.youtube.com'])``, which would allow
+embedded media from YouTube, while still filtering out embedded media
+from other sites.
+
+See the docstring of ``Cleaner`` for the details of what can be
+cleaned.
+
+
+autolink
+--------
+
+In addition to cleaning up malicious HTML, ``lxml.html.clean``
+contains functions to do other things to your HTML.  This includes
+autolinking::
+
+   autolink(doc, ...)
+
+   autolink_html(html, ...)
+
+This finds anything that looks like a link (e.g.,
+``http://example.com``) in the *text* of an HTML document, and
+turns it into an anchor.  It avoids making bad links.
+
+Links in the elements ``<textarea>``, ``<pre>``, ``<code>``,
+anything in the head of the document.  You can pass in a list of
+elements to avoid in ``avoid_elements=['textarea', ...]``.
+
+Links to some hosts can be avoided.  By default links to
+``localhost*``, ``example.*`` and ``127.0.0.1`` are not
+autolinked.  Pass in ``avoid_hosts=[list_of_regexes]`` to control
+this.
+
+Elements with the ``nolink`` CSS class are not autolinked.  Pass
+in ``avoid_classes=['code', ...]`` to control this.
+
+The ``autolink_html()`` version of the function parses the HTML
+string first, and returns a string.
+
+
+wordwrap
+--------
+
+You can also wrap long words in your html::
+
+   word_break(doc, max_width=40, ...)
+
+   word_break_html(html, ...)
+
+This finds any long words in the text of the document and inserts
+``&#8203;`` in the document (which is the Unicode zero-width space).
+
+This avoids the elements ``<pre>``, ``<textarea>``, and ``<code>``.
+You can control this with ``avoid_elements=['textarea', ...]``.
+
+It also avoids elements with the CSS class ``nobreak``.  You can
+control this with ``avoid_classes=['code', ...]``.
+
+Lastly you can control the character that is inserted with
+``break_character=u'\u200b'``.  However, you cannot insert markup,
+only text.
+
+``word_break_html(html)`` parses the HTML document and returns a
+string.
+
+HTML Diff
+=========
+
+The module ``lxml.html.diff`` offers some ways to visualize
+differences in HTML documents.  These differences are *content*
+oriented.  That is, changes in markup are largely ignored; only
+changes in the content itself are highlighted.
+
+There are two ways to view differences: ``htmldiff`` and
+``html_annotate``.  One shows differences with ``<ins>`` and
+``<del>``, while the other annotates a set of changes similar to ``svn
+blame``.  Both these functions operate on text, and work best with
+content fragments (only what goes in ``<body>``), not complete
+documents.
+
+Example of ``htmldiff``:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.html.diff import htmldiff, html_annotate
+    >>> doc1 = '''<p>Here is some text.</p>'''
+    >>> doc2 = '''<p>Here is <b>a lot</b> of <i>text</i>.</p>'''
+    >>> doc3 = '''<p>Here is <b>a little</b> <i>text</i>.</p>'''
+    >>> print htmldiff(doc1, doc2)
+    <p>Here is <ins><b>a lot</b> of <i>text</i>.</ins> <del>some text.</del> </p>
+    >>> print html_annotate([(doc1, 'author1'), (doc2, 'author2'),
+    ...                      (doc3, 'author3')])
+    <p><span title="author1">Here is</span>
+       <b><span title="author2">a</span>
+       <span title="author3">little</span></b>
+       <i><span title="author2">text</span></i>
+       <span title="author2">.</span></p>
+
+As you can see, it is imperfect as such things tend to be.  On larger
+tracts of text with larger edits it will generally do better.
+
+The ``html_annotate`` function can also take an optional second
+argument, ``markup``.  This is a function like ``markup(text,
+version)`` that returns the given text marked up with the given
+version.  The default version, the output of which you see in the
+example, looks like:
+
+.. sourcecode:: python
+
+    def default_markup(text, version):
+        return '<span title="%s">%s</span>' % (
+            cgi.escape(unicode(version), 1), text)
+
+Examples
+========
+
+Microformat Example
+-------------------
+
+This example parses the `hCard <http://microformats.org/wiki/hcard>`_
+microformat.
+
+First we get the page:
+
+.. sourcecode:: pycon
+
+    >>> import urllib
+    >>> from lxml.html import fromstring
+    >>> url = 'http://microformats.org/'
+    >>> content = urllib.urlopen(url).read()
+    >>> doc = fromstring(content)
+    >>> doc.make_links_absolute(url)
+
+Then we create some objects to put the information in:
+
+.. sourcecode:: pycon
+
+    >>> class Card(object):
+    ...     def __init__(self, **kw):
+    ...         for name, value in kw:
+    ...             setattr(self, name, value)
+    >>> class Phone(object):
+    ...     def __init__(self, phone, types=()):
+    ...         self.phone, self.types = phone, types
+
+And some generally handy functions for microformats:
+
+.. sourcecode:: pycon
+
+    >>> def get_text(el, class_name):
+    ...     els = el.find_class(class_name)
+    ...     if els:
+    ...         return els[0].text_content()
+    ...     else:
+    ...         return ''
+    >>> def get_value(el):
+    ...     return get_text(el, 'value') or el.text_content()
+    >>> def get_all_texts(el, class_name):
+    ...     return [e.text_content() for e in els.find_class(class_name)]
+    >>> def parse_addresses(el):
+    ...     # Ideally this would parse street, etc.
+    ...     return el.find_class('adr')
+
+Then the parsing:
+
+.. sourcecode:: pycon
+
+    >>> for el in doc.find_class('hcard'):
+    ...     card = Card()
+    ...     card.el = el
+    ...     card.fn = get_text(el, 'fn')
+    ...     card.tels = []
+    ...     for tel_el in card.find_class('tel'):
+    ...         card.tels.append(Phone(get_value(tel_el),
+    ...                                get_all_texts(tel_el, 'type')))
+    ...     card.addresses = parse_addresses(el)
diff --git a/doc/sphinx/_sources/main.txt b/doc/sphinx/_sources/main.txt
new file mode 100644 (file)
index 0000000..c89ddcd
--- /dev/null
@@ -0,0 +1,293 @@
+lxml
+====
+
+.. meta::
+  :description: lxml - the most feature-rich and easy-to-use library for processing XML and HTML in the Python language
+  :keywords: Python XML, XML processing, HTML, lxml, simple XML, ElementTree, etree, lxml.etree, objectify, XML parsing, XML validation, XPath, XSLT
+
+.. class:: pagequote
+
+| `» lxml takes all the pain out of XML. Â« <http://thread.gmane.org/gmane.comp.python.lxml.devel/3252/focus=3258>`_
+| Stephan Richter
+
+.. class:: eyecatcher
+
+     lxml is the most feature-rich
+     and easy-to-use library
+     for processing XML and HTML
+     in the Python language.
+
+
+.. 
+   1  Introduction
+   2  Documentation
+   3  Download
+   4  Mailing list
+   5  Bug tracker
+   6  License
+   7  Old Versions
+
+
+Introduction
+------------
+
+The lxml XML toolkit is a Pythonic binding for the C libraries
+libxml2_ and libxslt_.  It is unique in that it combines the speed and
+XML feature completeness of these libraries with the simplicity of a
+native Python API, mostly compatible but superior to the well-known
+ElementTree_ API.  See the introduction_ for more information about
+background and goals of the lxml project.  Some common questions are
+answered in the FAQ_.
+
+For commercial consulting and customisations, please `contact Stefan Behnel`_.
+
+.. _`contact Stefan Behnel`: http://consulting.behnel.de/
+.. _libxml2: http://xmlsoft.org/
+.. _libxslt: http://xmlsoft.org/XSLT/
+
+.. _introduction: intro.html
+.. _FAQ:          FAQ.html
+
+
+Documentation
+-------------
+
+The complete lxml documentation is available for download as `PDF
+documentation`_.  The HTML documentation from this web site is part of
+the normal `source download <#download>`_.
+
+* Tutorials:
+
+  * the `lxml.etree tutorial for XML processing`_
+
+  * John Shipman's tutorial on `Python XML processing with lxml`_
+
+  * Fredrik Lundh's `tutorial for ElementTree`_
+
+* ElementTree:
+
+  * `ElementTree API`_
+
+  * compatibility_ and differences of lxml.etree
+
+  * `ElementTree performance`_ characteristics and comparison
+
+* lxml.etree:
+
+  * `lxml.etree specific API`_ documentation
+
+  * the `generated API documentation`_ as a reference
+
+  * parsing_ and validating_ XML
+
+  * `XPath and XSLT`_ support
+
+  * Python `XPath extension functions`_ for XPath and XSLT
+
+  * `custom XML element classes`_ for custom XML APIs (see `EuroPython 2008 talk`_)
+
+  * a `SAX compliant API`_ for interfacing with other XML tools
+
+  * a `C-level API`_ for interfacing with external C/Cython modules
+
+* lxml.objectify:
+
+  * `lxml.objectify`_ API documentation
+
+  * a brief comparison of `objectify and etree`_
+
+lxml.etree follows the ElementTree_ API as much as possible, building
+it on top of the native libxml2 tree.  If you are new to ElementTree,
+start with the `lxml.etree tutorial for XML processing`_.  See also the
+ElementTree compatibility_ overview and the `ElementTree performance`_
+page comparing lxml to the original ElementTree_ and cElementTree_
+implementations.
+
+Right after the `lxml.etree tutorial for XML processing`_ and the
+ElementTree_ documentation, the next place to look is the `lxml.etree
+specific API`_ documentation.  It describes how lxml extends the
+ElementTree API to expose libxml2 and libxslt specific XML
+functionality, such as XPath_, `Relax NG`_, `XML Schema`_, XSLT_, and
+`c14n`_.  Python code can be called from XPath expressions and XSLT
+stylesheets through the use of `XPath extension functions`_.  lxml
+also offers a `SAX compliant API`_, that works with the SAX support in
+the standard library.
+
+There is a separate module `lxml.objectify`_ that implements a data-binding
+API on top of lxml.etree.  See the `objectify and etree`_ FAQ entry for a
+comparison.
+
+In addition to the ElementTree API, lxml also features a sophisticated
+API for `custom XML element classes`_.  This is a simple way to write
+arbitrary XML driven APIs on top of lxml.  lxml.etree also has a
+`C-level API`_ that can be used to efficiently extend lxml.etree in
+external C modules, including fast custom element class support.
+
+.. _ElementTree:  http://effbot.org/zone/element-index.htm
+.. _`ElementTree API`:  http://effbot.org/zone/element-index.htm#documentation
+.. _cElementTree: http://effbot.org/zone/celementtree.htm
+
+.. _`tutorial for ElementTree`: http://effbot.org/zone/element.htm
+.. _`lxml.etree tutorial for XML processing`: tutorial.html
+.. _`Python XML processing with lxml`: http://www.nmt.edu/tcc/help/pubs/pylxml/
+.. _`generated API documentation`:   api/index.html
+.. _`ElementTree performance`: performance.html
+.. _`compatibility`: compatibility.html
+.. _`lxml.etree specific API`: api.html
+.. _`parsing`: parsing.html
+.. _`validating`: validation.html
+.. _`XPath and XSLT`: xpathxslt.html
+.. _`XPath extension functions`: extensions.html
+.. _`custom XML element classes`: element_classes.html
+.. _`SAX compliant API`: sax.html
+.. _`C-level API`: capi.html
+.. _`lxml.objectify`: objectify.html
+.. _`objectify and etree`: FAQ.html#what-is-the-difference-between-lxml-etree-and-lxml-objectify
+.. _`EuroPython 2008 talk`: s5/lxml-ep2008.html
+
+.. _XPath: http://www.w3.org/TR/xpath/
+.. _`Relax NG`: http://www.relaxng.org/
+.. _`XML Schema`: http://www.w3.org/XML/Schema
+.. _`XSLT`: http://www.w3.org/TR/xslt
+.. _`c14n`: http://www.w3.org/TR/xml-c14n
+
+
+Download
+--------
+
+The best way to download lxml is to visit `lxml at the Python Package
+Index`_ (PyPI).  It has the source that compiles on various platforms.
+The source distribution is signed with `this key`_.  Binary builds for
+MS Windows usually become available through PyPI a few days after a
+source release.  If you can't wait, consider trying a less recent
+release version first.
+
+The latest version is `lxml 2.3`_, released 2011-02-06
+(`changes for 2.3`_).  `Older versions`_ are listed below.
+
+Please take a look at the `installation instructions`_!
+
+This complete web site (including the generated API documentation) is
+part of the source distribution, so if you want to download the
+documentation for offline use, take the source archive and copy the
+``doc/html`` directory out of the source tree.
+
+It's also possible to check out the latest development version of lxml
+from github directly, using a command like this (assuming you use hg
+and have hg-git installed)::
+
+  hg clone https://github.com/lxml/lxml.git lxml
+
+You can also browse the `source repository`_ and its history through
+the web.  Please read `how to build lxml from source`_ first.  The
+`latest CHANGES`_ of the developer version are also accessible.  You
+can check there if a bug you found has been fixed or a feature you
+want has been implemented in the latest trunk version.
+
+.. _`lxml at the Python Package Index`: http://pypi.python.org/pypi/lxml/
+.. _`this key`: pubkey.asc
+.. _`Older versions`: #old-versions
+.. _`installation instructions`: installation.html
+.. _`how to build lxml from source`: build.html
+.. _`source repository`: https://github.com/lxml/lxml/
+.. _`latest CHANGES`: https://github.com/lxml/lxml/blob/master/CHANGES.txt
+
+
+Mailing list
+------------
+
+Questions? Suggestions? Code to contribute? We have a `mailing list`_.
+
+You can search the archive with Gmane_ or Google_.
+
+.. _`mailing list`: http://lxml.de/mailinglist/
+.. _Gmane: http://blog.gmane.org/gmane.comp.python.lxml.devel
+.. _Google: http://www.google.com/webhp?q=site:comments.gmane.org%2Fgmane.comp.python.lxml.devel+
+
+
+Bug tracker
+-----------
+
+lxml uses the `launchpad bug tracker`_.  If you are sure you found a
+bug in lxml, please file a bug report there.  If you are not sure
+whether some unexpected behaviour of lxml is a bug or not, please
+check the documentation and ask on the `mailing list`_ first.  Do not
+forget to search the archive (e.g. with Gmane_)!
+
+.. _`launchpad bug tracker`: https://launchpad.net/lxml/
+
+
+License
+-------
+
+The lxml library is shipped under a `BSD license`_. libxml2 and libxslt2
+itself are shipped under the `MIT license`_. There should therefore be no
+obstacle to using lxml in your codebase.
+
+.. _`BSD license`: https://github.com/lxml/lxml/blob/master/doc/licenses/BSD.txt
+.. _`MIT license`: http://www.opensource.org/licenses/mit-license.html
+
+
+Old Versions
+------------
+
+See the web sites of lxml `1.3 <http://lxml.de/1.3/>`_, `2.0
+<http://lxml.de/2.0/>`_, `2.1 <http://lxml.de/2.1/>`_, `2.2
+<http://lxml.de/2.2/>`_ and the `latest in-development version
+<http://lxml.de/dev/>`_
+
+.. _`PDF documentation`: lxmldoc-2.3.pdf
+
+* `lxml 2.3beta1`_, released 2010-09-06 (`changes for 2.3beta1`_)
+
+* `lxml 2.3alpha2`_, released 2010-07-24 (`changes for 2.3alpha2`_)
+
+* `lxml 2.3alpha1`_, released 2010-06-19 (`changes for 2.3alpha1`_)
+
+* `lxml 2.2.8`_, released 2010-09-02 (`changes for 2.2.8`_)
+
+* `lxml 2.2.7`_, released 2010-07-24 (`changes for 2.2.7`_)
+
+* `lxml 2.2.6`_, released 2010-03-02 (`changes for 2.2.6`_)
+
+* `lxml 2.2.5`_, released 2010-02-28 (`changes for 2.2.5`_)
+
+* `lxml 2.2.4`_, released 2009-11-11 (`changes for 2.2.4`_)
+
+* `lxml 2.2.3`_, released 2009-10-30 (`changes for 2.2.3`_)
+
+* `lxml 2.2.2`_, released 2009-06-21 (`changes for 2.2.2`_)
+
+* `lxml 2.2.1`_, released 2009-06-02 (`changes for 2.2.1`_)
+
+* `lxml 2.2`_, released 2009-03-21 (`changes for 2.2`_)
+
+* `older releases <http://lxml.de/2.2/#old-versions>`_
+
+.. _`lxml 2.3`: /files/lxml-2.3.tgz
+.. _`lxml 2.3beta1`: /files/lxml-2.3beta1.tgz
+.. _`lxml 2.3alpha2`: /files/lxml-2.3alpha2.tgz
+.. _`lxml 2.3alpha1`: /files/lxml-2.3alpha1.tgz
+.. _`lxml 2.2.8`: /files/lxml-2.2.8.tgz
+.. _`lxml 2.2.7`: /files/lxml-2.2.7.tgz
+.. _`lxml 2.2.6`: /files/lxml-2.2.6.tgz
+.. _`lxml 2.2.5`: /files/lxml-2.2.5.tgz
+.. _`lxml 2.2.4`: /files/lxml-2.2.4.tgz
+.. _`lxml 2.2.3`: /files/lxml-2.2.3.tgz
+.. _`lxml 2.2.2`: /files/lxml-2.2.2.tgz
+.. _`lxml 2.2.1`: /files/lxml-2.2.1.tgz
+.. _`lxml 2.2`: /files/lxml-2.2.tgz
+
+.. _`changes for 2.3`: /changes-2.3.html
+.. _`changes for 2.3beta1`: /changes-2.3beta1.html
+.. _`changes for 2.3alpha2`: /changes-2.3alpha2.html
+.. _`changes for 2.3alpha1`: /changes-2.3alpha1.html
+.. _`changes for 2.2.8`: /changes-2.2.8.html
+.. _`changes for 2.2.7`: /changes-2.2.7.html
+.. _`changes for 2.2.6`: /changes-2.2.6.html
+.. _`changes for 2.2.5`: /changes-2.2.5.html
+.. _`changes for 2.2.4`: /changes-2.2.4.html
+.. _`changes for 2.2.3`: /changes-2.2.3.html
+.. _`changes for 2.2.2`: /changes-2.2.2.html
+.. _`changes for 2.2.1`: /changes-2.2.1.html
+.. _`changes for 2.2`: /changes-2.2.html
diff --git a/doc/sphinx/_sources/memorymanagement.txt b/doc/sphinx/_sources/memorymanagement.txt
new file mode 100644 (file)
index 0000000..07603d0
--- /dev/null
@@ -0,0 +1,83 @@
+Memory management
+=================
+
+There can be two types of nodes:
+
+* those connected to an existing tree
+
+* those unconnected. These may be the top node of a tree
+
+Nodes consist of a C-level libxml2 node, Node for short, and
+optionally a Python-level proxy node, Proxy. Zero, one or more Proxies can
+exist for a single Node.
+
+Proxies are garbage collected automatically by Python. Nodes are not
+garbage collected at all. Instead, explicit mechanisms exist for
+Nodes to clear them and the tree they may be the top of.
+
+A Node can be safely freed when:
+
+* no Proxy is connected to this Node
+
+* no Proxy cannot be created for this Node
+
+A Proxy cannot be created to a CNode when:
+
+* no Proxy exist for nodes that are connected to that Node
+
+This is the case when:
+
+* the Node is in a tree that has no Proxy connected to any of the nodes.
+
+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
+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
+the Document Proxy. When no more references exist in the system to the
+top Proxy, this means no more Proxies exist that point to the Node
+tree the top Proxy is the top of. If this Node tree is unconnected;
+i.e. it is not a subtree, this means that tree can be safely garbage
+collected.
+
+A special case exists for document references. Each Proxy will always
+have a reference to the Document Proxy, as any Node will have such a
+reference to the Document Node. This means that a Document Node can
+only be garbage collected when no more Proxies at all exist anymore
+which refer to the Document. This is a separate system from the
+top-Node references, even though the top-node in many cases will be
+the Document. This because there is no way to get to a node that is
+not connected to the Document tree from a Document Proxy.
+
+This approach requires a system that can keep track of the top of the
+tree in any case. Usually this is simple: when a Proxy gets connected,
+the tree top becomes the tree top of whatever node it is connected
+to. 
+
+Sometimes this is more difficult: a Proxy may exist pointing to a node
+in a subtree that just got connected. The top reference cannot be
+updated. This is a problem in the following case:
+
+    a
+  b    c         h
+d  e  f  g     i  j
+              k
+
+now imagine we have a proxy to k, K, and a proxy of i, I. They both
+have a pointer to proxy H.
+
+Now imagine i gets moved under g through proxy I. Proxy I will have an
+updated pointer to proxy A. However, proxy K cannot be updated and still
+points to H, from which it is now in fact disconnected.
+
+proxy H cannot be removed now until proxy A is removed. In addition,
+proxy A has a refcount that is too low because proxy K doesn't point
+to it but should.
+
+Another strategy involves having a reference count on the underlying
+nodes, one per proxy. A node can only be freed if there is no
+descendant-or-self that has the refcount higher than 0. A node, when
+no more Python references to it exist, will check for refcounts first.
+The drawback of this is potentially heavy tree-walking each time a proxy
+can be removed.
diff --git a/doc/sphinx/_sources/objectify.txt b/doc/sphinx/_sources/objectify.txt
new file mode 100644 (file)
index 0000000..b514afb
--- /dev/null
@@ -0,0 +1,1400 @@
+==============
+lxml.objectify
+==============
+
+:Authors:
+  Stefan Behnel, Holger Joukl
+
+lxml supports an alternative API similar to the Amara_ bindery or
+gnosis.xml.objectify_ through a custom Element implementation.  The main idea
+is to hide the usage of XML behind normal Python objects, sometimes referred
+to as data-binding.  It allows you to use XML as if you were dealing with a
+normal Python object hierarchy.
+
+Accessing the children of an XML element deploys object attribute access.  If
+there are multiple children with the same name, slicing and indexing can be
+used.  Python data types are extracted from XML content automatically and made
+available to the normal Python operators.
+
+.. contents::
+..
+   1  The lxml.objectify API
+     1.1  Creating objectify trees
+     1.2  Element access through object attributes
+     1.3  Tree generation with the E-factory
+     1.4  Namespace handling
+   2  Asserting a Schema
+   3  ObjectPath
+   4  Python data types
+     4.1  Recursive tree dump
+     4.2  Recursive string representation of elements
+   5  How data types are matched
+     5.1  Type annotations
+     5.2  XML Schema datatype annotation
+     5.3  The DataElement factory
+     5.4  Defining additional data classes
+     5.5  Advanced element class lookup
+   6  What is different from lxml.etree?
+
+.. _Amara: http://uche.ogbuji.net/tech/4suite/amara/
+.. _gnosis.xml.objectify: http://gnosis.cx/download/
+.. _`benchmark page`: performance.html#lxml-objectify
+
+
+To set up and use ``objectify``, you need both the ``lxml.etree``
+module and ``lxml.objectify``:
+
+.. sourcecode:: pycon
+
+    >>> from lxml import etree
+    >>> from lxml import objectify
+
+The objectify API is very different from the ElementTree API.  If it
+is used, it should not be mixed with other element implementations
+(such as trees parsed with ``lxml.etree``), to avoid non-obvious
+behaviour.
+
+The `benchmark page`_ has some hints on performance optimisation of
+code using lxml.objectify.
+
+To make the doctests in this document look a little nicer, we also use
+this:
+
+.. sourcecode:: pycon
+
+    >>> import lxml.usedoctest
+
+Imported from within a doctest, this relieves us from caring about the exact
+formatting of XML output.
+
+..
+    >>> try: from StringIO import StringIO
+    ... except ImportError:
+    ...     from io import BytesIO # Python 3
+    ...     def StringIO(s):
+    ...         if isinstance(s, str): s = s.encode('UTF-8')
+    ...         return BytesIO(s)
+
+..
+  >>> import sys
+  >>> from lxml import etree as _etree
+  >>> if sys.version_info[0] >= 3:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if isinstance(s, bytes) and bytes([10]) in s: s = s.decode("utf-8") # CR
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  ... else:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  >>> etree = etree_mock()
+
+
+The lxml.objectify API
+======================
+
+In ``lxml.objectify``, element trees provide an API that models the behaviour
+of normal Python object trees as closely as possible.
+
+
+Creating objectify trees
+------------------------
+
+As with ``lxml.etree``, you can either create an ``objectify`` tree by
+parsing an XML document or by building one from scratch.  To parse a
+document, just use the ``parse()`` or ``fromstring()`` functions of
+the module:
+
+.. sourcecode:: pycon
+
+    >>> fileobject = StringIO('<test/>')
+
+    >>> tree = objectify.parse(fileobject)
+    >>> print(isinstance(tree.getroot(), objectify.ObjectifiedElement))
+    True
+
+    >>> root = objectify.fromstring('<test/>')
+    >>> print(isinstance(root, objectify.ObjectifiedElement))
+    True
+
+To build a new tree in memory, ``objectify`` replicates the standard
+factory function ``Element()`` from ``lxml.etree``:
+
+.. sourcecode:: pycon
+
+    >>> obj_el = objectify.Element("new")
+    >>> print(isinstance(obj_el, objectify.ObjectifiedElement))
+    True
+
+After creating such an Element, you can use the `usual API`_ of
+lxml.etree to add SubElements to the tree:
+
+.. sourcecode:: pycon
+
+    >>> child = etree.SubElement(obj_el, "newchild", attr="value")
+
+.. _`usual API`: tutorial.html#the-element-class
+
+New subelements will automatically inherit the objectify behaviour
+from their tree.  However, all independent elements that you create
+through the ``Element()`` factory of lxml.etree (instead of objectify)
+will not support the ``objectify`` API by themselves:
+
+.. sourcecode:: pycon
+
+    >>> subel = etree.SubElement(obj_el, "sub")
+    >>> print(isinstance(subel, objectify.ObjectifiedElement))
+    True
+
+    >>> independent_el = etree.Element("new")
+    >>> print(isinstance(independent_el, objectify.ObjectifiedElement))
+    False
+
+
+Element access through object attributes
+----------------------------------------
+
+The main idea behind the ``objectify`` API is to hide XML element access
+behind the usual object attribute access pattern.  Asking an element for an
+attribute will return the sequence of children with corresponding tag names:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.Element("root")
+    >>> b = etree.SubElement(root, "b")
+    >>> print(root.b[0].tag)
+    b
+    >>> root.index(root.b[0])
+    0
+    >>> b = etree.SubElement(root, "b")
+    >>> print(root.b[0].tag)
+    b
+    >>> print(root.b[1].tag)
+    b
+    >>> root.index(root.b[1])
+    1
+
+For convenience, you can omit the index '0' to access the first child:
+
+.. sourcecode:: pycon
+
+    >>> print(root.b.tag)
+    b
+    >>> root.index(root.b)
+    0
+    >>> del root.b
+
+Iteration and slicing also obey the requested tag:
+
+.. sourcecode:: pycon
+
+    >>> x1 = etree.SubElement(root, "x")
+    >>> x2 = etree.SubElement(root, "x")
+    >>> x3 = etree.SubElement(root, "x")
+
+    >>> [ el.tag for el in root.x ]
+    ['x', 'x', 'x']
+
+    >>> [ el.tag for el in root.x[1:3] ]
+    ['x', 'x']
+
+    >>> [ el.tag for el in root.x[-1:] ]
+    ['x']
+
+    >>> del root.x[1:2]
+    >>> [ el.tag for el in root.x ]
+    ['x', 'x']
+
+If you want to iterate over all children or need to provide a specific
+namespace for the tag, use the ``iterchildren()`` method.  Like the other
+methods for iteration, it supports an optional tag keyword argument:
+
+.. sourcecode:: pycon
+
+    >>> [ el.tag for el in root.iterchildren() ]
+    ['b', 'x', 'x']
+
+    >>> [ el.tag for el in root.iterchildren(tag='b') ]
+    ['b']
+
+    >>> [ el.tag for el in root.b ]
+    ['b']
+
+XML attributes are accessed as in the normal ElementTree API:
+
+.. sourcecode:: pycon
+
+    >>> c = etree.SubElement(root, "c", myattr="someval")
+    >>> print(root.c.get("myattr"))
+    someval
+
+    >>> root.c.set("c", "oh-oh")
+    >>> print(root.c.get("c"))
+    oh-oh
+
+In addition to the normal ElementTree API for appending elements to trees,
+subtrees can also be added by assigning them to object attributes.  In this
+case, the subtree is automatically deep copied and the tag name of its root is
+updated to match the attribute name:
+
+.. sourcecode:: pycon
+
+    >>> el = objectify.Element("yet_another_child")
+    >>> root.new_child = el
+    >>> print(root.new_child.tag)
+    new_child
+    >>> print(el.tag)
+    yet_another_child
+
+    >>> root.y = [ objectify.Element("y"), objectify.Element("y") ]
+    >>> [ el.tag for el in root.y ]
+    ['y', 'y']
+
+The latter is a short form for operations on the full slice:
+
+.. sourcecode:: pycon
+
+    >>> root.y[:] = [ objectify.Element("y") ]
+    >>> [ el.tag for el in root.y ]
+    ['y']
+
+You can also replace children that way:
+
+.. sourcecode:: pycon
+
+    >>> child1 = etree.SubElement(root, "child")
+    >>> child2 = etree.SubElement(root, "child")
+    >>> child3 = etree.SubElement(root, "child")
+
+    >>> el = objectify.Element("new_child")
+    >>> subel = etree.SubElement(el, "sub")
+
+    >>> root.child = el
+    >>> print(root.child.sub.tag)
+    sub
+
+    >>> root.child[2] = el
+    >>> print(root.child[2].sub.tag)
+    sub
+
+Note that special care must be taken when changing the tag name of an element:
+
+.. sourcecode:: pycon
+
+    >>> print(root.b.tag)
+    b
+    >>> root.b.tag = "notB"
+    >>> root.b
+    Traceback (most recent call last):
+      ...
+    AttributeError: no such child: b
+    >>> print(root.notB.tag)
+    notB
+
+
+Tree generation with the E-factory
+----------------------------------
+
+To simplify the generation of trees even further, you can use the E-factory:
+
+.. sourcecode:: pycon
+
+    >>> E = objectify.E
+    >>> root = E.root(
+    ...   E.a(5),
+    ...   E.b(6.1),
+    ...   E.c(True),
+    ...   E.d("how", tell="me")
+    ... )
+
+    >>> 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>
+      <c py:pytype="bool">true</c>
+      <d py:pytype="str" tell="me">how</d>
+    </root>
+
+This allows you to write up a specific language in tags:
+
+.. sourcecode:: pycon
+
+    >>> ROOT = objectify.E.root
+    >>> TITLE = objectify.E.title
+    >>> HOWMANY = getattr(objectify.E, "how-many")
+
+    >>> root = ROOT(
+    ...   TITLE("The title"),
+    ...   HOWMANY(5)
+    ... )
+
+    >>> print(etree.tostring(root, pretty_print=True))
+    <root xmlns:py="http://codespeak.net/lxml/objectify/pytype">
+      <title py:pytype="str">The title</title>
+      <how-many py:pytype="int">5</how-many>
+    </root>
+
+``objectify.E`` is an instance of ``objectify.ElementMaker``.  By default, it
+creates pytype annotated Elements without a namespace.  You can switch off the
+pytype annotation by passing False to the ``annotate`` keyword argument of the
+constructor.  You can also pass a default namespace and an ``nsmap``:
+
+.. sourcecode:: pycon
+
+    >>> myE = objectify.ElementMaker(annotate=False,
+    ...           namespace="http://my/ns", nsmap={None : "http://my/ns"})
+
+    >>> root = myE.root( myE.someint(2) )
+
+    >>> print(etree.tostring(root, pretty_print=True))
+    <root xmlns="http://my/ns">
+      <someint>2</someint>
+    </root>
+
+
+Namespace handling
+------------------
+
+During tag lookups, namespaces are handled mostly behind the scenes.
+If you access a child of an Element without specifying a namespace,
+the lookup will use the namespace of the parent:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.Element("{http://ns/}root")
+    >>> b = etree.SubElement(root, "{http://ns/}b")
+    >>> c = etree.SubElement(root, "{http://other/}c")
+
+    >>> print(root.b.tag)
+    {http://ns/}b
+
+Note that the ``SubElement()`` factory of ``lxml.etree`` does not
+inherit any namespaces when creating a new subelement.  Element
+creation must be explicit about the namespace, and is simplified
+through the E-factory as described above.
+
+Lookups, however, inherit namespaces implicitly:
+
+.. sourcecode:: pycon
+
+    >>> print(root.b.tag)
+    {http://ns/}b
+
+    >>> print(root.c)
+    Traceback (most recent call last):
+        ...
+    AttributeError: no such child: {http://ns/}c
+
+To access an element in a different namespace than its parent, you can
+use ``getattr()``:
+
+.. sourcecode:: pycon
+
+    >>> c = getattr(root, "{http://other/}c")
+    >>> print(c.tag)
+    {http://other/}c
+
+For convenience, there is also a quick way through item access:
+
+.. sourcecode:: pycon
+
+    >>> c = root["{http://other/}c"]
+    >>> print(c.tag)
+    {http://other/}c
+
+The same approach must be used to access children with tag names that are not
+valid Python identifiers:
+
+.. sourcecode:: pycon
+
+    >>> el = etree.SubElement(root, "{http://ns/}tag-name")
+    >>> print(root["tag-name"].tag)
+    {http://ns/}tag-name
+
+    >>> new_el = objectify.Element("{http://ns/}new-element")
+    >>> el = etree.SubElement(new_el, "{http://ns/}child")
+    >>> el = etree.SubElement(new_el, "{http://ns/}child")
+    >>> el = etree.SubElement(new_el, "{http://ns/}child")
+
+    >>> root["tag-name"] = [ new_el, new_el ]
+    >>> print(len(root["tag-name"]))
+    2
+    >>> print(root["tag-name"].tag)
+    {http://ns/}tag-name
+
+    >>> print(len(root["tag-name"].child))
+    3
+    >>> print(root["tag-name"].child.tag)
+    {http://ns/}child
+    >>> print(root["tag-name"][1].child.tag)
+    {http://ns/}child
+
+or for names that have a special meaning in lxml.objectify:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.XML("<root><text>TEXT</text></root>")
+
+    >>> print(root.text.text)
+    Traceback (most recent call last):
+      ...
+    AttributeError: 'NoneType' object has no attribute 'text'
+
+    >>> print(root["text"].text)
+    TEXT
+
+
+Asserting a Schema
+==================
+
+When dealing with XML documents from different sources, you will often
+require them to follow a common schema.  In lxml.objectify, this
+directly translates to enforcing a specific object tree, i.e. expected
+object attributes are ensured to be there and to have the expected
+type.  This can easily be achieved through XML Schema validation at
+parse time.  Also see the `documentation on validation`_ on this
+topic.
+
+.. _`documentation on validation`: validation.html
+
+First of all, we need a parser that knows our schema, so let's say we
+parse the schema from a file-like object (or file or filename):
+
+.. sourcecode:: pycon
+
+    >>> f = StringIO('''\
+    ...   <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    ...     <xsd:element name="a" type="AType"/>
+    ...     <xsd:complexType name="AType">
+    ...       <xsd:sequence>
+    ...         <xsd:element name="b" type="xsd:string" />
+    ...       </xsd:sequence>
+    ...     </xsd:complexType>
+    ...   </xsd:schema>
+    ... ''')
+    >>> schema = etree.XMLSchema(file=f)
+
+When creating the validating parser, we must make sure it `returns
+objectify trees`_.  This is best done with the ``makeparser()``
+function:
+
+.. sourcecode:: pycon
+
+    >>> parser = objectify.makeparser(schema = schema)
+
+.. _`returns objectify trees`: #advance-element-class-lookup
+
+Now we can use it to parse a valid document:
+
+.. sourcecode:: pycon
+
+    >>> xml = "<a><b>test</b></a>"
+    >>> a = objectify.fromstring(xml, parser)
+
+    >>> print(a.b)
+    test
+
+Or an invalid document:
+
+.. sourcecode:: pycon
+
+    >>> xml = "<a><b>test</b><c/></a>"
+    >>> a = objectify.fromstring(xml, parser)
+    Traceback (most recent call last):
+    lxml.etree.XMLSyntaxError: Element 'c': This element is not expected.
+
+Note that the same works for parse-time DTD validation, except that
+DTDs do not support any data types by design.
+
+
+ObjectPath
+==========
+
+For both convenience and speed, objectify supports its own path language,
+represented by the ``ObjectPath`` class:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.Element("{http://ns/}root")
+    >>> b1 = etree.SubElement(root, "{http://ns/}b")
+    >>> c  = etree.SubElement(b1,   "{http://ns/}c")
+    >>> b2 = etree.SubElement(root, "{http://ns/}b")
+    >>> d  = etree.SubElement(root, "{http://other/}d")
+
+    >>> path = objectify.ObjectPath("root.b.c")
+    >>> print(path)
+    root.b.c
+    >>> path.hasattr(root)
+    True
+    >>> print(path.find(root).tag)
+    {http://ns/}c
+
+    >>> find = objectify.ObjectPath("root.b.c")
+    >>> print(find(root).tag)
+    {http://ns/}c
+
+    >>> find = objectify.ObjectPath("root.{http://other/}d")
+    >>> print(find(root).tag)
+    {http://other/}d
+
+    >>> find = objectify.ObjectPath("root.{not}there")
+    >>> print(find(root).tag)
+    Traceback (most recent call last):
+      ...
+    AttributeError: no such child: {not}there
+
+    >>> find = objectify.ObjectPath("{not}there")
+    >>> print(find(root).tag)
+    Traceback (most recent call last):
+      ...
+    ValueError: root element does not match: need {not}there, got {http://ns/}root
+
+    >>> find = objectify.ObjectPath("root.b[1]")
+    >>> print(find(root).tag)
+    {http://ns/}b
+
+    >>> find = objectify.ObjectPath("root.{http://ns/}b[1]")
+    >>> print(find(root).tag)
+    {http://ns/}b
+
+Apart from strings, ObjectPath also accepts lists of path segments:
+
+.. sourcecode:: pycon
+
+    >>> find = objectify.ObjectPath(['root', 'b', 'c'])
+    >>> print(find(root).tag)
+    {http://ns/}c
+
+    >>> find = objectify.ObjectPath(['root', '{http://ns/}b[1]'])
+    >>> print(find(root).tag)
+    {http://ns/}b
+
+You can also use relative paths starting with a '.' to ignore the actual root
+element and only inherit its namespace:
+
+.. sourcecode:: pycon
+
+    >>> find = objectify.ObjectPath(".b[1]")
+    >>> print(find(root).tag)
+    {http://ns/}b
+
+    >>> find = objectify.ObjectPath(['', 'b[1]'])
+    >>> print(find(root).tag)
+    {http://ns/}b
+
+    >>> find = objectify.ObjectPath(".unknown[1]")
+    >>> print(find(root).tag)
+    Traceback (most recent call last):
+      ...
+    AttributeError: no such child: {http://ns/}unknown
+
+    >>> find = objectify.ObjectPath(".{http://other/}unknown[1]")
+    >>> print(find(root).tag)
+    Traceback (most recent call last):
+      ...
+    AttributeError: no such child: {http://other/}unknown
+
+For convenience, a single dot represents the empty ObjectPath (identity):
+
+.. sourcecode:: pycon
+
+    >>> find = objectify.ObjectPath(".")
+    >>> print(find(root).tag)
+    {http://ns/}root
+
+ObjectPath objects can be used to manipulate trees:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.Element("{http://ns/}root")
+
+    >>> path = objectify.ObjectPath(".some.child.{http://other/}unknown")
+    >>> path.hasattr(root)
+    False
+    >>> path.find(root)
+    Traceback (most recent call last):
+      ...
+    AttributeError: no such child: {http://ns/}some
+
+    >>> path.setattr(root, "my value") # creates children as necessary
+    >>> path.hasattr(root)
+    True
+    >>> print(path.find(root).text)
+    my value
+    >>> print(root.some.child["{http://other/}unknown"].text)
+    my value
+
+    >>> print(len( path.find(root) ))
+    1
+    >>> path.addattr(root, "my new value")
+    >>> print(len( path.find(root) ))
+    2
+    >>> [ el.text for el in path.find(root) ]
+    ['my value', 'my new value']
+
+As with attribute assignment, ``setattr()`` accepts lists:
+
+.. sourcecode:: pycon
+
+    >>> path.setattr(root, ["v1", "v2", "v3"])
+    >>> [ el.text for el in path.find(root) ]
+    ['v1', 'v2', 'v3']
+
+
+Note, however, that indexing is only supported in this context if the children
+exist.  Indexing of non existing children will not extend or create a list of
+such children but raise an exception:
+
+.. sourcecode:: pycon
+
+    >>> path = objectify.ObjectPath(".{non}existing[1]")
+    >>> path.setattr(root, "my value")
+    Traceback (most recent call last):
+      ...
+    TypeError: creating indexed path attributes is not supported
+
+It is worth noting that ObjectPath does not depend on the ``objectify`` module
+or the ObjectifiedElement implementation.  It can also be used in combination
+with Elements from the normal lxml.etree API.
+
+
+Python data types
+=================
+
+The objectify module knows about Python data types and tries its best to let
+element content behave like them.  For example, they support the normal math
+operators:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring(
+    ...             "<root><a>5</a><b>11</b><c>true</c><d>hoi</d></root>")
+    >>> root.a + root.b
+    16
+    >>> root.a += root.b
+    >>> print(root.a)
+    16
+
+    >>> root.a = 2
+    >>> print(root.a + 2)
+    4
+    >>> print(1 + root.a)
+    3
+
+    >>> print(root.c)
+    True
+    >>> root.c = False
+    >>> if not root.c:
+    ...     print("false!")
+    false!
+
+    >>> print(root.d + " test !")
+    hoi test !
+    >>> root.d = "%s - %s"
+    >>> print(root.d % (1234, 12345))
+    1234 - 12345
+
+However, data elements continue to provide the objectify API.  This means that
+sequence operations such as ``len()``, slicing and indexing (e.g. of strings)
+cannot behave as the Python types.  Like all other tree elements, they show
+the normal slicing behaviour of objectify elements:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring("<root><a>test</a><b>toast</b></root>")
+    >>> print(root.a + ' me') # behaves like a string, right?
+    test me
+    >>> len(root.a) # but there's only one 'a' element!
+    1
+    >>> [ a.tag for a in root.a ]
+    ['a']
+    >>> print(root.a[0].tag)
+    a
+
+    >>> print(root.a)
+    test
+    >>> [ str(a) for a in root.a[:1] ]
+    ['test']
+
+If you need to run sequence operations on data types, you must ask the API for
+the *real* Python value.  The string value is always available through the
+normal ElementTree ``.text`` attribute.  Additionally, all data classes
+provide a ``.pyval`` attribute that returns the value as plain Python type:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring("<root><a>test</a><b>5</b></root>")
+    >>> root.a.text
+    'test'
+    >>> root.a.pyval
+    'test'
+
+    >>> root.b.text
+    '5'
+    >>> root.b.pyval
+    5
+
+Note, however, that both attributes are read-only in objectify.  If you want
+to change values, just assign them directly to the attribute:
+
+.. sourcecode:: pycon
+
+    >>> root.a.text  = "25"
+    Traceback (most recent call last):
+      ...
+    TypeError: attribute 'text' of 'StringElement' objects is not writable
+
+    >>> root.a.pyval = 25
+    Traceback (most recent call last):
+      ...
+    TypeError: attribute 'pyval' of 'StringElement' objects is not writable
+
+    >>> root.a = 25
+    >>> print(root.a)
+    25
+    >>> print(root.a.pyval)
+    25
+
+In other words, ``objectify`` data elements behave like immutable Python
+types.  You can replace them, but not modify them.
+
+
+Recursive tree dump
+-------------------
+
+To see the data types that are currently used, you can call the module level
+``dump()`` function that returns a recursive string representation for
+elements:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring("""
+    ... <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    ...   <a attr1="foo" attr2="bar">1</a>
+    ...   <a>1.2</a>
+    ...   <b>1</b>
+    ...   <b>true</b>
+    ...   <c>what?</c>
+    ...   <d xsi:nil="true"/>
+    ... </root>
+    ... """)
+
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = 1 [IntElement]
+          * attr1 = 'foo'
+          * attr2 = 'bar'
+        a = 1.2 [FloatElement]
+        b = 1 [IntElement]
+        b = True [BoolElement]
+        c = 'what?' [StringElement]
+        d = None [NoneElement]
+          * xsi:nil = 'true'
+
+You can freely switch between different types for the same child:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring("<root><a>5</a></root>")
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = 5 [IntElement]
+
+    >>> root.a = 'nice string!'
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = 'nice string!' [StringElement]
+          * py:pytype = 'str'
+
+    >>> root.a = True
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = True [BoolElement]
+          * py:pytype = 'bool'
+
+    >>> root.a = [1, 2, 3]
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = 1 [IntElement]
+          * py:pytype = 'int'
+        a = 2 [IntElement]
+          * py:pytype = 'int'
+        a = 3 [IntElement]
+          * py:pytype = 'int'
+
+    >>> root.a = (1, 2, 3)
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = 1 [IntElement]
+          * py:pytype = 'int'
+        a = 2 [IntElement]
+          * py:pytype = 'int'
+        a = 3 [IntElement]
+          * py:pytype = 'int'
+
+
+Recursive string representation of elements
+-------------------------------------------
+
+Normally, elements use the standard string representation for str() that is
+provided by lxml.etree.  You can enable a pretty-print representation for
+objectify elements like this:
+
+.. sourcecode:: pycon
+
+    >>> objectify.enable_recursive_str()
+
+    >>> root = objectify.fromstring("""
+    ... <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    ...   <a attr1="foo" attr2="bar">1</a>
+    ...   <a>1.2</a>
+    ...   <b>1</b>
+    ...   <b>true</b>
+    ...   <c>what?</c>
+    ...   <d xsi:nil="true"/>
+    ... </root>
+    ... """)
+
+    >>> print(str(root))
+    root = None [ObjectifiedElement]
+        a = 1 [IntElement]
+          * attr1 = 'foo'
+          * attr2 = 'bar'
+        a = 1.2 [FloatElement]
+        b = 1 [IntElement]
+        b = True [BoolElement]
+        c = 'what?' [StringElement]
+        d = None [NoneElement]
+          * xsi:nil = 'true'
+
+This behaviour can be switched off in the same way:
+
+.. sourcecode:: pycon
+
+    >>> objectify.enable_recursive_str(False)
+
+
+How data types are matched
+==========================
+
+Objectify uses two different types of Elements.  Structural Elements (or tree
+Elements) represent the object tree structure.  Data Elements represent the
+data containers at the leafs.  You can explicitly create tree Elements with
+the ``objectify.Element()`` factory and data Elements with the
+``objectify.DataElement()`` factory.
+
+When Element objects are created, lxml.objectify must determine which
+implementation class to use for them.  This is relatively easy for tree
+Elements and less so for data Elements.  The algorithm is as follows:
+
+1. If an element has children, use the default tree class.
+
+2. If an element is defined as xsi:nil, use the NoneElement class.
+
+3. If a "Python type hint" attribute is given, use this to determine the element
+   class, see below.
+4. If an XML Schema xsi:type hint is given, use this to determine the element
+   class, see below.
+
+5. Try to determine the element class from the text content type by trial and
+   error.
+
+6. If the element is a root node then use the default tree class.
+
+7. Otherwise, use the default class for empty data classes.
+
+You can change the default classes for tree Elements and empty data Elements
+at setup time.  The ``ObjectifyElementClassLookup()`` call accepts two keyword
+arguments, ``tree_class`` and ``empty_data_class``, that determine the Element
+classes used in these cases.  By default, ``tree_class`` is a class called
+``ObjectifiedElement`` and ``empty_data_class`` is a ``StringElement``.
+
+
+Type annotations
+----------------
+
+The "type hint" mechanism deploys an XML attribute defined as
+``lxml.objectify.PYTYPE_ATTRIBUTE``.  It may contain any of the following
+string values: int, long, float, str, unicode, NoneType:
+
+.. sourcecode:: pycon
+
+    >>> print(objectify.PYTYPE_ATTRIBUTE)
+    {http://codespeak.net/lxml/objectify/pytype}pytype
+    >>> ns, name = objectify.PYTYPE_ATTRIBUTE[1:].split('}')
+
+    >>> root = objectify.fromstring("""\
+    ... <root xmlns:py='%s'>
+    ...   <a py:pytype='str'>5</a>
+    ...   <b py:pytype='int'>5</b>
+    ...   <c py:pytype='NoneType' />
+    ... </root>
+    ... """ % ns)
+
+    >>> print(root.a + 10)
+    510
+    >>> print(root.b + 10)
+    15
+    >>> print(root.c)
+    None
+
+Note that you can change the name and namespace used for this
+attribute through the ``set_pytype_attribute_tag(tag)`` module
+function, in case your application ever needs to.  There is also a
+utility function ``annotate()`` that recursively generates this
+attribute for the elements of a tree:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring("<root><a>test</a><b>5</b></root>")
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = 'test' [StringElement]
+        b = 5 [IntElement]
+
+    >>> objectify.annotate(root)
+
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = 'test' [StringElement]
+          * py:pytype = 'str'
+        b = 5 [IntElement]
+          * py:pytype = 'int'
+
+
+XML Schema datatype annotation
+------------------------------
+
+A second way of specifying data type information uses XML Schema types as
+element annotations.  Objectify knows those that can be mapped to normal
+Python types:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring('''\
+    ...    <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    ...          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    ...      <d xsi:type="xsd:double">5</d>
+    ...      <i xsi:type="xsd:int"   >5</i>
+    ...      <s xsi:type="xsd:string">5</s>
+    ...    </root>
+    ...    ''')
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        d = 5.0 [FloatElement]
+          * xsi:type = 'xsd:double'
+        i = 5 [IntElement]
+          * xsi:type = 'xsd:int'
+        s = '5' [StringElement]
+          * xsi:type = 'xsd:string'
+
+Again, there is a utility function ``xsiannotate()`` that recursively 
+generates the "xsi:type" attribute for the elements of a tree:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring('''\
+    ...    <root><a>test</a><b>5</b><c>true</c></root>
+    ...    ''')
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = 'test' [StringElement]
+        b = 5 [IntElement]
+        c = True [BoolElement]
+
+    >>> objectify.xsiannotate(root)
+
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        a = 'test' [StringElement]
+          * xsi:type = 'xsd:string'
+        b = 5 [IntElement]
+          * xsi:type = 'xsd:integer'
+        c = True [BoolElement]
+          * xsi:type = 'xsd:boolean'
+
+Note, however, that ``xsiannotate()`` will always use the first XML Schema
+datatype that is defined for any given Python type, see also
+`Defining additional data classes`_.
+
+The utility function ``deannotate()`` can be used to get rid of 'py:pytype'
+and/or 'xsi:type' information:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring('''\
+    ... <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    ...       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    ...   <d xsi:type="xsd:double">5</d>
+    ...   <i xsi:type="xsd:int"   >5</i>
+    ...   <s xsi:type="xsd:string">5</s>
+    ... </root>''')
+    >>> objectify.annotate(root)
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        d = 5.0 [FloatElement]
+          * xsi:type = 'xsd:double'
+          * py:pytype = 'float'
+        i = 5 [IntElement]
+          * xsi:type = 'xsd:int'
+          * py:pytype = 'int'
+        s = '5' [StringElement]
+          * xsi:type = 'xsd:string'
+          * py:pytype = 'str'
+    >>> objectify.deannotate(root)
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        d = 5 [IntElement]
+        i = 5 [IntElement]
+        s = 5 [IntElement]
+
+You can control which type attributes should be de-annotated with the keyword
+arguments 'pytype' (default: True) and 'xsi' (default: True).
+``deannotate()`` can also remove 'xsi:nil' attributes by setting 'xsi_nil=True'
+(default: False):
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring('''\
+    ... <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    ...       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+    ...   <d xsi:type="xsd:double">5</d>
+    ...   <i xsi:type="xsd:int"   >5</i>
+    ...   <s xsi:type="xsd:string">5</s>
+    ...   <n xsi:nil="true"/>
+    ... </root>''')
+    >>> objectify.annotate(root)
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        d = 5.0 [FloatElement]
+          * xsi:type = 'xsd:double'
+          * py:pytype = 'float'
+        i = 5 [IntElement]
+          * xsi:type = 'xsd:int'
+          * py:pytype = 'int'
+        s = '5' [StringElement]
+          * xsi:type = 'xsd:string'
+          * py:pytype = 'str'
+        n = None [NoneElement]
+          * xsi:nil = 'true'
+          * py:pytype = 'NoneType'
+    >>> objectify.deannotate(root, xsi_nil=True)
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        d = 5 [IntElement]
+        i = 5 [IntElement]
+        s = 5 [IntElement]
+        n = u'' [StringElement]
+
+The DataElement factory
+-----------------------
+
+For convenience, the ``DataElement()`` factory creates an Element with a
+Python value in one step.  You can pass the required Python type name or the
+XSI type name:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.Element("root")
+    >>> root.x = objectify.DataElement(5, _pytype="int")
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        x = 5 [IntElement]
+          * py:pytype = 'int'
+
+    >>> root.x = objectify.DataElement(5, _pytype="str", myattr="someval")
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        x = '5' [StringElement]
+          * py:pytype = 'str'
+          * myattr = 'someval'
+
+    >>> root.x = objectify.DataElement(5, _xsi="integer")
+    >>> print(objectify.dump(root))
+    root = None [ObjectifiedElement]
+        x = 5 [IntElement]
+          * py:pytype = 'int'
+          * xsi:type = 'xsd:integer'
+
+XML Schema types reside in the XML schema namespace thus ``DataElement()`` 
+tries to correctly prefix the xsi:type attribute value for you:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.Element("root")
+    >>> root.s = objectify.DataElement(5, _xsi="string")
+
+    >>> objectify.deannotate(root, xsi=False)
+    >>> print(etree.tostring(root, pretty_print=True))
+    <root xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+      <s xsi:type="xsd:string">5</s>
+    </root>
+
+``DataElement()`` uses a default nsmap to set these prefixes:
+
+.. sourcecode:: pycon
+
+    >>> el = objectify.DataElement('5', _xsi='string')
+    >>> namespaces = list(el.nsmap.items())
+    >>> namespaces.sort()
+    >>> for prefix, namespace in namespaces:
+    ...     print("%s - %s" % (prefix, namespace))
+    py - http://codespeak.net/lxml/objectify/pytype
+    xsd - http://www.w3.org/2001/XMLSchema
+    xsi - http://www.w3.org/2001/XMLSchema-instance
+
+    >>> print(el.get("{http://www.w3.org/2001/XMLSchema-instance}type"))
+    xsd:string
+
+While you can set custom namespace prefixes, it is necessary to provide valid
+namespace information if you choose to do so:
+
+.. sourcecode:: pycon
+
+    >>> el = objectify.DataElement('5', _xsi='foo:string',
+    ...          nsmap={'foo': 'http://www.w3.org/2001/XMLSchema'})
+    >>> namespaces = list(el.nsmap.items())
+    >>> namespaces.sort()
+    >>> for prefix, namespace in namespaces:
+    ...     print("%s - %s" % (prefix, namespace))
+    foo - http://www.w3.org/2001/XMLSchema
+    py - http://codespeak.net/lxml/objectify/pytype
+    xsi - http://www.w3.org/2001/XMLSchema-instance
+
+    >>> print(el.get("{http://www.w3.org/2001/XMLSchema-instance}type"))
+    foo:string
+
+Note how lxml chose a default prefix for the XML Schema Instance
+namespace.  We can override it as in the following example:
+
+.. sourcecode:: pycon
+
+    >>> el = objectify.DataElement('5', _xsi='foo:string',
+    ...          nsmap={'foo': 'http://www.w3.org/2001/XMLSchema',
+    ...                 'myxsi': 'http://www.w3.org/2001/XMLSchema-instance'})
+    >>> namespaces = list(el.nsmap.items())
+    >>> namespaces.sort()
+    >>> for prefix, namespace in namespaces:
+    ...     print("%s - %s" % (prefix, namespace))
+    foo - http://www.w3.org/2001/XMLSchema
+    myxsi - http://www.w3.org/2001/XMLSchema-instance
+    py - http://codespeak.net/lxml/objectify/pytype
+
+    >>> print(el.get("{http://www.w3.org/2001/XMLSchema-instance}type"))
+    foo:string
+
+Care must be taken if different namespace prefixes have been used for the same
+namespace.  Namespace information gets merged to avoid duplicate definitions
+when adding a new sub-element to a tree, but this mechanism does not adapt the
+prefixes of attribute values:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring("""<root xmlns:schema="http://www.w3.org/2001/XMLSchema"/>""")
+    >>> print(etree.tostring(root, pretty_print=True))
+    <root xmlns:schema="http://www.w3.org/2001/XMLSchema"/>
+
+    >>> s = objectify.DataElement("17", _xsi="string")
+    >>> print(etree.tostring(s, pretty_print=True))
+    <value xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" py:pytype="str" xsi:type="xsd:string">17</value>
+
+    >>> root.s = s
+    >>> print(etree.tostring(root, pretty_print=True))
+    <root xmlns:schema="http://www.w3.org/2001/XMLSchema">
+      <s xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" py:pytype="str" xsi:type="xsd:string">17</s>
+    </root>
+
+It is your responsibility to fix the prefixes of attribute values if you
+choose to deviate from the standard prefixes.  A convenient way to do this for
+xsi:type attributes is to use the ``xsiannotate()`` utility:
+
+.. sourcecode:: pycon
+
+    >>> objectify.xsiannotate(root)
+    >>> print(etree.tostring(root, pretty_print=True))
+    <root xmlns:schema="http://www.w3.org/2001/XMLSchema">
+      <s xmlns:py="http://codespeak.net/lxml/objectify/pytype" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" py:pytype="str" xsi:type="schema:string">17</s>
+    </root>
+
+Of course, it is discouraged to use different prefixes for one and the same
+namespace when building up an objectify tree.
+
+
+Defining additional data classes
+--------------------------------
+
+You can plug additional data classes into objectify that will be used in
+exactly the same way as the predefined types.  Data classes can either inherit
+from ``ObjectifiedDataElement`` directly or from one of the specialised
+classes like ``NumberElement`` or ``BoolElement``.  The numeric types require
+an initial call to the NumberElement method ``self._setValueParser(function)``
+to set their type conversion function (string -> numeric Python type).  This
+call should be placed into the element ``_init()`` method.
+
+The registration of data classes uses the ``PyType`` class:
+
+.. sourcecode:: pycon
+
+    >>> class ChristmasDate(objectify.ObjectifiedDataElement):
+    ...     def call_santa(self):
+    ...         print("Ho ho ho!")
+
+    >>> def checkChristmasDate(date_string):
+    ...     if not date_string.startswith('24.12.'):
+    ...         raise ValueError # or TypeError
+
+    >>> xmas_type = objectify.PyType('date', checkChristmasDate, ChristmasDate)
+
+The PyType constructor takes a string type name, an (optional) callable type 
+check and the custom data class.  If a type check is provided it must accept a 
+string as argument and raise ValueError or TypeError if it cannot handle the
+string value.
+
+PyTypes are used if an element carries a ``py:pytype`` attribute denoting its
+data type or, in absence of such an attribute, if the given type check callable
+does not raise a ValueError/TypeError exception when applied to the element
+text. 
+
+If you want, you can also register this type under an XML Schema type name:
+
+.. sourcecode:: pycon
+
+    >>> xmas_type.xmlSchemaTypes = ("date",)
+
+XML Schema types will be considered if the element has an ``xsi:type``
+attribute that specifies its data type.  The line above binds the XSD type
+``date`` to the newly defined Python type.  Note that this must be done before
+the next step, which is to register the type.  Then you can use it:
+
+.. sourcecode:: pycon
+
+    >>> xmas_type.register()
+
+    >>> root = objectify.fromstring(
+    ...             "<root><a>24.12.2000</a><b>12.24.2000</b></root>")
+    >>> root.a.call_santa()
+    Ho ho ho!
+    >>> root.b.call_santa()
+    Traceback (most recent call last):
+      ...
+    AttributeError: no such child: call_santa
+
+If you need to specify dependencies between the type check functions, you can
+pass a sequence of type names through the ``before`` and ``after`` keyword
+arguments of the ``register()`` method.  The PyType will then try to register
+itself before or after the respective types, as long as they are currently
+registered.  Note that this only impacts the currently registered types at the
+time of registration.  Types that are registered later on will not care about
+the dependencies of already registered types.
+
+If you provide XML Schema type information, this will override the type check
+function defined above:
+
+.. sourcecode:: pycon
+
+    >>> root = objectify.fromstring('''\
+    ...    <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    ...      <a xsi:type="date">12.24.2000</a>
+    ...    </root>
+    ...    ''')
+    >>> print(root.a)
+    12.24.2000
+    >>> root.a.call_santa()
+    Ho ho ho!
+
+To unregister a type, call its ``unregister()`` method:
+
+.. sourcecode:: pycon
+
+    >>> root.a.call_santa()
+    Ho ho ho!
+    >>> xmas_type.unregister()
+    >>> root.a.call_santa()
+    Traceback (most recent call last):
+      ...
+    AttributeError: no such child: call_santa
+
+Be aware, though, that this does not immediately apply to elements to which
+there already is a Python reference.  Their Python class will only be changed
+after all references are gone and the Python object is garbage collected.
+
+
+Advanced element class lookup
+-----------------------------
+
+In some cases, the normal data class setup is not enough.  Being based
+on ``lxml.etree``, however, ``lxml.objectify`` supports very
+fine-grained control over the Element classes used in a tree.  All you
+have to do is configure a different `class lookup`_ mechanism (or
+write one yourself).
+
+.. _`class lookup`: element_classes.html
+
+The first step for the setup is to create a new parser that builds
+objectify documents.  The objectify API is meant for data-centric XML
+(as opposed to document XML with mixed content).  Therefore, we
+configure the parser to let it remove whitespace-only text from the
+parsed document if it is not enclosed by an XML element.  Note that
+this alters the document infoset, so if you consider the removed
+spaces as data in your specific use case, you should go with a normal
+parser and just set the element class lookup.  Most applications,
+however, will work fine with the following setup:
+
+.. sourcecode:: pycon
+
+    >>> parser = objectify.makeparser(remove_blank_text=True)
+
+What this does internally, is:
+
+.. sourcecode:: pycon
+
+    >>> parser = etree.XMLParser(remove_blank_text=True)
+
+    >>> lookup = objectify.ObjectifyElementClassLookup()
+    >>> parser.set_element_class_lookup(lookup)
+
+If you want to change the lookup scheme, say, to get additional
+support for `namespace specific classes`_, you can register the
+objectify lookup as a fallback of the namespace lookup.  In this case,
+however, you have to take care that the namespace classes inherit from
+``objectify.ObjectifiedElement``, not only from the normal
+``lxml.etree.ElementBase``, so that they support the ``objectify``
+API.  The above setup code then becomes:
+
+.. sourcecode:: pycon
+
+    >>> lookup = etree.ElementNamespaceClassLookup(
+    ...                   objectify.ObjectifyElementClassLookup() )
+    >>> parser.set_element_class_lookup(lookup)
+
+.. _`namespace specific classes`: element_classes.html#namespace-class-lookup
+
+See the documentation on `class lookup`_ schemes for more information.
+
+
+What is different from lxml.etree?
+==================================
+
+Such a different Element API obviously implies some side effects to the normal
+behaviour of the rest of the API.
+
+* len(<element>) returns the sibling count, not the number of children of
+  <element>. You can retrieve the number of children with the
+  ``countchildren()`` method. 
+
+* Iteration over elements does not yield the children, but the siblings.  You
+  can access all children with the ``iterchildren()`` method on elements or
+  retrieve a list by calling the ``getchildren()`` method.
+
+* The find, findall and findtext methods require a different implementation
+  based on ETXPath.  In ``lxml.etree``, they use a Python implementation based
+  on the original iteration scheme.  This has the disadvantage that they may
+  not be 100% backwards compatible, and the additional advantage that they now
+  support any XPath expression.
diff --git a/doc/sphinx/_sources/parsing.txt b/doc/sphinx/_sources/parsing.txt
new file mode 100644 (file)
index 0000000..585cabd
--- /dev/null
@@ -0,0 +1,832 @@
+==============================
+Parsing XML and HTML with lxml
+==============================
+
+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
+event-driven API (currently only for XML).
+
+.. contents::
+.. 
+   1  Parsers
+     1.1  Parser options
+     1.2  Error log
+     1.3  Parsing HTML
+     1.4  Doctype information
+   2  The target parser interface
+   3  The feed parser interface
+   4  iterparse and iterwalk
+     4.1  Selective tag events
+     4.2  Comments and PIs
+     4.3  Modifying the tree
+     4.4  iterwalk
+   5  Python unicode strings
+     5.1  Serialising to Unicode strings
+
+
+The usual setup procedure:
+
+.. sourcecode:: pycon
+
+  >>> from lxml import etree
+
+..
+  >>> from lxml import usedoctest
+
+  >>> try: from StringIO import StringIO
+  ... except ImportError:
+  ...    from io import BytesIO
+  ...    def StringIO(s):
+  ...        if isinstance(s, str): s = s.encode("UTF-8")
+  ...        return BytesIO(s)
+
+  >>> try: unicode = __builtins__["unicode"]
+  ... except (NameError, KeyError): unicode = str
+
+  >>> import sys
+  >>> from lxml import etree as _etree
+  >>> if sys.version_info[0] >= 3:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if isinstance(s, bytes) and bytes([10]) in s: s = s.decode("utf-8") # CR
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  ... else:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  >>> etree = etree_mock()
+
+
+Parsers
+=======
+
+Parsers are represented by parser objects.  There is support for parsing both
+XML and (broken) HTML.  Note that XHTML is best parsed as XML, parsing it with
+the HTML parser can lead to unexpected results.  Here is a simple example for
+parsing XML from an in-memory string:
+
+.. sourcecode:: pycon
+
+  >>> xml = '<a xmlns="test"><b xmlns="test"/></a>'
+
+  >>> root = etree.fromstring(xml)
+  >>> etree.tostring(root)
+  b'<a xmlns="test"><b xmlns="test"/></a>'
+
+To read from a file or file-like object, you can use the ``parse()`` function,
+which returns an ``ElementTree`` object:
+
+.. sourcecode:: pycon
+
+  >>> tree = etree.parse(StringIO(xml))
+  >>> etree.tostring(tree.getroot())
+  b'<a xmlns="test"><b xmlns="test"/></a>'
+
+Note how the ``parse()`` function reads from a file-like object here.  If
+parsing is done from a real file, it is more common (and also somewhat more
+efficient) to pass a filename:
+
+.. sourcecode:: pycon
+
+  >>> tree = etree.parse("doc/test.xml")
+
+lxml can parse from a local file, an HTTP URL or an FTP URL.  It also
+auto-detects and reads gzip-compressed XML files (.gz).
+
+If you want to parse from memory and still provide a base URL for the document
+(e.g. to support relative paths in an XInclude), you can pass the ``base_url``
+keyword argument:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.fromstring(xml, base_url="http://where.it/is/from.xml")
+
+
+Parser options
+--------------
+
+The parsers accept a number of setup options as keyword arguments.  The above
+example is easily extended to clean up namespaces during parsing:
+
+.. sourcecode:: pycon
+
+  >>> parser = etree.XMLParser(ns_clean=True)
+  >>> tree   = etree.parse(StringIO(xml), parser)
+  >>> etree.tostring(tree.getroot())
+  b'<a xmlns="test"><b/></a>'
+
+The keyword arguments in the constructor are mainly based on the libxml2
+parser configuration.  A DTD will also be loaded if validation or attribute
+default values are requested.
+
+Available boolean keyword arguments:
+
+* attribute_defaults - read the DTD (if referenced by the document) and add
+  the default attributes from it
+
+* dtd_validation - validate while parsing (if a DTD was referenced)
+
+* load_dtd - load and parse the DTD while parsing (no validation is performed)
+
+* no_network - prevent network access when looking up external
+  documents (on by default)
+
+* ns_clean - try to clean up redundant namespace declarations
+
+* recover - try hard to parse through broken XML
+
+* remove_blank_text - discard blank text nodes between tags (best used
+  together with a DTD)
+
+* remove_comments - discard comments
+
+* remove_pis - discard processing instructions
+
+* strip_cdata - replace CDATA sections by normal text content (on by
+  default)
+
+* resolve_entities - replace entities by their text value (on by
+  default)
+
+* huge_tree - disable security restrictions and support very deep trees
+  and very long text content (only affects libxml2 2.7+)
+
+* compact - use compact storage for short text content (on by default)
+
+Other keyword arguments:
+
+* encoding - override the document encoding
+
+* target - a parser target object that will receive the parse events
+  (see `The target parser interface`_)
+
+* schema   - an XMLSchema to validate against (see `validation <validation.html#xmlschema>`_)
+
+
+Error log
+---------
+
+Parsers have an ``error_log`` property that lists the errors and
+warnings of the last parser run:
+
+.. sourcecode:: pycon
+
+  >>> parser = etree.XMLParser()
+  >>> print(len(parser.error_log))
+  0
+
+  >>> tree = etree.XML("<root></b>", parser)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: root line 1 and b, line 1, column 11
+
+  >>> print(len(parser.error_log))
+  1
+
+  >>> error = parser.error_log[0]
+  >>> print(error.message)
+  Opening and ending tag mismatch: root line 1 and b
+  >>> print(error.line)
+  1
+  >>> print(error.column)
+  11
+
+Each entry in the log has the following properties:
+
+* ``message``: the message text
+* ``domain``: the domain ID (see the lxml.etree.ErrorDomains class)
+* ``type``: the message type ID (see the lxml.etree.ErrorTypes class)
+* ``level``: the log level ID (see the lxml.etree.ErrorLevels class)
+* ``line``: the line at which the message originated (if applicable)
+* ``column``: the character column at which the message originated (if applicable)
+* ``filename``: the name of the file in which the message originated (if applicable)
+
+For convenience, there are also three properties that provide readable
+names for the ID values:
+
+* ``domain_name``
+* ``type_name``
+* ``level_name``
+
+To filter for a specific kind of message, use the different
+``filter_*()`` methods on the error log (see the
+lxml.etree._ListErrorLog class).
+
+
+Parsing HTML
+------------
+
+HTML parsing is similarly simple.  The parsers have a ``recover``
+keyword argument that the HTMLParser sets by default.  It lets libxml2
+try its best to return a valid HTML tree with all content it can
+manage to parse.  It will not raise an exception on parser errors.
+You should use libxml2 version 2.6.21 or newer to take advantage of
+this feature.
+
+.. sourcecode:: pycon
+
+  >>> broken_html = "<html><head><title>test<body><h1>page title</h3>"
+
+  >>> parser = etree.HTMLParser()
+  >>> tree   = etree.parse(StringIO(broken_html), parser)
+
+  >>> result = etree.tostring(tree.getroot(),
+  ...                         pretty_print=True, method="html")
+  >>> print(result)
+  <html>
+    <head>
+      <title>test</title>
+    </head>
+    <body>
+      <h1>page title</h1>
+    </body>
+  </html>
+
+Lxml has an HTML function, similar to the XML shortcut known from
+ElementTree:
+
+.. sourcecode:: pycon
+
+  >>> html = etree.HTML(broken_html)
+  >>> result = etree.tostring(html, pretty_print=True, method="html")
+  >>> print(result)
+  <html>
+    <head>
+      <title>test</title>
+    </head>
+    <body>
+      <h1>page title</h1>
+    </body>
+  </html>
+
+The support for parsing broken HTML depends entirely on libxml2's recovery
+algorithm.  It is *not* the fault of lxml if you find documents that are so
+heavily broken that the parser cannot handle them.  There is also no guarantee
+that the resulting tree will contain all data from the original document.  The
+parser may have to drop seriously broken parts when struggling to keep
+parsing.  Especially misplaced meta tags can suffer from this, which may lead
+to encoding problems.
+
+Note that the result is a valid HTML tree, but it may not be a
+well-formed XML tree.  For example, XML forbids double hyphens in
+comments, which the HTML parser will happily accept in recovery mode.
+Therefore, if your goal is to serialise an HTML document as an
+XML/XHTML document after parsing, you may have to apply some manual
+preprocessing first.
+
+Also note that the HTML parser is meant to parse HTML documents.  For
+XHTML documents, use the XML parser, which is namespace aware.
+
+
+Doctype information
+-------------------
+
+The use of the libxml2 parsers makes some additional information available at
+the API level.  Currently, ElementTree objects can access the DOCTYPE
+information provided by a parsed document, as well as the XML version and the
+original encoding:
+
+.. sourcecode:: pycon
+
+  >>> pub_id  = "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  >>> sys_url = "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+  >>> doctype_string = '<!DOCTYPE html PUBLIC "%s" "%s">' % (pub_id, sys_url)
+  >>> xml_header = '<?xml version="1.0" encoding="ascii"?>'
+  >>> xhtml = xml_header + doctype_string + '<html><body></body></html>'
+
+  >>> tree = etree.parse(StringIO(xhtml))
+  >>> docinfo = tree.docinfo
+  >>> print(docinfo.public_id)
+  -//W3C//DTD XHTML 1.0 Transitional//EN
+  >>> print(docinfo.system_url)
+  http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
+  >>> docinfo.doctype == doctype_string
+  True
+
+  >>> print(docinfo.xml_version)
+  1.0
+  >>> print(docinfo.encoding)
+  ascii
+
+
+The target parser interface
+===========================
+
+.. _`As in ElementTree`: http://effbot.org/elementtree/elementtree-xmlparser.htm
+
+`As in ElementTree`_, and similar to a SAX event handler, you can pass
+a target object to the parser:
+
+.. sourcecode:: pycon
+
+  >>> class EchoTarget:
+  ...     def start(self, tag, attrib):
+  ...         print("start %s %s" % (tag, attrib))
+  ...     def end(self, tag):
+  ...         print("end %s" % tag)
+  ...     def data(self, data):
+  ...         print("data %r" % data)
+  ...     def comment(self, text):
+  ...         print("comment %s" % text)
+  ...     def close(self):
+  ...         print("close")
+  ...         return "closed!"
+
+  >>> parser = etree.XMLParser(target = EchoTarget())
+
+  >>> result = etree.XML("<element>some<!--comment-->text</element>",
+  ...                    parser)
+  start element {}
+  data u'some'
+  comment comment
+  data u'text'
+  end element
+  close
+
+  >>> print(result)
+  closed!
+
+It is important for the ``.close()`` method to reset the parser target
+to a usable state, so that you can reuse the parser as often as you
+like:
+
+.. sourcecode:: pycon
+
+  >>> result = etree.XML("<element>some<!--comment-->text</element>",
+  ...                    parser)
+  start element {}
+  data u'some'
+  comment comment
+  data u'text'
+  end element
+  close
+
+  >>> print(result)
+  closed!
+
+Starting with lxml 2.3, the ``.close()`` method will also be called in
+the error case.  This diverges from the behaviour of ElementTree, but
+allows target objects to clean up their state in all situations, so
+that the parser can reuse them afterwards.
+
+.. sourcecode:: pycon
+
+  >>> class CollectorTarget:
+  ...     def __init__(self):
+  ...         self.events = []
+  ...     def start(self, tag, attrib):
+  ...         self.events.append("start %s %s" % (tag, attrib))
+  ...     def end(self, tag):
+  ...         self.events.append("end %s" % tag)
+  ...     def data(self, data):
+  ...         self.events.append("data %r" % data)
+  ...     def comment(self, text):
+  ...         self.events.append("comment %s" % text)
+  ...     def close(self):
+  ...         self.events.append("close")
+  ...         return "closed!"
+
+  >>> parser = etree.XMLParser(target = CollectorTarget())
+
+  >>> result = etree.XML("<element>some</error>",
+  ...                    parser)        # doctest: +ELLIPSIS
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XMLSyntaxError: Opening and ending tag mismatch...
+
+  >>> for event in parser.target.events:
+  ...     print(event)
+  start element {}
+  data u'some'
+  close
+
+Note that the parser does *not* build a tree when using a parser
+target.  The result of the parser run is whatever the target object
+returns from its ``.close()`` method.  If you want to return an XML
+tree here, you have to create it programmatically in the target
+object.  An example for a parser target that builds a tree is the
+``TreeBuilder``:
+
+.. sourcecode:: pycon
+
+  >>> parser = etree.XMLParser(target = etree.TreeBuilder())
+
+  >>> result = etree.XML("<element>some<!--comment-->text</element>",
+  ...                    parser)
+
+  >>> print(result.tag)
+  element
+  >>> print(result[0].text)
+  comment
+
+
+The feed parser interface
+=========================
+
+Since lxml 2.0, the parsers have a feed parser interface that is
+compatible to the `ElementTree parsers`_.  You can use it to feed data
+into the parser in a controlled step-by-step way.
+
+In lxml.etree, you can use both interfaces to a parser at the same
+time: the ``parse()`` or ``XML()`` functions, and the feed parser
+interface.  Both are independent and will not conflict (except if used
+in conjunction with a parser target object as described above).
+
+.. _`ElementTree parsers`: http://effbot.org/elementtree/elementtree-xmlparser.htm
+
+To start parsing with a feed parser, just call its ``feed()`` method
+to feed it some data.
+
+.. sourcecode:: pycon
+
+  >>> parser = etree.XMLParser()
+
+  >>> for data in ('<?xml versio', 'n="1.0"?', '><roo', 't><a', '/></root>'):
+  ...     parser.feed(data)
+
+When you are done parsing, you **must** call the ``close()`` method to
+retrieve the root Element of the parse result document, and to unlock the
+parser:
+
+.. sourcecode:: pycon
+
+  >>> root = parser.close()
+
+  >>> print(root.tag)
+  root
+  >>> print(root[0].tag)
+  a
+
+If you do not call ``close()``, the parser will stay locked and
+subsequent feeds will keep appending data, usually resulting in a non
+well-formed document and an unexpected parser error.  So make sure you
+always close the parser after use, also in the exception case.
+
+Another way of achieving the same step-by-step parsing is by writing your own
+file-like object that returns a chunk of data on each ``read()`` call.  Where
+the feed parser interface allows you to actively pass data chunks into the
+parser, a file-like object passively responds to ``read()`` requests of the
+parser itself.  Depending on the data source, either way may be more natural.
+
+Note that the feed parser has its own error log called
+``feed_error_log``.  Errors in the feed parser do not show up in the
+normal ``error_log`` and vice versa.
+
+You can also combine the feed parser interface with the target parser:
+
+.. sourcecode:: pycon
+
+  >>> parser = etree.XMLParser(target = EchoTarget())
+
+  >>> parser.feed("<eleme")
+  >>> parser.feed("nt>some text</elem")
+  start element {}
+  data u'some text'
+  >>> parser.feed("ent>")
+  end element
+
+  >>> result = parser.close()
+  close
+  >>> print(result)
+  closed!
+
+Again, this prevents the automatic creation of an XML tree and leaves
+all the event handling to the target object.  The ``close()`` method
+of the parser forwards the return value of the target's ``close()``
+method.
+
+
+iterparse and iterwalk
+======================
+
+As known from ElementTree, the ``iterparse()`` utility function
+returns an iterator that generates parser events for an XML file (or
+file-like object), while building the tree.  The values are tuples
+``(event-type, object)``.  The event types supported by ElementTree
+and lxml.etree are the strings 'start', 'end', 'start-ns' and
+'end-ns'.
+
+The 'start' and 'end' events represent opening and closing elements.
+They are accompanied by the respective Element instance.  By default,
+only 'end' events are generated:
+
+.. sourcecode:: pycon
+
+  >>> xml = '''\
+  ... <root>
+  ...   <element key='value'>text</element>
+  ...   <element>text</element>tail
+  ...   <empty-element xmlns="http://testns/" />
+  ... </root>
+  ... '''
+
+  >>> context = etree.iterparse(StringIO(xml))
+  >>> for action, elem in context:
+  ...     print("%s: %s" % (action, elem.tag))
+  end: element
+  end: element
+  end: {http://testns/}empty-element
+  end: root
+
+The resulting tree is available through the ``root`` property of the iterator:
+
+.. sourcecode:: pycon
+
+  >>> context.root.tag
+  'root'
+
+The other event types can be activated with the ``events`` keyword argument:
+
+.. sourcecode:: pycon
+
+  >>> events = ("start", "end")
+  >>> context = etree.iterparse(StringIO(xml), events=events)
+  >>> for action, elem in context:
+  ...     print("%s: %s" % (action, elem.tag))
+  start: root
+  start: element
+  end: element
+  start: element
+  end: element
+  start: {http://testns/}empty-element
+  end: {http://testns/}empty-element
+  end: root
+
+The 'start-ns' and 'end-ns' events notify about namespace
+declarations.  They do not come with Elements.  Instead, the value of
+the 'start-ns' event is a tuple ``(prefix, namespaceURI)`` that
+designates the beginning of a prefix-namespace mapping.  The
+corresponding ``end-ns`` event does not have a value (None).  It is
+common practice to use a list as namespace stack and pop the last
+entry on the 'end-ns' event.
+
+.. sourcecode:: pycon
+
+  >>> print(xml[:-1])
+  <root>
+    <element key='value'>text</element>
+    <element>text</element>tail
+    <empty-element xmlns="http://testns/" />
+  </root>
+
+  >>> events = ("start", "end", "start-ns", "end-ns")
+  >>> context = etree.iterparse(StringIO(xml), events=events)
+  >>> for action, elem in context:
+  ...     if action in ('start', 'end'):
+  ...         print("%s: %s" % (action, elem.tag))
+  ...     elif action == 'start-ns':
+  ...         print("%s: %s" % (action, elem))
+  ...     else:
+  ...         print(action)
+  start: root
+  start: element
+  end: element
+  start: element
+  end: element
+  start-ns: ('', 'http://testns/')
+  start: {http://testns/}empty-element
+  end: {http://testns/}empty-element
+  end-ns
+  end: root
+
+
+Selective tag events
+--------------------
+
+As an extension over ElementTree, lxml.etree accepts a ``tag`` keyword
+argument just like ``element.iter(tag)``.  This restricts events to a
+specific tag or namespace:
+
+.. sourcecode:: pycon
+
+  >>> context = etree.iterparse(StringIO(xml), tag="element")
+  >>> for action, elem in context:
+  ...     print("%s: %s" % (action, elem.tag))
+  end: element
+  end: element
+
+  >>> events = ("start", "end")
+  >>> context = etree.iterparse(
+  ...             StringIO(xml), events=events, tag="{http://testns/}*")
+  >>> for action, elem in context:
+  ...     print("%s: %s" % (action, elem.tag))
+  start: {http://testns/}empty-element
+  end: {http://testns/}empty-element
+
+
+Comments and PIs
+----------------
+
+As an extension over ElementTree, the ``iterparse()`` function in
+lxml.etree also supports the event types 'comment' and 'pi' for the
+respective XML structures.
+
+.. sourcecode:: pycon
+
+  >>> commented_xml = '''\
+  ... <?some pi ?>
+  ... <!-- a comment -->
+  ... <root>
+  ...   <element key='value'>text</element>
+  ...   <!-- another comment -->
+  ...   <element>text</element>tail
+  ...   <empty-element xmlns="http://testns/" />
+  ... </root>
+  ... '''
+
+  >>> events = ("start", "end", "comment", "pi")
+  >>> context = etree.iterparse(StringIO(commented_xml), events=events)
+  >>> for action, elem in context:
+  ...     if action in ('start', 'end'):
+  ...         print("%s: %s" % (action, elem.tag))
+  ...     elif action == 'pi':
+  ...         print("%s: -%s=%s-" % (action, elem.target, elem.text))
+  ...     else: # 'comment'
+  ...         print("%s: -%s-" % (action, elem.text))
+  pi: -some=pi -
+  comment: - a comment -
+  start: root
+  start: element
+  end: element
+  comment: - another comment -
+  start: element
+  end: element
+  start: {http://testns/}empty-element
+  end: {http://testns/}empty-element
+  end: root
+
+  >>> print(context.root.tag)
+  root
+
+
+Modifying the tree
+------------------
+
+You can modify the element and its descendants when handling the 'end' event.
+To save memory, for example, you can remove subtrees that are no longer
+needed:
+
+.. sourcecode:: pycon
+
+  >>> context = etree.iterparse(StringIO(xml))
+  >>> for action, elem in context:
+  ...     print(len(elem))
+  ...     elem.clear()
+  0
+  0
+  0
+  3
+  >>> context.root.getchildren()
+  []
+
+**WARNING**: During the 'start' event, any content of the element,
+such as the descendants, following siblings or text, is not yet
+available and should not be accessed.  Only attributes are guaranteed
+to be set.  During the 'end' event, the element and its descendants
+can be freely modified, but its following siblings should not be
+accessed.  During either of the two events, you **must not** modify or
+move the ancestors (parents) of the current element.  You should also
+avoid moving or discarding the element itself.  The golden rule is: do
+not touch anything that will have to be touched again by the parser
+later on.
+
+If you have elements with a long list of children in your XML file and want to
+save more memory during parsing, you can clean up the preceding siblings of
+the current element:
+
+.. sourcecode:: pycon
+
+  >>> for event, element in etree.iterparse(StringIO(xml)):
+  ...     # ... do something with the element
+  ...     element.clear()                 # clean up children
+  ...     while element.getprevious() is not None: 
+  ...         del element.getparent()[0]  # clean up preceding siblings
+
+The ``while`` loop deletes multiple siblings in a row.  This is only necessary
+if you skipped over some of them using the ``tag`` keyword argument.
+Otherwise, a simple ``if`` should do.  The more selective your tag is,
+however, the more thought you will have to put into finding the right way to
+clean up the elements that were skipped.  Therefore, it is sometimes easier to
+traverse all elements and do the tag selection by hand in the event handler
+code.
+
+
+iterwalk
+--------
+
+A second extension over ElementTree is the ``iterwalk()`` function.  It
+behaves exactly like ``iterparse()``, but works on Elements and ElementTrees:
+
+.. sourcecode:: pycon
+
+
+  >>> root = etree.XML(xml)
+  >>> context = etree.iterwalk(
+  ...             root, events=("start", "end"), tag="element")
+  >>> for action, elem in context:
+  ...     print("%s: %s" % (action, elem.tag))
+  start: element
+  end: element
+  start: element
+  end: element
+
+  >>> f = StringIO(xml)
+  >>> context = etree.iterparse(
+  ...             f, events=("start", "end"), tag="element")
+
+  >>> for action, elem in context:
+  ...     print("%s: %s" % (action, elem.tag))
+  start: element
+  end: element
+  start: element
+  end: element
+
+
+Python unicode strings
+======================
+
+lxml.etree has broader support for Python unicode strings than the ElementTree
+library.  First of all, where ElementTree would raise an exception, the
+parsers in lxml.etree can handle unicode strings straight away.  This is most
+helpful for XML snippets embedded in source code using the ``XML()``
+function:
+
+.. sourcecode:: pycon
+
+  >>> uxml = u'<test> \uf8d1 + \uf8d2 </test>'
+  >>> uxml
+  u'<test> \uf8d1 + \uf8d2 </test>'
+  >>> root = etree.XML(uxml)
+
+This requires, however, that unicode strings do not specify a conflicting
+encoding themselves and thus lie about their real encoding:
+
+.. sourcecode:: pycon
+
+  >>> etree.XML( u'<?xml version="1.0" encoding="ASCII"?>\n' + uxml )
+  Traceback (most recent call last):
+    ...
+  ValueError: Unicode strings with encoding declaration are not supported.
+
+Similarly, you will get errors when you try the same with HTML data in a
+unicode string that specifies a charset in a meta tag of the header.  You
+should generally avoid converting XML/HTML data to unicode before passing it
+into the parsers.  It is both slower and error prone.
+
+
+Serialising to Unicode strings
+------------------------------
+
+To serialize the result, you would normally use the ``tostring()``
+module function, which serializes to plain ASCII by default or a
+number of other byte encodings if asked for:
+
+.. sourcecode:: pycon
+
+  >>> etree.tostring(root)
+  b'<test> &#63697; + &#63698; </test>'
+
+  >>> etree.tostring(root, encoding='UTF-8', xml_declaration=False)
+  b'<test> \xef\xa3\x91 + \xef\xa3\x92 </test>'
+
+As an extension, lxml.etree recognises the unicode type as an argument to the
+encoding parameter to build a Python unicode representation of a tree:
+
+.. sourcecode:: pycon
+
+  >>> etree.tostring(root, encoding=unicode)
+  u'<test> \uf8d1 + \uf8d2 </test>'
+
+  >>> el = etree.Element("test")
+  >>> etree.tostring(el, encoding=unicode)
+  u'<test/>'
+
+  >>> subel = etree.SubElement(el, "subtest")
+  >>> etree.tostring(el, encoding=unicode)
+  u'<test><subtest/></test>'
+
+  >>> tree = etree.ElementTree(el)
+  >>> etree.tostring(tree, encoding=unicode)
+  u'<test><subtest/></test>'
+
+The result of ``tostring(encoding=unicode)`` can be treated like any
+other Python unicode string and then passed back into the parsers.
+However, if you want to save the result to a file or pass it over the
+network, you should use ``write()`` or ``tostring()`` with a byte
+encoding (typically UTF-8) to serialize the XML.  The main reason is
+that unicode strings returned by ``tostring(encoding=unicode)`` are
+not byte streams and they never have an XML declaration to specify
+their encoding.  These strings are most likely not parsable by other
+XML libraries.
+
+For normal byte encodings, the ``tostring()`` function automatically
+adds a declaration as needed that reflects the encoding of the
+returned string.  This makes it possible for other parsers to
+correctly parse the XML byte stream.  Note that using ``tostring()``
+with UTF-8 is also considerably faster in most cases.
diff --git a/doc/sphinx/_sources/performance.txt b/doc/sphinx/_sources/performance.txt
new file mode 100644 (file)
index 0000000..2f03b57
--- /dev/null
@@ -0,0 +1,827 @@
+====================
+Benchmarks and Speed
+====================
+
+:Author:
+  Stefan Behnel
+
+.. meta::
+  :description: Performance evaluation of lxml and ElementTree:
+                fast operations, common pitfalls and optimisation hints.
+  :keywords: Python XML parser performance, XML processing, performance comparison,
+             lxml performance, lxml.etree, lxml.objectify, benchmarks, ElementTree
+
+
+lxml.etree is a very fast XML library.  Most of this is due to the
+speed of libxml2, e.g. the parser and serialiser, or the XPath engine.
+Other areas of lxml were specifically written for high performance in
+high-level operations, such as the tree iterators.
+
+On the other hand, the simplicity of lxml sometimes hides internal
+operations that are more costly than the API suggests.  If you are not
+aware of these cases, lxml may not always perform as you expect.  A
+common example in the Python world is the Python list type.  New users
+often expect it to be a linked list, while it actually is implemented
+as an array, which results in a completely different complexity for
+common operations.
+
+Similarly, the tree model of libxml2 is more complex than what lxml's
+ElementTree API projects into Python space, so some operations may
+show unexpected performance.  Rest assured that most lxml users will
+not notice this in real life, as lxml is very fast in absolute
+numbers.  It is definitely fast enough for most applications, so lxml
+is probably somewhere between 'fast enough' and 'the best choice' for
+yours.  Read some messages_ from happy_ users_ to see what we mean.
+
+.. _messages: http://permalink.gmane.org/gmane.comp.python.lxml.devel/3250
+.. _happy: http://article.gmane.org/gmane.comp.python.lxml.devel/3246
+.. _users: http://thread.gmane.org/gmane.comp.python.lxml.devel/3244/focus=3244
+
+This text describes where lxml.etree (abbreviated to 'lxe') excels, gives
+hints on some performance traps and compares the overall performance to the
+original ElementTree_ (ET) and cElementTree_ (cET) libraries by Fredrik Lundh.
+The cElementTree library is a fast C-implementation of the original
+ElementTree.
+
+.. _ElementTree:  http://effbot.org/zone/element-index.htm
+.. _cElementTree: http://effbot.org/zone/celementtree.htm
+
+.. contents::
+.. 
+   1  How to read the timings
+   2  Bad things first
+   3  Parsing and Serialising
+   4  The ElementTree API
+   5  Tree traversal
+   6  XPath
+   7  lxml.objectify
+
+
+General notes
+=============
+
+First thing to say: there *is* an overhead involved in having a DOM-like C
+library mimic the ElementTree API.  As opposed to ElementTree, lxml has to
+generate Python representations of tree nodes on the fly when asked for them,
+and the internal tree structure of libxml2 results in a higher maintenance
+overhead than the simpler top-down structure of ElementTree.  What this means
+is: the more of your code runs in Python, the less you can benefit from the
+speed of lxml and libxml2.  Note, however, that this is true for most
+performance critical Python applications.  No one would implement fourier
+transformations in pure Python when you can use NumPy.
+
+The up side then is that lxml provides powerful tools like tree iterators,
+XPath and XSLT, that can handle complex operations at the speed of C.  Their
+pythonic API in lxml makes them so flexible that most applications can easily
+benefit from them.
+
+
+How to read the timings
+=======================
+
+The statements made here are backed by the (micro-)benchmark scripts
+`bench_etree.py`_, `bench_xpath.py`_ and `bench_objectify.py`_ that come with
+the lxml source distribution.  They are distributed under the same BSD license
+as lxml itself, and the lxml project would like to promote them as a general
+benchmarking suite for all ElementTree implementations.  New benchmarks are
+very easy to add as tiny test methods, so if you write a performance test for
+a specific part of the API yourself, please consider sending it to the lxml
+mailing list.
+
+The timings cited below compare lxml 2.3 (with libxml2 2.7.6) to the
+latest developer versions of ElementTree (1.3beta2) and cElementTree
+(1.0.6a3).  They were run single-threaded on a 2.5GHz 64bit Intel Core
+Duo machine under Ubuntu Linux 9.10 (Karmic).  The C libraries were
+compiled with the same platform specific optimisation flags.  The
+Python interpreter (2.6.4) was also manually compiled for the
+platform.  Note that many of the following ElementTree timings are
+therefore better then what a normal Python installation with the
+standard library (c)ElementTree modules would yield.
+
+.. _`bench_etree.py`:     http://codespeak.net/svn/lxml/trunk/benchmark/bench_etree.py
+.. _`bench_xpath.py`:     http://codespeak.net/svn/lxml/trunk/benchmark/bench_xpath.py
+.. _`bench_objectify.py`: http://codespeak.net/svn/lxml/trunk/benchmark/bench_objectify.py
+
+The scripts run a number of simple tests on the different libraries, using
+different XML tree configurations: different tree sizes (T1-4), with or
+without attributes (-/A), with or without ASCII string or unicode text
+(-/S/U), and either against a tree or its serialised XML form (T/X).  In the
+result extracts cited below, T1 refers to a 3-level tree with many children at
+the third level, T2 is swapped around to have many children below the root
+element, T3 is a deep tree with few children at each level and T4 is a small
+tree, slightly broader than deep.  If repetition is involved, this usually
+means running the benchmark in a loop over all children of the tree root,
+otherwise, the operation is run on the root node (C/R).
+
+As an example, the character code ``(SATR T1)`` states that the benchmark was
+running for tree T1, with plain string text (S) and attributes (A).  It was
+run against the root element (R) in the tree structure of the data (T).
+
+Note that very small operations are repeated in integer loops to make them
+measurable.  It is therefore not always possible to compare the absolute
+timings of, say, a single access benchmark (which usually loops) and a 'get
+all in one step' benchmark, which already takes enough time to be measurable
+and is therefore measured as is.  An example is the index access to a single
+child, which cannot be compared to the timings for ``getchildren()``.  Take a
+look at the concrete benchmarks in the scripts to understand how the numbers
+compare.
+
+
+Parsing and Serialising
+=======================
+
+Serialisation is an area where lxml excels.  The reason is that it
+executes entirely at the C level, without any interaction with Python
+code.  The results are rather impressive, especially for UTF-8, which
+is native to libxml2.  While 20 to 40 times faster than (c)ElementTree
+1.2 (which is part of the standard library since Python 2.5), lxml is
+still more than 7 times as fast as the much improved ElementTree 1.3::
+
+  lxe: tostring_utf16  (S-TR T1)    9.8219 msec/pass
+  cET: tostring_utf16  (S-TR T1)   88.7740 msec/pass
+  ET : tostring_utf16  (S-TR T1)   99.6690 msec/pass
+
+  lxe: tostring_utf16  (UATR T1)   10.3750 msec/pass
+  cET: tostring_utf16  (UATR T1)   90.7581 msec/pass
+  ET : tostring_utf16  (UATR T1)  102.3569 msec/pass
+
+  lxe: tostring_utf16  (S-TR T2)   10.2711 msec/pass
+  cET: tostring_utf16  (S-TR T2)   93.5340 msec/pass
+  ET : tostring_utf16  (S-TR T2)  105.8500 msec/pass
+
+  lxe: tostring_utf8   (S-TR T2)    7.1261 msec/pass
+  cET: tostring_utf8   (S-TR T2)   93.4091 msec/pass
+  ET : tostring_utf8   (S-TR T2)  105.5419 msec/pass
+
+  lxe: tostring_utf8   (U-TR T3)    1.4591 msec/pass
+  cET: tostring_utf8   (U-TR T3)   29.6180 msec/pass
+  ET : tostring_utf8   (U-TR T3)   31.9080 msec/pass
+
+The same applies to plain text serialisation.  Note that the
+cElementTree version in the standard library does not currently
+support this, as it is a new feature in ET 1.3 and lxml.etree 2.0::
+
+  lxe: tostring_text_ascii     (S-TR T1)    1.9400 msec/pass
+  cET: tostring_text_ascii     (S-TR T1)   41.6231 msec/pass
+  ET : tostring_text_ascii     (S-TR T1)   52.7501 msec/pass
+
+  lxe: tostring_text_ascii     (S-TR T3)    0.5331 msec/pass
+  cET: tostring_text_ascii     (S-TR T3)   12.9712 msec/pass
+  ET : tostring_text_ascii     (S-TR T3)   15.3620 msec/pass
+
+  lxe: tostring_text_utf16     (S-TR T1)    3.2430 msec/pass
+  cET: tostring_text_utf16     (S-TR T1)   41.9259 msec/pass
+  ET : tostring_text_utf16     (S-TR T1)   53.4091 msec/pass
+
+  lxe: tostring_text_utf16     (U-TR T1)    3.6838 msec/pass
+  cET: tostring_text_utf16     (U-TR T1)   38.7859 msec/pass
+  ET : tostring_text_utf16     (U-TR T1)   50.8440 msec/pass
+
+Unlike ElementTree, the ``tostring()`` function in lxml also supports
+serialisation to a Python unicode string object::
+
+  lxe: tostring_text_unicode   (S-TR T1)    2.4869 msec/pass
+  lxe: tostring_text_unicode   (U-TR T1)    3.0370 msec/pass
+  lxe: tostring_text_unicode   (S-TR T3)    0.6518 msec/pass
+  lxe: tostring_text_unicode   (U-TR T3)    0.7300 msec/pass
+
+For parsing, lxml.etree and cElementTree compete for the medal.
+Depending on the input, either of the two can be faster.  The (c)ET
+libraries use a very thin layer on top of the expat parser, which is
+known to be very fast.  Here are some timings from the benchmarking
+suite::
+
+  lxe: parse_stringIO  (SAXR T1)   19.9990 msec/pass
+  cET: parse_stringIO  (SAXR T1)    8.4970 msec/pass
+  ET : parse_stringIO  (SAXR T1)  183.9781 msec/pass
+
+  lxe: parse_stringIO  (S-XR T3)    2.0790 msec/pass
+  cET: parse_stringIO  (S-XR T3)    2.7430 msec/pass
+  ET : parse_stringIO  (S-XR T3)   47.4229 msec/pass
+
+  lxe: parse_stringIO  (UAXR T3)   11.1630 msec/pass
+  cET: parse_stringIO  (UAXR T3)   15.0940 msec/pass
+  ET : parse_stringIO  (UAXR T3)   92.6890 msec/pass
+
+And another couple of timings `from a benchmark`_ that Fredrik Lundh
+`used to promote cElementTree`_, comparing a number of different
+parsers.  First, parsing a 280KB XML file containing Shakespeare's
+Hamlet::
+
+  lxml.etree.parse done in 0.005 seconds
+  cElementTree.parse done in 0.012 seconds
+  elementtree.ElementTree.parse done in 0.136 seconds
+  elementtree.XMLTreeBuilder: 6636 nodes read in 0.243 seconds
+  elementtree.SimpleXMLTreeBuilder: 6636 nodes read in 0.314 seconds
+  elementtree.SgmlopXMLTreeBuilder: 6636 nodes read in 0.104 seconds
+  minidom tree read in 0.137 seconds
+
+And a 3.4MB XML file containing the Old Testament::
+
+  lxml.etree.parse done in 0.031 seconds
+  cElementTree.parse done in 0.039 seconds
+  elementtree.ElementTree.parse done in 0.537 seconds
+  elementtree.XMLTreeBuilder: 25317 nodes read in 0.577 seconds
+  elementtree.SimpleXMLTreeBuilder: 25317 nodes read in 1.265 seconds
+  elementtree.SgmlopXMLTreeBuilder: 25317 nodes read in 0.331 seconds
+  minidom tree read in 0.643 seconds
+
+.. _`from a benchmark`: http://svn.effbot.org/public/elementtree-1.3/benchmark.py
+.. _`used to promote cElementTree`: http://effbot.org/zone/celementtree.htm#benchmarks
+
+For plain parser performance, lxml.etree and cElementTree tend to stay
+rather close to each other, usually within a factor of two, with
+winners well distributed over both sides.  Similar timings can be
+observed for the ``iterparse()`` function::
+
+  lxe: iterparse_stringIO  (SAXR T1)   24.8621 msec/pass
+  cET: iterparse_stringIO  (SAXR T1)   17.3280 msec/pass
+  ET : iterparse_stringIO  (SAXR T1)  199.1270 msec/pass
+
+  lxe: iterparse_stringIO  (UAXR T3)   12.3630 msec/pass
+  cET: iterparse_stringIO  (UAXR T3)   17.5190 msec/pass
+  ET : iterparse_stringIO  (UAXR T3)   95.8610 msec/pass
+
+However, if you benchmark the complete round-trip of a serialise-parse
+cycle, the numbers will look similar to these::
+
+  lxe: write_utf8_parse_stringIO  (S-TR T1)   27.5791 msec/pass
+  cET: write_utf8_parse_stringIO  (S-TR T1)  158.9060 msec/pass
+  ET : write_utf8_parse_stringIO  (S-TR T1)  347.8320 msec/pass
+
+  lxe: write_utf8_parse_stringIO  (UATR T2)   34.4141 msec/pass
+  cET: write_utf8_parse_stringIO  (UATR T2)  187.7041 msec/pass
+  ET : write_utf8_parse_stringIO  (UATR T2)  388.9449 msec/pass
+
+  lxe: write_utf8_parse_stringIO  (S-TR T3)    3.7861 msec/pass
+  cET: write_utf8_parse_stringIO  (S-TR T3)   52.4600 msec/pass
+  ET : write_utf8_parse_stringIO  (S-TR T3)  101.4550 msec/pass
+
+  lxe: write_utf8_parse_stringIO  (SATR T4)    0.5522 msec/pass
+  cET: write_utf8_parse_stringIO  (SATR T4)    3.8941 msec/pass
+  ET : write_utf8_parse_stringIO  (SATR T4)    5.9431 msec/pass
+
+For applications that require a high parser throughput of large files,
+and that do little to no serialization, both cET and lxml.etree are a
+good choice.  The cET library is particularly fast for iterparse
+applications that extract small amounts of data or aggregate
+information from large XML data sets that do not fit into memory.  If
+it comes to round-trip performance, however, lxml is multiple times
+faster in total.  So, whenever the input documents are not
+considerably larger than the output, lxml is the clear winner.
+
+Again, note that the cET/ET timings are not based on the standard
+library versions in Python 2.6, but on vastly improved, unreleased
+developer versions.  Especially the serialiser in the standard library
+modules is several times slower than the benchmarked one, and at least
+20 times slower than the one in lxml.etree.
+
+Regarding HTML parsing, Ian Bicking has done some `benchmarking on
+lxml's HTML parser`_, comparing it to a number of other famous HTML
+parser tools for Python.  lxml wins this contest by quite a length.
+To give an idea, the numbers suggest that lxml.html can run a couple
+of parse-serialise cycles in the time that other tools need for
+parsing alone.  The comparison even shows some very favourable results
+regarding memory consumption.
+
+.. _`benchmarking on lxml's HTML parser`: http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/
+
+Liza Daly has written an article that presents a couple of tweaks to
+get the most out of lxml's parser for very large XML documents.  She
+quite favourably positions ``lxml.etree`` as a tool for
+`high-performance XML parsing`_.
+
+.. _`high-performance XML parsing`: http://www.ibm.com/developerworks/xml/library/x-hiperfparse/
+
+Finally, `xml.com`_ has a couple of publications about XML parser
+performance.  Farwick and Hafner have written two interesting articles
+that compare the parser of libxml2 to some major Java based XML
+parsers.  One deals with `event-driven parser performance`_, the other
+one presents `benchmark results comparing DOM parsers`_.  Both
+comparisons suggest that libxml2's parser performance is largely
+superiour to all commonly used Java parsers in almost all cases.  Note
+that the C parser benchmark results are based on xmlbench_, which uses
+a simpler setup for libxml2 than lxml does.
+
+.. _`xml.com`: http://www.xml.com/
+.. _`event-driven parser performance`: http://www.xml.com/lpt/a/1702
+.. _`benchmark results comparing DOM parsers`: http://www.xml.com/lpt/a/1703
+.. _xmlbench: http://xmlbench.sourceforge.net/
+
+
+The ElementTree API
+===================
+
+Since all three libraries implement the same API, their performance is
+easy to compare in this area.  A major disadvantage for lxml's
+performance is the different tree model that underlies libxml2.  It
+allows lxml to provide parent pointers for elements and full XPath
+support, but also increases the overhead of tree building and
+restructuring.  This can be seen from the tree setup times of the
+benchmark (given in seconds)::
+
+  lxe:       --     S-     U-     -A     SA     UA  
+       T1: 0.0407 0.0470 0.0506 0.0396 0.0464 0.0504
+       T2: 0.0480 0.0557 0.0584 0.0520 0.0608 0.0627
+       T3: 0.0118 0.0132 0.0136 0.0319 0.0322 0.0319
+       T4: 0.0002 0.0002 0.0002 0.0006 0.0006 0.0006
+  cET:       --     S-     U-     -A     SA     UA  
+       T1: 0.0045 0.0043 0.0043 0.0045 0.0043 0.0043
+       T2: 0.0068 0.0069 0.0066 0.0078 0.0070 0.0069
+       T3: 0.0040 0.0040 0.0040 0.0050 0.0052 0.0067
+       T4: 0.0000 0.0000 0.0000 0.0001 0.0001 0.0001
+  ET :       --     S-     U-     -A     SA     UA  
+       T1: 0.0479 0.1051 0.1279 0.0487 0.1597 0.0484
+       T2: 0.1995 0.0553 0.2297 0.2550 0.0550 0.2881
+       T3: 0.0177 0.0169 0.0174 0.0185 0.2895 0.0189
+       T4: 0.0003 0.0002 0.0003 0.0003 0.0014 0.0003
+
+While lxml is still a lot faster than ET in most cases, cET can be
+several times faster than lxml here.  One of the reasons is that lxml
+must encode incoming string data and tag names into UTF-8, and
+additionally discard the created Python elements after their use, when
+they are no longer referenced.  ET and cET represent the tree itself
+through these objects, which reduces the overhead in creating them.
+
+
+Child access
+------------
+
+The same reason makes operations like collecting children as in
+``list(element)`` more costly in lxml.  Where ET and cET can quickly
+create a shallow copy of their list of children, lxml has to create a
+Python object for each child and collect them in a list::
+
+  lxe: root_list_children        (--TR T1)    0.0079 msec/pass
+  cET: root_list_children        (--TR T1)    0.0029 msec/pass
+  ET : root_list_children        (--TR T1)    0.0100 msec/pass
+
+  lxe: root_list_children        (--TR T2)    0.0849 msec/pass
+  cET: root_list_children        (--TR T2)    0.0110 msec/pass
+  ET : root_list_children        (--TR T2)    0.1481 msec/pass
+
+This handicap is also visible when accessing single children::
+
+  lxe: first_child               (--TR T2)    0.0699 msec/pass
+  cET: first_child               (--TR T2)    0.0608 msec/pass
+  ET : first_child               (--TR T2)    0.3419 msec/pass
+
+  lxe: last_child                (--TR T1)    0.0710 msec/pass
+  cET: last_child                (--TR T1)    0.0648 msec/pass
+  ET : last_child                (--TR T1)    0.3309 msec/pass
+
+... unless you also add the time to find a child index in a bigger
+list.  ET and cET use Python lists here, which are based on arrays.
+The data structure used by libxml2 is a linked tree, and thus, a
+linked list of children::
+
+  lxe: middle_child              (--TR T1)    0.0989 msec/pass
+  cET: middle_child              (--TR T1)    0.0598 msec/pass
+  ET : middle_child              (--TR T1)    0.3390 msec/pass
+
+  lxe: middle_child              (--TR T2)    2.7599 msec/pass
+  cET: middle_child              (--TR T2)    0.0620 msec/pass
+  ET : middle_child              (--TR T2)    0.3610 msec/pass
+
+
+Element creation
+----------------
+
+As opposed to ET, libxml2 has a notion of documents that each element must be
+in.  This results in a major performance difference for creating independent
+Elements that end up in independently created documents::
+
+  lxe: create_elements           (--TC T2)    1.1640 msec/pass
+  cET: create_elements           (--TC T2)    0.0808 msec/pass
+  ET : create_elements           (--TC T2)    0.5801 msec/pass
+
+Therefore, it is always preferable to create Elements for the document they
+are supposed to end up in, either as SubElements of an Element or using the
+explicit ``Element.makeelement()`` call::
+
+  lxe: makeelement               (--TC T2)    1.2751 msec/pass
+  cET: makeelement               (--TC T2)    0.1469 msec/pass
+  ET : makeelement               (--TC T2)    0.7451 msec/pass
+
+  lxe: create_subelements        (--TC T2)    1.1470 msec/pass
+  cET: create_subelements        (--TC T2)    0.1080 msec/pass
+  ET : create_subelements        (--TC T2)    1.4369 msec/pass
+
+So, if the main performance bottleneck of an application is creating large XML
+trees in memory through calls to Element and SubElement, cET is the best
+choice.  Note, however, that the serialisation performance may even out this
+advantage, especially for smaller trees and trees with many attributes.
+
+
+Merging different sources
+-------------------------
+
+A critical action for lxml is moving elements between document contexts.  It
+requires lxml to do recursive adaptations throughout the moved tree structure.
+
+The following benchmark appends all root children of the second tree to the
+root of the first tree::
+
+  lxe: append_from_document      (--TR T1,T2)    2.0740 msec/pass
+  cET: append_from_document      (--TR T1,T2)    0.1271 msec/pass
+  ET : append_from_document      (--TR T1,T2)    0.4020 msec/pass
+
+  lxe: append_from_document      (--TR T3,T4)    0.0229 msec/pass
+  cET: append_from_document      (--TR T3,T4)    0.0088 msec/pass
+  ET : append_from_document      (--TR T3,T4)    0.0291 msec/pass
+
+Although these are fairly small numbers compared to parsing, this easily shows
+the different performance classes for lxml and (c)ET.  Where the latter do not
+have to care about parent pointers and tree structures, lxml has to deep
+traverse the appended tree.  The performance difference therefore increases
+with the size of the tree that is moved.
+
+This difference is not always as visible, but applies to most parts of the
+API, like inserting newly created elements::
+
+  lxe: insert_from_document       (--TR T1,T2)    7.2598 msec/pass
+  cET: insert_from_document       (--TR T1,T2)    0.1578 msec/pass
+  ET : insert_from_document       (--TR T1,T2)    0.5150 msec/pass
+
+or replacing the child slice by a newly created element::
+
+  lxe: replace_children_element   (--TC T1)    0.1149 msec/pass
+  cET: replace_children_element   (--TC T1)    0.0110 msec/pass
+  ET : replace_children_element   (--TC T1)    0.0558 msec/pass
+
+as opposed to replacing the slice with an existing element from the
+same document::
+
+  lxe: replace_children           (--TC T1)    0.0091 msec/pass
+  cET: replace_children           (--TC T1)    0.0060 msec/pass
+  ET : replace_children           (--TC T1)    0.0188 msec/pass
+
+While these numbers are too small to provide a major performance
+impact in practice, you should keep this difference in mind when you
+merge very large trees.
+
+
+deepcopy
+--------
+
+Deep copying a tree is fast in lxml::
+
+  lxe: deepcopy_all              (--TR T1)    5.0900 msec/pass
+  cET: deepcopy_all              (--TR T1)   57.9181 msec/pass
+  ET : deepcopy_all              (--TR T1)  499.1000 msec/pass
+
+  lxe: deepcopy_all              (-ATR T2)    6.3980 msec/pass
+  cET: deepcopy_all              (-ATR T2)   65.6390 msec/pass
+  ET : deepcopy_all              (-ATR T2)  526.5379 msec/pass
+
+  lxe: deepcopy_all              (S-TR T3)    1.4491 msec/pass
+  cET: deepcopy_all              (S-TR T3)   14.7018 msec/pass
+  ET : deepcopy_all              (S-TR T3)  123.5120 msec/pass
+
+So, for example, if you have a database-like scenario where you parse in a
+large tree and then search and copy independent subtrees from it for further
+processing, lxml is by far the best choice here.
+
+
+Tree traversal
+--------------
+
+Another area where lxml is very fast is iteration for tree traversal.  If your
+algorithms can benefit from step-by-step traversal of the XML tree and
+especially if few elements are of interest or the target element tag name is
+known, lxml is a good choice::
+
+  lxe: getiterator_all      (--TR T1)    1.6890 msec/pass
+  cET: getiterator_all      (--TR T1)   23.8621 msec/pass
+  ET : getiterator_all      (--TR T1)   11.1070 msec/pass
+
+  lxe: getiterator_islice   (--TR T2)    0.0188 msec/pass
+  cET: getiterator_islice   (--TR T2)    0.1841 msec/pass
+  ET : getiterator_islice   (--TR T2)   11.7059 msec/pass
+
+  lxe: getiterator_tag      (--TR T2)    0.0119 msec/pass
+  cET: getiterator_tag      (--TR T2)    0.3560 msec/pass
+  ET : getiterator_tag      (--TR T2)   10.6668 msec/pass
+
+  lxe: getiterator_tag_all  (--TR T2)    0.2429 msec/pass
+  cET: getiterator_tag_all  (--TR T2)   20.3710 msec/pass
+  ET : getiterator_tag_all  (--TR T2)   10.6280 msec/pass
+
+This translates directly into similar timings for ``Element.findall()``::
+
+  lxe: findall              (--TR T2)    2.4588 msec/pass
+  cET: findall              (--TR T2)   24.1358 msec/pass
+  ET : findall              (--TR T2)   13.0949 msec/pass
+
+  lxe: findall              (--TR T3)    0.5939 msec/pass
+  cET: findall              (--TR T3)    6.9802 msec/pass
+  ET : findall              (--TR T3)    3.8991 msec/pass
+
+  lxe: findall_tag          (--TR T2)    0.2789 msec/pass
+  cET: findall_tag          (--TR T2)   20.5719 msec/pass
+  ET : findall_tag          (--TR T2)   10.8678 msec/pass
+
+  lxe: findall_tag          (--TR T3)    0.1638 msec/pass
+  cET: findall_tag          (--TR T3)    5.0790 msec/pass
+  ET : findall_tag          (--TR T3)    2.5120 msec/pass
+
+Note that all three libraries currently use the same Python
+implementation for ``.findall()``, except for their native tree
+iterator (``element.iter()``).
+
+
+XPath
+=====
+
+The following timings are based on the benchmark script `bench_xpath.py`_.
+
+This part of lxml does not have an equivalent in ElementTree.  However, lxml
+provides more than one way of accessing it and you should take care which part
+of the lxml API you use.  The most straight forward way is to call the
+``xpath()`` method on an Element or ElementTree::
+
+  lxe: xpath_method         (--TC T1)    0.7598 msec/pass
+  lxe: xpath_method         (--TC T2)   12.6798 msec/pass
+  lxe: xpath_method         (--TC T3)    0.0758 msec/pass
+  lxe: xpath_method         (--TC T4)    0.6182 msec/pass
+
+This is well suited for testing and when the XPath expressions are as diverse
+as the trees they are called on.  However, if you have a single XPath
+expression that you want to apply to a larger number of different elements,
+the ``XPath`` class is the most efficient way to do it::
+
+  lxe: xpath_class          (--TC T1)    0.2189 msec/pass
+  lxe: xpath_class          (--TC T2)    1.4110 msec/pass
+  lxe: xpath_class          (--TC T3)    0.0319 msec/pass
+  lxe: xpath_class          (--TC T4)    0.0880 msec/pass
+
+Note that this still allows you to use variables in the expression, so you can
+parse it once and then adapt it through variables at call time.  In other
+cases, where you have a fixed Element or ElementTree and want to run different
+expressions on it, you should consider the ``XPathEvaluator``::
+
+  lxe: xpath_element        (--TR T1)    0.1669 msec/pass
+  lxe: xpath_element        (--TR T2)    6.9060 msec/pass
+  lxe: xpath_element        (--TR T3)    0.0451 msec/pass
+  lxe: xpath_element        (--TR T4)    0.1681 msec/pass
+
+While it looks slightly slower, creating an XPath object for each of the
+expressions generates a much higher overhead here::
+
+  lxe: xpath_class_repeat   (--TC T1)    0.7451 msec/pass
+  lxe: xpath_class_repeat   (--TC T2)   12.2290 msec/pass
+  lxe: xpath_class_repeat   (--TC T3)    0.0730 msec/pass
+  lxe: xpath_class_repeat   (--TC T4)    0.5970 msec/pass
+
+
+A longer example
+================
+
+... based on lxml 1.3.
+
+A while ago, Uche Ogbuji posted a `benchmark proposal`_ that would
+read in a 3MB XML version of the `Old Testament`_ of the Bible and
+look for the word *begat* in all verses.  Apparently, it is contained
+in 120 out of almost 24000 verses.  This is easy to implement in
+ElementTree using ``findall()``.  However, the fastest and most memory
+friendly way to do this is obviously ``iterparse()``, as most of the
+data is not of any interest.
+
+.. _`benchmark proposal`: http://www.onlamp.com/pub/wlg/6291
+.. _`Old Testament`: http://www.ibiblio.org/bosak/xml/eg/religion.2.00.xml.zip
+
+Now, Uche's original proposal was more or less the following:
+
+.. sourcecode:: python
+
+  def bench_ET():
+      tree = ElementTree.parse("ot.xml")
+      result = []
+      for v in tree.findall("//v"):
+          text = v.text
+          if 'begat' in text:
+              result.append(text)
+      return len(result)
+
+which takes about one second on my machine today.  The faster ``iterparse()``
+variant looks like this:
+
+.. sourcecode:: python
+
+  def bench_ET_iterparse():
+      result = []
+      for event, v in ElementTree.iterparse("ot.xml"):
+          if v.tag == 'v':
+              text = v.text
+              if 'begat' in text:
+                  result.append(text)
+          v.clear()
+      return len(result)
+
+The improvement is about 10%.  At the time I first tried (early 2006), lxml
+didn't have ``iterparse()`` support, but the ``findall()`` variant was already
+faster than ElementTree.  This changes immediately when you switch to
+cElementTree.  The latter only needs 0.17 seconds to do the trick today and
+only some impressive 0.10 seconds when running the iterparse version.  And
+even back then, it was quite a bit faster than what lxml could achieve.
+
+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
+things in XML documents.  It is possible to move the whole thing to a pure
+XPath implementation, which looks like this:
+
+.. sourcecode:: python
+
+  def bench_lxml_xpath_all():
+      tree = etree.parse("ot.xml")
+      result = tree.xpath("//v[contains(., 'begat')]/text()")
+      return len(result)
+
+This runs in about 0.13 seconds and is about the shortest possible
+implementation (in lines of Python code) that I could come up with.  Now, this
+is already a rather complex XPath expression compared to the simple "//v"
+ElementPath expression we started with.  Since this is also valid XPath, let's
+try this instead:
+
+.. sourcecode:: python
+
+  def bench_lxml_xpath():
+      tree = etree.parse("ot.xml")
+      result = []
+      for v in tree.xpath("//v"):
+          text = v.text
+          if 'begat' in text:
+              result.append(text)
+      return len(result)
+
+This gets us down to 0.12 seconds, thus showing that a generic XPath
+evaluation engine cannot always compete with a simpler, tailored solution.
+However, since this is not much different from the original findall variant,
+we can remove the complexity of the XPath call completely and just go with
+what we had in the beginning.  Under lxml, this runs in the same 0.12 seconds.
+
+But there is one thing left to try.  We can replace the simple ElementPath
+expression with a native tree iterator:
+
+.. sourcecode:: python
+
+  def bench_lxml_getiterator():
+      tree = etree.parse("ot.xml")
+      result = []
+      for v in tree.getiterator("v"):
+          text = v.text
+          if 'begat' in text:
+              result.append(text)
+      return len(result)
+
+This implements the same thing, just without the overhead of parsing and
+evaluating a path expression.  And this makes it another bit faster, down to
+0.11 seconds.  For comparison, cElementTree runs this version in 0.17 seconds.
+
+So, what have we learned?
+
+* Python code is not slow.  The pure XPath solution was not even as fast as
+  the first shot Python implementation.  In general, a few more lines in
+  Python make things more readable, which is much more important than the last
+  5% of performance.
+
+* It's important to know the available options - and it's worth starting with
+  the most simple one.  In this case, a programmer would then probably have
+  started with ``getiterator("v")`` or ``iterparse()``.  Either of them would
+  already have been the most efficient, depending on which library is used.
+
+* It's important to know your tool.  lxml and cElementTree are both very fast
+  libraries, but they do not have the same performance characteristics.  The
+  fastest solution in one library can be comparatively slow in the other.  If
+  you optimise, optimise for the specific target platform.
+
+* It's not always worth optimising.  After all that hassle we got from 0.12
+  seconds for the initial implementation to 0.11 seconds.  Switching over to
+  cElementTree and writing an ``iterparse()`` based version would have given
+  us 0.10 seconds - not a big difference for 3MB of XML.
+
+* Take care what operation is really dominating in your use case.  If we split
+  up the operations, we can see that lxml is slightly slower than cElementTree
+  on ``parse()`` (both about 0.06 seconds), but more visibly slower on
+  ``iterparse()``: 0.07 versus 0.10 seconds.  However, tree iteration in lxml
+  is increadibly fast, so it can be better to parse the whole tree and then
+  iterate over it rather than using ``iterparse()`` to do both in one step.
+  Or, you can just wait for the lxml developers to optimise iterparse in one
+  of the next releases...
+
+
+lxml.objectify
+==============
+
+The following timings are based on the benchmark script `bench_objectify.py`_.
+
+Objectify is a data-binding API for XML based on lxml.etree, that was added in
+version 1.1.  It uses standard Python attribute access to traverse the XML
+tree.  It also features ObjectPath, a fast path language based on the same
+meme.
+
+Just like lxml.etree, lxml.objectify creates Python representations of
+elements on the fly.  To save memory, the normal Python garbage collection
+mechanisms will discard them when their last reference is gone.  In cases
+where deeply nested elements are frequently accessed through the objectify
+API, the create-discard cycles can become a bottleneck, as elements have to be
+instantiated over and over again.
+
+
+ObjectPath
+----------
+
+ObjectPath can be used to speed up the access to elements that are deep in the
+tree.  It avoids step-by-step Python element instantiations along the path,
+which can substantially improve the access time::
+
+  lxe: attribute                  (--TR T1)    4.8928 msec/pass
+  lxe: attribute                  (--TR T2)   25.5480 msec/pass
+  lxe: attribute                  (--TR T4)    4.6349 msec/pass
+
+  lxe: objectpath                 (--TR T1)    1.4842 msec/pass
+  lxe: objectpath                 (--TR T2)   21.1990 msec/pass
+  lxe: objectpath                 (--TR T4)    1.4892 msec/pass
+
+  lxe: attributes_deep            (--TR T1)   11.9710 msec/pass
+  lxe: attributes_deep            (--TR T2)   32.4290 msec/pass
+  lxe: attributes_deep            (--TR T4)   11.4839 msec/pass
+
+  lxe: objectpath_deep            (--TR T1)    4.8139 msec/pass
+  lxe: objectpath_deep            (--TR T2)   24.6511 msec/pass
+  lxe: objectpath_deep            (--TR T4)    4.7588 msec/pass
+
+Note, however, that parsing ObjectPath expressions is not for free either, so
+this is most effective for frequently accessing the same element.
+
+
+Caching Elements
+----------------
+
+A way to improve the normal attribute access time is static instantiation of
+the Python objects, thus trading memory for speed.  Just create a cache
+dictionary and run:
+
+.. sourcecode:: python
+
+    cache[root] = list(root.iter())
+
+after parsing and:
+
+.. sourcecode:: python
+
+    del cache[root]
+
+when you are done with the tree.  This will keep the Python element
+representations of all elements alive and thus avoid the overhead of repeated
+Python object creation.  You can also consider using filters or generator
+expressions to be more selective.  By choosing the right trees (or even
+subtrees and elements) to cache, you can trade memory usage against access
+speed::
+
+  lxe: attribute_cached           (--TR T1)    3.8228 msec/pass
+  lxe: attribute_cached           (--TR T2)   23.7138 msec/pass
+  lxe: attribute_cached           (--TR T4)    3.5269 msec/pass
+
+  lxe: attributes_deep_cached     (--TR T1)    4.6771 msec/pass
+  lxe: attributes_deep_cached     (--TR T2)   24.8699 msec/pass
+  lxe: attributes_deep_cached     (--TR T4)    4.3321 msec/pass
+
+  lxe: objectpath_deep_cached     (--TR T1)    1.1430 msec/pass
+  lxe: objectpath_deep_cached     (--TR T2)   19.7470 msec/pass
+  lxe: objectpath_deep_cached     (--TR T4)    1.1740 msec/pass
+
+Things to note: you cannot currently use ``weakref.WeakKeyDictionary`` objects
+for this as lxml's element objects do not support weak references (which are
+costly in terms of memory).  Also note that new element objects that you add
+to these trees will not turn up in the cache automatically and will therefore
+still be garbage collected when all their Python references are gone, so this
+is most effective for largely immutable trees.  You should consider using a
+set instead of a list in this case and add new elements by hand.
+
+
+Further optimisations
+---------------------
+
+Here are some more things to try if optimisation is required:
+
+* A lot of time is usually spent in tree traversal to find the addressed
+  elements in the tree.  If you often work in subtrees, do what you would also
+  do with deep Python objects: assign the parent of the subtree to a variable
+  or pass it into functions instead of starting at the root.  This allows
+  accessing its descendents more directly.
+
+* Try assigning data values directly to attributes instead of passing them
+  through DataElement.
+
+* If you use custom data types that are costly to parse, try running
+  ``objectify.annotate()`` over read-only trees to speed up the attribute type
+  inference on read access.
+
+Note that none of these measures is guaranteed to speed up your application.
+As usual, you should prefer readable code over premature optimisations and
+profile your expected use cases before bothering to apply optimisations at
+random.
diff --git a/doc/sphinx/_sources/resolvers.txt b/doc/sphinx/_sources/resolvers.txt
new file mode 100644 (file)
index 0000000..6f0b320
--- /dev/null
@@ -0,0 +1,283 @@
+Document loading and URL resolving
+==================================
+
+.. contents::
+..
+   1  XML Catalogs
+   2  URI Resolvers
+   3  Document loading in context
+   4  I/O access control in XSLT
+
+
+The normal way to load external entities (such as DTDs) is by using
+XML catalogs.  Lxml also has support for user provided document
+loaders in both the parsers and XSL transformations.  These so-called
+resolvers are subclasses of the etree.Resolver class.
+
+..
+  >>> try: from StringIO import StringIO
+  ... except ImportError:
+  ...    from io import BytesIO
+  ...    def StringIO(s):
+  ...        if isinstance(s, str): s = s.encode("UTF-8")
+  ...        return BytesIO(s)
+
+
+XML Catalogs
+------------
+
+When loading an external entity for a document, e.g. a DTD, the parser
+is normally configured to prevent network access (see the
+``no_network`` parser option).  Instead, it will try to load the
+entity from their local file system path or, in the most common case
+that the entity uses a network URL as reference, from a local XML
+catalog.
+
+`XML catalogs`_ are the preferred and agreed-on mechanism to load
+external entities from XML processors.  Most tools will use them, so
+it is worth configuring them properly on a system.  Many Linux
+installations use them by default, but on other systems they may need
+to get enabled manually.  The `libxml2 site`_ has some documentation
+on `how to set up XML catalogs`_
+
+.. _`XML catalogs`: http://www.oasis-open.org/committees/entity/spec.html
+.. _`libxml2 site`: http://xmlsoft.org/
+.. _`how to set up XML catalogs`: http://xmlsoft.org/catalog.html
+
+
+URI Resolvers
+-------------
+
+Here is an example of a custom resolver:
+
+.. sourcecode:: pycon
+
+  >>> from lxml import etree
+
+  >>> class DTDResolver(etree.Resolver):
+  ...     def resolve(self, url, id, context):
+  ...         print("Resolving URL '%s'" % url)
+  ...         return self.resolve_string(
+  ...             '<!ENTITY myentity "[resolved text: %s]">' % url, context)
+
+This defines a resolver that always returns a dynamically generated DTD
+fragment defining an entity.  The ``url`` argument passes the system URL of
+the requested document, the ``id`` argument is the public ID.  Note that any
+of these may be None.  The context object is not normally used by client code.
+
+Resolving is based on the methods of the Resolver object that build
+internal representations of the result document.  The following
+methods exist:
+
+* ``resolve_string`` takes a parsable string as result document
+* ``resolve_filename`` takes a filename
+* ``resolve_file`` takes an open file-like object that has at least a read() method
+* ``resolve_empty`` resolves into an empty document
+
+The ``resolve()`` method may choose to return None, in which case the next
+registered resolver (or the default resolver) is consulted.  Resolving always
+terminates if ``resolve()`` returns the result of any of the above
+``resolve_*()`` methods.
+
+Resolvers are registered local to a parser:
+
+.. sourcecode:: pycon
+
+  >>> parser = etree.XMLParser(load_dtd=True)
+  >>> parser.resolvers.add( DTDResolver() )
+
+Note that we instantiate a parser that loads the DTD.  This is not done by the
+default parser, which does no validation.  When we use this parser to parse a
+document that requires resolving a URL, it will call our custom resolver:
+
+.. sourcecode:: pycon
+
+  >>> xml = '<!DOCTYPE doc SYSTEM "MissingDTD.dtd"><doc>&myentity;</doc>'
+  >>> tree = etree.parse(StringIO(xml), parser)
+  Resolving URL 'MissingDTD.dtd'
+  >>> root = tree.getroot()
+  >>> print(root.text)
+  [resolved text: MissingDTD.dtd]
+
+The entity in the document was correctly resolved by the generated DTD
+fragment.
+
+
+Document loading in context
+---------------------------
+
+XML documents memorise their initial parser (and its resolvers) during their
+life-time.  This means that a lookup process related to a document will use
+the resolvers of the document's parser.  We can demonstrate this with a
+resolver that only responds to a specific prefix:
+
+.. sourcecode:: pycon
+
+  >>> class PrefixResolver(etree.Resolver):
+  ...     def __init__(self, prefix):
+  ...         self.prefix = prefix
+  ...         self.result_xml = '''\
+  ...              <xsl:stylesheet
+  ...                     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  ...                <test xmlns="testNS">%s-TEST</test>
+  ...              </xsl:stylesheet>
+  ...              ''' % prefix
+  ...     def resolve(self, url, pubid, context):
+  ...         if url.startswith(self.prefix):
+  ...             print("Resolved url %s as prefix %s" % (url, self.prefix))
+  ...             return self.resolve_string(self.result_xml, context)
+
+We demonstrate this in XSLT and use the following stylesheet as an example:
+
+.. sourcecode:: pycon
+
+  >>> xml_text = """\
+  ... <xsl:stylesheet version="1.0"
+  ...    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  ...   <xsl:include href="honk:test"/>
+  ...   <xsl:template match="/">
+  ...     <test>
+  ...       <xsl:value-of select="document('hoi:test')/*/*/text()"/>
+  ...     </test>
+  ...   </xsl:template>
+  ... </xsl:stylesheet>
+  ... """
+
+Note that it needs to resolve two URIs: ``honk:test`` when compiling the XSLT
+document (i.e. when resolving ``xsl:import`` and ``xsl:include`` elements) and
+``hoi:test`` at transformation time, when calls to the ``document`` function
+are resolved.  If we now register different resolvers with two different
+parsers, we can parse our document twice in different resolver contexts:
+
+.. sourcecode:: pycon
+
+  >>> hoi_parser = etree.XMLParser()
+  >>> normal_doc = etree.parse(StringIO(xml_text), hoi_parser)
+
+  >>> hoi_parser.resolvers.add( PrefixResolver("hoi") )
+  >>> hoi_doc = etree.parse(StringIO(xml_text), hoi_parser)
+
+  >>> honk_parser = etree.XMLParser()
+  >>> honk_parser.resolvers.add( PrefixResolver("honk") )
+  >>> honk_doc = etree.parse(StringIO(xml_text), honk_parser)
+
+These contexts are important for the further behaviour of the documents.  They
+memorise their original parser so that the correct set of resolvers is used in
+subsequent lookups.  To compile the stylesheet, XSLT must resolve the
+``honk:test`` URI in the ``xsl:include`` element.  The ``hoi`` resolver cannot
+do that:
+
+.. sourcecode:: pycon
+
+  >>> transform = etree.XSLT(normal_doc)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XSLTParseError: Cannot resolve URI honk:test
+
+  >>> transform = etree.XSLT(hoi_doc)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XSLTParseError: Cannot resolve URI honk:test
+
+However, if we use the ``honk`` resolver associated with the respective
+document, everything works fine:
+
+.. sourcecode:: pycon
+
+  >>> transform = etree.XSLT(honk_doc)
+  Resolved url honk:test as prefix honk
+
+Running the transform accesses the same parser context again, but since it now
+needs to resolve the ``hoi`` URI in the call to the document function, its
+``honk`` resolver will fail to do so:
+
+.. sourcecode:: pycon
+
+  >>> result = transform(normal_doc)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XSLTApplyError: Cannot resolve URI hoi:test
+
+  >>> result = transform(hoi_doc)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XSLTApplyError: Cannot resolve URI hoi:test
+
+  >>> result = transform(honk_doc)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XSLTApplyError: Cannot resolve URI hoi:test
+
+This can only be solved by adding a ``hoi`` resolver to the original parser:
+
+.. sourcecode:: pycon
+
+  >>> honk_parser.resolvers.add( PrefixResolver("hoi") )
+  >>> result = transform(honk_doc)
+  Resolved url hoi:test as prefix hoi
+  >>> print(str(result)[:-1])
+  <?xml version="1.0"?>
+  <test>hoi-TEST</test>
+
+We can see that the ``hoi`` resolver was called to generate a document that
+was then inserted into the result document by the XSLT transformation.  Note
+that this is completely independent of the XML file you transform, as the URI
+is resolved from within the stylesheet context:
+
+.. sourcecode:: pycon
+
+  >>> result = transform(normal_doc)
+  Resolved url hoi:test as prefix hoi
+  >>> print(str(result)[:-1])
+  <?xml version="1.0"?>
+  <test>hoi-TEST</test>
+
+It may be seen as a matter of taste what resolvers the generated document
+inherits.  For XSLT, the output document inherits the resolvers of the input
+document and not those of the stylesheet.  Therefore, the last result does not
+inherit any resolvers at all.
+
+
+I/O access control in XSLT
+--------------------------
+
+By default, XSLT supports all extension functions from libxslt and libexslt as
+well as Python regular expressions through EXSLT.  Some extensions enable
+style sheets to read and write files on the local file system.
+
+XSLT has a mechanism to control the access to certain I/O operations during
+the transformation process.  This is most interesting where XSL scripts come
+from potentially insecure sources and must be prevented from modifying the
+local file system.  Note, however, that there is no way to keep them from
+eating up your precious CPU time, so this should not stop you from thinking
+about what XSLT you execute.
+
+Access control is configured using the ``XSLTAccessControl`` class.  It can be
+called with a number of keyword arguments that allow or deny specific
+operations:
+
+.. sourcecode:: pycon
+
+  >>> transform = etree.XSLT(honk_doc)
+  Resolved url honk:test as prefix honk
+  >>> result = transform(normal_doc)
+  Resolved url hoi:test as prefix hoi
+
+  >>> ac = etree.XSLTAccessControl(read_network=False)
+  >>> transform = etree.XSLT(honk_doc, access_control=ac)
+  Resolved url honk:test as prefix honk
+  >>> result = transform(normal_doc)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XSLTApplyError: xsltLoadDocument: read rights for hoi:test denied
+
+There are a few things to keep in mind:
+
+* XSL parsing (``xsl:import``, etc.) is not affected by this mechanism
+* ``read_file=False`` does not imply ``write_file=False``, all controls are
+  independent.
+* ``read_file`` only applies to files in the file system.  Any other scheme
+  for URLs is controlled by the ``*_network`` keywords.
+* If you need more fine-grained control than switching access on and off, you
+  should consider writing a custom document loader that returns empty
+  documents or raises exceptions if access is denied.
diff --git a/doc/sphinx/_sources/s5/lxml-ep2008.txt b/doc/sphinx/_sources/s5/lxml-ep2008.txt
new file mode 100644 (file)
index 0000000..4f4593b
--- /dev/null
@@ -0,0 +1,1130 @@
+====================================
+Implementing XML languages with lxml
+====================================
+
+Dr. Stefan Behnel
+-----------------
+
+.. class:: center
+
+   http://codespeak.net/lxml/
+
+   lxml-dev@codespeak.net
+
+   .. image:: tagpython.png
+
+.. footer:: Dr. Stefan Behnel, EuroPython 2008, Vilnius/Lietuva
+
+.. include:: <s5defs.txt>
+
+
+What is an Â»XML language«?
+==========================
+
+* a language in XML notation
+
+* aka Â»XML dialect«
+
+  * except that it's not a dialect
+
+* Examples:
+
+  * XML Schema
+
+  * Atom/RSS
+
+  * (X)HTML
+
+  * Open Document Format
+
+  * SOAP
+
+  * ... add your own one here
+
+
+Popular mistakes to avoid (1)
+=============================
+
+"That's easy, I can use regular expressions!"
+
+.. class:: incremental center
+
+     No, you can't.
+
+
+Popular mistakes to avoid (2)
+=============================
+
+"This is tree data, I'll take the DOM!"
+
+
+Popular mistakes to avoid (2)
+=============================
+
+"This is tree data, I'll take the DOM!"
+
+* DOM is ubiquitous, but it's as complicated as Java
+
+* uglify your application with tons of DOM code to
+
+  * walk over non-element nodes to find the data you need
+
+  * convert text content to other data types
+
+  * modify the XML tree in memory
+
+=> write verbose, redundant, hard-to-maintain code
+
+
+Popular mistakes to avoid (3)
+=============================
+
+"SAX is *so* fast and consumes *no* memory!"
+
+
+Popular mistakes to avoid (3)
+=============================
+
+"SAX is *so* fast and consumes *no* memory!"
+
+* but *writing* SAX code is *not* fast!
+
+* write error-prone, state-keeping SAX code to
+
+  * figure out where you are
+
+  * find the sections you need
+
+  * convert text content to other data types
+
+  * copy the XML data into custom data classes
+
+  * ... and don't forget the way back into XML!
+
+=> write confusing state-machine code
+
+=> debugging into existence
+
+
+Working with XML
+================
+
+    **Getting XML work done**
+
+    (instead of getting time wasted)
+
+
+How can you work with XML?
+==========================
+
+* Preparation:
+
+  * Implement usable data classes as an abstraction layer
+
+  * Implement a mapping from XML to the data classes
+
+  * Implement a mapping from the data classes to XML
+
+* Workflow:
+
+  * parse XML data
+
+  * map XML data to data classes
+
+  * work with data classes
+
+  * map data classes to XML
+
+  * serialise XML
+
+.. class:: incremental
+
+   * Approach:
+
+     * get rid of XML and do everything in your own code
+
+
+What if you could simplify this?
+================================
+
+* Preparation:
+
+  * Extend usable XML API classes into an abstraction layer
+
+* Workflow:
+
+  * parse XML data into XML API classes
+
+  * work with XML API classes
+
+  * serialise XML
+
+.. class:: incremental
+
+   * Approach:
+
+     * cover only the quirks of XML and make it work *for* you
+
+
+What if you could simplify this ...
+===================================
+
+* ... without sacrificing usability or flexibility?
+
+* ... using a high-speed, full-featured, pythonic XML toolkit?
+
+* ... with the power of XPath, XSLT and XML validation?
+
+.. class:: incremental center
+
+  \... then Â»lxml« is your friend!
+
+
+Overview
+========
+
+* What is lxml?
+
+  * what & who
+
+* How do you use it?
+
+  * Lesson 0: quick API overview
+
+    * ElementTree concepts and lxml features
+
+  * Lesson 1: parse XML
+
+    * how to get XML data into memory
+
+  * Lesson 2: generate XML
+
+    * how to write an XML generator for a language
+
+  * Lesson 3: working with XML trees made easy
+
+    * how to write an XML API for a language
+
+
+What is lxml?
+=============
+
+* a fast, full-featured toolkit for XML and HTML handling
+
+  * http://codespeak.net/lxml/
+
+  * lxml-dev@codespeak.net
+
+* based on and inspired by
+
+  * the C libraries libxml2 and libxslt (by Daniel Veillard)
+
+  * the ElementTree API (by Fredrik Lundh)
+
+  * the Cython compiler (by Robert Bradshaw, Greg Ewing & me)
+
+  * the Python language (by Guido & [*paste Misc/ACKS here*])
+
+  * user feedback, ideas and patches (by you!)
+
+    * keep doing that, we love you all!
+
+* maintained (and major parts) written by myself
+
+  * initial design and implementation by Martijn Faassen
+
+  * extensive HTML API and tools by Ian Bicking
+
+
+What do you get for your money?
+===============================
+
+* many tools in one:
+
+  * Generic, ElementTree compatible XML API: **lxml.etree**
+
+    * but faster for many tasks and much more feature-rich
+
+  * Special tool set for HTML handling: **lxml.html**
+
+  * Special API for pythonic data binding: **lxml.objectify**
+
+  * General purpose path languages: XPath and CSS selectors
+
+  * Validation: DTD, XML Schema, RelaxNG, Schematron
+
+  * XSLT, XInclude, C14N, ...
+
+  * Fast tree iteration, event-driven parsing, ...
+
+* it's free, but it's worth every â‚¬-Cent!
+
+  * what users say:
+
+    * Â»no qualification, I would recommend lxml for just about any
+      HTML task«
+
+    * Â»THE tool [...] for newbies and experienced developers«
+
+    * Â»you can do pretty much anything with an intuitive API«
+
+    * Â»lxml takes all the pain out of XML«
+
+
+Lesson 0: a quick overview
+==========================
+
+  why **»lxml takes all the pain out of XML«**
+
+  (a quick overview of lxml features and ElementTree concepts)
+
+..
+   >>> from lxml import etree, cssselect, html
+   >>> some_xml_data  = "<root><speech class='dialog'><p>So be it!</p></speech><p>stuff</p></root>"
+   >>> some_html_data = "<p>Just a quick note<br>next line</p>"
+   >>> xml_tree = etree.XML(some_xml_data)
+   >>> html_tree = html.fragment_fromstring(some_html_data)
+
+
+Namespaces in ElementTree
+=========================
+
+* uses Clark notation:
+
+  * wrap namespace URI in ``{...}``
+
+  * append the tag name
+
+  .. sourcecode:: pycon
+
+    >>> tag = "{http://www.w3.org/the/namespace}tagname"
+    >>> element = etree.Element(tag)
+
+* no prefixes!
+
+* a single, self-containing tag identifier
+
+
+Text content in ElementTree
+===========================
+
+* uses ``.text`` and ``.tail`` attributes:
+
+  .. sourcecode:: pycon
+
+    >>> div = html.fragment_fromstring(
+    ...     "<div><p>a paragraph<br>split in two</p> parts</div>")
+    >>> p = div[0]
+    >>> br = p[0]
+
+    >>> p.text
+    'a paragraph'
+    >>> br.text
+    >>> br.tail
+    'split in two'
+    >>> p.tail
+    ' parts'
+
+* no text nodes!
+
+  * simplifies tree traversal a lot
+
+  * simplifies many XML algorithms
+
+
+Attributes in ElementTree
+=========================
+
+* uses ``.get()`` and ``.set()`` methods:
+
+  .. sourcecode:: pycon
+
+    >>> root = etree.fromstring(
+    ...     '<root a="the value" b="of an" c="attribute"/>')
+
+    >>> root.get('a')
+    'the value'
+
+    >>> root.set('a', "THE value")
+    >>> root.get('a')
+    'THE value'
+
+* or the ``.attrib`` dictionary property:
+
+  .. sourcecode:: pycon
+
+    >>> d = root.attrib
+
+    >>> list(sorted(d.keys()))
+    ['a', 'b', 'c']
+    >>> list(sorted(d.values()))
+    ['THE value', 'attribute', 'of an']
+
+
+Tree iteration in lxml.etree (1)
+================================
+
+..
+    >>> import collections
+
+.. sourcecode:: pycon
+
+    >>> root = etree.fromstring(
+    ...   "<root> <a><b/><b/></a> <c><d/><e><f/></e><g/></c> </root>")
+
+    >>> print([child.tag for child in root])   # children
+    ['a', 'c']
+
+    >>> print([el.tag for el in root.iter()])  # self and descendants
+    ['root', 'a', 'b', 'b', 'c', 'd', 'e', 'f', 'g']
+
+    >>> print([el.tag for el in root.iterdescendants()])
+    ['a', 'b', 'b', 'c', 'd', 'e', 'f', 'g']
+
+
+    >>> def iter_breadth_first(root):
+    ...     bfs_queue = collections.deque([root])
+    ...     while bfs_queue:
+    ...         el = bfs_queue.popleft()  # pop next element
+    ...         bfs_queue.extend(el)      # append its children
+    ...         yield el
+
+    >>> print([el.tag for el in iter_breadth_first(root)])
+    ['root', 'a', 'c', 'b', 'b', 'd', 'e', 'g', 'f']
+
+
+Tree iteration in lxml.etree (2)
+================================
+
+.. sourcecode:: pycon
+
+    >>> root = etree.fromstring(
+    ...   "<root> <a><b/><b/></a> <c><d/><e><f/></e><g/></c> </root>")
+
+    >>> tree_walker = etree.iterwalk(root, events=('start', 'end'))
+
+    >>> for (event, element) in tree_walker:
+    ...     print("%s (%s)" % (element.tag, event))
+    root (start)
+    a (start)
+    b (start)
+    b (end)
+    b (start)
+    b (end)
+    a (end)
+    c (start)
+    d (start)
+    d (end)
+    e (start)
+    f (start)
+    f (end)
+    e (end)
+    g (start)
+    g (end)
+    c (end)
+    root (end)
+
+
+Path languages in lxml
+======================
+
+.. sourcecode:: xml
+
+    <root>
+      <speech class='dialog'><p>So be it!</p></speech>
+      <p>stuff</p>
+    </root>
+
+* search it with XPath
+
+  .. sourcecode:: pycon
+
+    >>> find_paragraphs = etree.XPath("//p")
+    >>> paragraphs = find_paragraphs(xml_tree)
+
+    >>> print([ p.text for p in paragraphs ])
+    ['So be it!', 'stuff']
+
+* search it with CSS selectors
+
+  .. sourcecode:: pycon
+
+    >>> find_dialogs = cssselect.CSSSelector("speech.dialog p")
+    >>> paragraphs = find_dialogs(xml_tree)
+
+    >>> print([ p.text for p in paragraphs ])
+    ['So be it!']
+
+
+Summary of lesson 0
+===================
+
+* lxml comes with various tools
+
+  * that aim to hide the quirks of XML
+
+  * that simplify finding and handling data
+
+  * that make XML a pythonic tool by itself
+
+
+Lesson 1: parsing XML/HTML
+==========================
+
+  **The input side**
+
+  (a quick overview)
+
+
+Parsing XML and HTML from ...
+=============================
+
+* strings: ``fromstring(xml_data)``
+
+  * byte strings, but also unicode strings
+
+* filenames: ``parse(filename)``
+
+* HTTP/FTP URLs: ``parse(url)``
+
+* file objects: ``parse(f)``
+
+  * ``f = open(filename, 'rb')`` !
+
+* file-like objects: ``parse(f)``
+
+  * only need a ``f.read(size)`` method
+
+* data chunks: ``parser.feed(xml_chunk)``
+
+  * ``result = parser.close()``
+
+.. class:: small right
+
+  (parsing from strings and filenames/URLs frees the GIL)
+
+
+Example: parsing from a string
+==============================
+
+* using the ``fromstring()`` function:
+
+  .. sourcecode:: pycon
+
+    >>> root_element = etree.fromstring(some_xml_data)
+
+* using the ``fromstring()`` function with a specific parser:
+
+  .. sourcecode:: pycon
+
+    >>> parser = etree.HTMLParser(remove_comments=True)
+    >>> root_element = etree.fromstring(some_html_data, parser)
+
+* or the ``XML()`` and ``HTML()`` aliases for literals in code:
+
+  .. sourcecode:: pycon
+
+    >>> root_element = etree.XML("<root><child/></root>")
+    >>> root_element = etree.HTML("<p>some<br>paragraph</p>")
+
+
+Parsing XML into ...
+====================
+
+* a tree in memory
+
+  * ``parse()`` and ``fromstring()`` functions
+
+* a tree in memory, but step-by-step with a generator
+
+  * ``iterparse()`` generates ``(start/end, element)`` events
+
+  * tree can be cleaned up to save space
+
+* SAX-like callbacks without building a tree
+
+  * ``parse()`` and ``fromstring()`` functions
+
+  * pass a ``target`` object into the parser
+
+
+Summary of lesson 1
+===================
+
+* parsing XML/HTML in lxml is mostly straight forward
+
+  * simple functions that do the job
+
+* advanced use cases are pretty simple
+
+  * event-driven parsing using ``iterparse()``
+
+  * special parser configuration with keyword arguments
+
+    * configuration is generally local to a parser
+
+* BTW: parsing is *very* fast, as is serialising
+
+  * don't hesitate to do parse-serialise-parse cycles
+
+
+Lesson 2: generating XML
+========================
+
+  **The output side**
+
+  (and how to make it safe and simple)
+
+
+The example language: Atom
+==========================
+
+The Atom XML format
+
+* Namespace: http://www.w3.org/2005/Atom
+
+* W3C recommendation derived from RSS and friends
+
+* Atom feeds describe news entries and annotated links
+
+  * a ``feed`` contains one or more ``entry`` elements
+
+  * an ``entry`` contains ``author``, ``link``, ``summary`` and/or ``content``
+
+
+Example: generate XML (1)
+=========================
+
+The ElementMaker (or *E-factory*)
+
+.. sourcecode:: pycon
+
+  >>> from lxml.builder import ElementMaker
+  >>> A = ElementMaker(namespace="http://www.w3.org/2005/Atom",
+  ...                  nsmap={None : "http://www.w3.org/2005/Atom"})
+
+.. class:: incremental
+
+ .. sourcecode:: pycon
+
+  >>> atom = A.feed(
+  ...   A.author( A.name("Stefan Behnel") ),
+  ...   A.entry(
+  ...     A.title("News from lxml"),
+  ...     A.link(href="http://codespeak.net/lxml/"),
+  ...     A.summary("See what's <b>fun</b> about lxml...",
+  ...               type="html"),
+  ...   )
+  ... )
+
+ .. sourcecode:: pycon
+
+  >>> from lxml.etree import tostring
+  >>> print( tostring(atom, pretty_print=True) )
+
+
+Example: generate XML (2)
+=========================
+
+.. sourcecode:: pycon
+
+  >>> atom = A.feed(
+  ...   A.author( A.name("Stefan Behnel") ),
+  ...   A.entry(
+  ...     A.title("News from lxml"),
+  ...     A.link(href="http://codespeak.net/lxml/"),
+  ...     A.summary("See what's <b>fun</b> about lxml...",
+  ...               type="html"),
+  ...   )
+  ... )
+
+.. sourcecode:: xml
+
+  <feed xmlns="http://www.w3.org/2005/Atom">
+    <author>
+      <name>Stefan Behnel</name>
+    </author>
+    <entry>
+      <title>News from lxml</title>
+      <link href="http://codespeak.net/lxml/"/>
+      <summary type="html">See what's &lt;b&gt;fun&lt;/b&gt;
+                           about lxml...</summary>
+    </entry>
+  </feed>
+
+
+Be careful what you type!
+=========================
+
+.. sourcecode:: pycon
+
+  >>> atom = A.feed(
+  ...   A.author( A.name("Stefan Behnel") ),
+  ...   A.entry(
+  ...     A.titel("News from lxml"),
+  ...     A.link(href="http://codespeak.net/lxml/"),
+  ...     A.summary("See what's <b>fun</b> about lxml...",
+  ...               type="html"),
+  ...   )
+  ... )
+
+.. sourcecode:: xml
+
+  <feed xmlns="http://www.w3.org/2005/Atom">
+    <author>
+      <name>Stefan Behnel</name>
+    </author>
+    <entry>
+      <titel>News from lxml</titel>
+      <link href="http://codespeak.net/lxml/"/>
+      <summary type="html">See what's &lt;b&gt;fun&lt;/b&gt;
+                           about lxml...</summary>
+    </entry>
+  </feed>
+
+
+Want more 'type safety'?
+========================
+
+Write an XML generator *module* instead:
+
+.. sourcecode:: python
+
+  # atomgen.py
+
+  from lxml import etree
+  from lxml.builder import ElementMaker
+
+  ATOM_NAMESPACE = "http://www.w3.org/2005/Atom"
+
+  A = ElementMaker(namespace=ATOM_NAMESPACE,
+                   nsmap={None : ATOM_NAMESPACE})
+
+  feed = A.feed
+  entry = A.entry
+  title = A.title
+  # ... and so on and so forth ...
+
+
+  # plus a little validation function: isvalid()
+  isvalid = etree.RelaxNG(file="atom.rng")
+
+
+The Atom generator module
+=========================
+
+..
+  >>> import sys
+  >>> sys.path.insert(0, "ep2008")
+
+.. sourcecode:: pycon
+
+  >>> import atomgen as A
+
+  >>> atom = A.feed(
+  ...   A.author( A.name("Stefan Behnel") ),
+  ...   A.entry(
+  ...     A.link(href="http://codespeak.net/lxml/"),
+  ...     A.title("News from lxml"),
+  ...     A.summary("See what's <b>fun</b> about lxml...",
+  ...               type="html"),
+  ...   )
+  ... )
+
+  >>> A.isvalid(atom) # ok, forgot the ID's => invalid XML ...
+  False
+
+  >>> title = A.titel("News from lxml")
+  Traceback (most recent call last):
+    ...
+  AttributeError: 'module' object has no attribute 'titel'
+
+
+Mixing languages (1)
+====================
+
+Atom can embed *serialised* HTML
+
+.. sourcecode:: pycon
+
+    >>> import lxml.html.builder as h
+
+    >>> html_fragment = h.DIV(
+    ...   "this is some\n",
+    ...   h.A("HTML", href="http://w3.org/MarkUp/"),
+    ...   "\ncontent")
+
+.. class:: incremental
+
+  .. sourcecode:: pycon
+
+    >>> serialised_html = etree.tostring(html_fragment, method="html")
+
+    >>> summary = A.summary(serialised_html, type="html")
+
+  .. sourcecode:: pycon
+
+    >>> print(etree.tostring(summary))
+    <summary xmlns="http://www.w3.org/2005/Atom" type="html">
+       &lt;div&gt;this is some
+       &lt;a href="http://w3.org/MarkUp/"&gt;HTML&lt;/a&gt;
+       content&lt;/div&gt;
+    </summary>
+
+
+Mixing languages (2)
+====================
+
+Atom can also embed non-escaped XHTML
+
+.. sourcecode:: pycon
+
+    >>> from copy import deepcopy
+    >>> xhtml_fragment = deepcopy(html_fragment)
+
+    >>> from lxml.html import html_to_xhtml
+    >>> html_to_xhtml(xhtml_fragment)
+
+    >>> summary = A.summary(xhtml_fragment, type="xhtml")
+
+.. class:: incremental
+
+  .. sourcecode:: pycon
+
+    >>> print(etree.tostring(summary, pretty_print=True))
+    <summary xmlns="http://www.w3.org/2005/Atom" type="xhtml">
+      <html:div xmlns:html="http://www.w3.org/1999/xhtml">this is some
+      <html:a href="http://w3.org/MarkUp/">HTML</html:a>
+      content</html:div>
+    </summary>
+
+
+Summary of lesson 2
+===================
+
+* generating XML is easy
+
+  * use the ElementMaker
+
+* wrap it in a module that provides
+
+  * the target namespace
+
+  * an ElementMaker name for each language element
+
+  * a validator
+
+  * maybe additional helper functions
+
+* mixing languages is easy
+
+  * define a generator module for each
+
+\... this is all you need for the *output* side of XML languages
+
+
+Lesson 3: Designing XML APIs
+============================
+
+  **The Element API**
+
+  (and how to make it the way *you* want)
+
+
+Trees in C and in Python
+========================
+
+* Trees have two representations:
+
+  * a plain, complete, low-level C tree provided by libxml2
+
+  * a set of Python Element proxies, each representing one element
+
+* Proxies are created on-the-fly:
+
+  * lxml creates an Element object for a C node on request
+
+  * proxies are garbage collected when going out of scope
+
+  * XML trees are garbage collected when deleting the last proxy
+
+.. class:: center
+
+  .. image:: ep2008/proxies.png
+
+
+Mapping Python classes to nodes
+===============================
+
+* Proxies can be assigned to XML nodes *by user code*
+
+  * lxml tells you about a node, you return a class
+
+
+Example: a simple Element class (1)
+===================================
+
+* define a subclass of ElementBase
+
+  .. sourcecode:: pycon
+
+    >>> class HonkElement(etree.ElementBase):
+    ...    @property
+    ...    def honking(self):
+    ...       return self.get('honking') == 'true'
+
+* let it replace the default Element class
+
+  .. sourcecode:: pycon
+
+    >>> lookup = etree.ElementDefaultClassLookup(
+    ...                             element=HonkElement)
+
+    >>> parser = etree.XMLParser()
+    >>> parser.set_element_class_lookup(lookup)
+
+
+Example: a simple Element class (2)
+===================================
+
+* use the new Element class
+
+  .. sourcecode:: pycon
+
+    >>> root = etree.XML('<root><honk honking="true"/></root>',
+    ...                  parser)
+
+    >>> root.honking
+    False
+    >>> root[0].honking
+    True
+
+
+Mapping Python classes to nodes
+===============================
+
+* The Element class lookup
+
+  * lxml tells you about a node, you return a class
+
+  * no restrictions on lookup algorithm
+
+  * each parser can use a different class lookup scheme
+
+  * lookup schemes can be chained through fallbacks
+
+* Classes can be selected based on
+
+  * the node type (element, comment or processing instruction)
+
+    * ``ElementDefaultClassLookup()``
+
+  * the namespaced node name
+
+    * ``CustomElementClassLookup()`` + a fallback
+
+    * ``ElementNamespaceClassLookup()`` + a fallback
+
+  * the value of an attribute (e.g. ``id`` or ``class``)
+
+    * ``AttributeBasedElementClassLookup()`` + a fallback
+
+  * read-only inspection of the tree
+
+    * ``PythonElementClassLookup()`` + a fallback
+
+
+Designing an Atom API
+=====================
+
+* a feed is a container for entries
+
+  .. sourcecode:: python
+
+    # atom.py
+
+    ATOM_NAMESPACE = "http://www.w3.org/2005/Atom"
+    _ATOM_NS = "{%s}" % ATOM_NAMESPACE
+
+    class FeedElement(etree.ElementBase):
+        @property
+        def entries(self):
+           return self.findall(_ATOM_NS + "entry")
+
+* it also has a couple of meta-data children, e.g. ``title``
+
+  .. sourcecode:: python
+
+    class FeedElement(etree.ElementBase):
+        # ...
+        @property
+        def title(self):
+            "return the title or None"
+            return self.find("title")
+
+
+Consider lxml.objectify
+=======================
+
+* ready-to-use, generic Python object API for XML
+
+.. sourcecode:: python
+
+    >>> from lxml import objectify
+
+    >>> feed = objectify.parse("atom-example.xml")
+    >>> print(feed.title)
+    Example Feed
+
+    >>> print([entry.title for entry in feed.entry])
+    ['Atom-Powered Robots Run Amok']
+
+    >>> print(feed.entry[0].title)
+    Atom-Powered Robots Run Amok
+
+
+Still room for more convenience
+===============================
+
+.. sourcecode:: python
+
+    from itertools import chain
+
+    class FeedElement(objectify.ObjectifiedElement):
+
+        def addIDs(self):
+            "initialise the IDs of feed and entries"
+
+           for element in chain([self], self.entry):
+               if element.find(_ATOM_NS + "id") is None:
+                   id = etree.SubElement(self, _ATOM_NS + "id")
+                   id.text = make_guid()
+
+
+Incremental API design
+======================
+
+* choose an XML API to start with
+
+  * lxml.etree is general purpose
+
+  * lxml.objectify is nice for document-style XML
+
+* fix Elements that really need some API sugar
+
+  * dict-mappings to children with specific content/attributes
+
+  * properties for specially typed attributes or child values
+
+  * simplified access to varying content types of an element
+
+  * shortcuts for unnecessarily deep subtrees
+
+* ignore what works well enough with the Element API
+
+  * lists of homogeneous children -> Element iteration
+
+  * string attributes -> .get()/.set()
+
+* let the API grow at your fingertips
+
+  * play with it and test use cases
+
+  * avoid "I want because I can" feature explosion!
+
+
+Setting up the Element mapping
+==============================
+
+Atom has a namespace => leave the mapping to lxml
+
+.. sourcecode:: python
+
+    # ...
+    _atom_lookup = etree.ElementNamespaceClassLookup(
+                      objectify.ObjectifyElementClassLookup())
+
+    # map the classes to tag names
+    ns = _atom_lookup.get_namespace(ATOM_NAMESPACE)
+    ns["feed"]  = FeedElement
+    ns["entry"] = EntryElement
+    # ... and so on
+    # or use ns.update(vars()) with appropriate class names
+
+    # create a parser that does some whitespace cleanup
+    atom_parser = etree.XMLParser(remove_blank_text=True)
+
+    # make it use our Atom classes
+    atom_parser.set_element_class_lookup(_atom_lookup)
+
+    # and help users in using our parser setup
+    def parse(input):
+        return etree.parse(input, atom_parser)
+
+
+Using your new Atom API
+=======================
+
+.. sourcecode:: pycon
+
+    >>> import atom
+    >>> feed = atom.parse("ep2008/atom-example.xml").getroot()
+
+    >>> print(len(feed.entry))
+    1
+    >>> print([entry.title for entry in feed.entry])
+    ['Atom-Powered Robots Run Amok']
+
+    >>> link_tag = "{%s}link" % atom.ATOM_NAMESPACE
+    >>> print([link.get("href") for link in feed.iter(link_tag)])
+    ['http://example.org/', 'http://example.org/2003/12/13/atom03']
+
+
+Summary of lesson 3
+===================
+
+To implement an XML API ...
+
+1) start off with lxml's Element API
+
+   * or take a look at the object API of lxml.objectify
+
+2) specialise it into a set of custom Element classes
+
+3) map them to XML tags using one of the lookup schemes
+
+4) improve the API incrementally while using it
+
+   * discover inconveniences and beautify them
+
+   * avoid putting work into things that work
+
+
+Conclusion
+==========
+
+lxml ...
+
+* provides a convenient set of tools for XML and HTML
+
+  * parsing
+
+  * generating
+
+  * working with in-memory trees
+
+* follows Python idioms wherever possible
+
+  * highly extensible through wrapping and subclassing
+
+  * callable objects for XPath, CSS selectors, XSLT, schemas
+
+  * iteration for tree traversal (even while parsing)
+
+  * list-/dict-like APIs, properties, keyword arguments, ...
+
+* makes extension and specialisation easy
+
+  * write a special XML generator module in trivial code
+  
+  * write your own XML API incrementally on-the-fly
diff --git a/doc/sphinx/_sources/sax.txt b/doc/sphinx/_sources/sax.txt
new file mode 100644 (file)
index 0000000..21ecec9
--- /dev/null
@@ -0,0 +1,137 @@
+Sax support
+===========
+
+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
+events into an ElementTree.  The SAX API used by lxml is compatible with that
+in the Python core (xml.sax), so is useful for interfacing lxml with code that
+uses the Python core SAX facilities.
+
+.. contents::
+.. 
+   1  Building a tree from SAX events
+   2  Producing SAX events from an ElementTree or Element
+   3  Interfacing with pulldom/minidom
+
+..
+  >>> try: from StringIO import StringIO
+  ... except ImportError:
+  ...    from io import BytesIO
+  ...    def StringIO(s):
+  ...        if isinstance(s, str): s = s.encode("UTF-8")
+  ...        return BytesIO(s)
+
+
+Building a tree from SAX events
+-------------------------------
+
+First of all, lxml has support for building a new tree given SAX events.  To
+do this, we use the special SAX content handler defined by lxml named
+``lxml.sax.ElementTreeContentHandler``:
+
+.. sourcecode:: pycon
+
+  >>> import lxml.sax
+  >>> handler = lxml.sax.ElementTreeContentHandler()
+
+Now let's fire some SAX events at it:
+
+.. sourcecode:: pycon
+
+  >>> handler.startElementNS((None, 'a'), 'a', {})
+  >>> handler.startElementNS((None, 'b'), 'b', {(None, 'foo'): 'bar'})
+  >>> handler.characters('Hello world')
+  >>> handler.endElementNS((None, 'b'), 'b')
+  >>> handler.endElementNS((None, 'a'), 'a')
+
+This constructs an equivalent tree.  You can access it through the ``etree``
+property of the handler:
+
+.. sourcecode:: pycon
+
+  >>> tree = handler.etree
+  >>> lxml.etree.tostring(tree.getroot())
+  b'<a><b foo="bar">Hello world</b></a>'
+
+By passing a ``makeelement`` function the constructor of
+``ElementTreeContentHandler``, e.g. the one of a parser you configured, you
+can determine which element class lookup scheme should be used.
+
+
+Producing SAX events from an ElementTree or Element
+---------------------------------------------------
+
+Let's make a tree we can generate SAX events for:
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO('<a><b>Text</b></a>')
+  >>> tree = lxml.etree.parse(f)
+
+To see whether the correct SAX events are produced, we'll write a custom
+content handler.:
+
+.. sourcecode:: pycon
+
+  >>> from xml.sax.handler import ContentHandler
+  >>> class MyContentHandler(ContentHandler):
+  ...     def __init__(self):
+  ...         self.a_amount = 0
+  ...         self.b_amount = 0
+  ...         self.text = None
+  ...
+  ...     def startElementNS(self, name, qname, attributes):
+  ...         uri, localname = name
+  ...         if localname == 'a':
+  ...             self.a_amount += 1
+  ...         if localname == 'b':
+  ...             self.b_amount += 1
+  ...
+  ...     def characters(self, data):
+  ...         self.text = data
+
+Note that it only defines the startElementNS() method and not startElement().
+The SAX event generator in lxml.sax currently only supports namespace-aware
+processing.
+
+To test the content handler, we can produce SAX events from the tree:
+
+.. sourcecode:: pycon
+
+  >>> handler = MyContentHandler()
+  >>> lxml.sax.saxify(tree, handler)
+
+This is what we expect:
+
+.. sourcecode:: pycon
+
+  >>> handler.a_amount
+  1
+  >>> handler.b_amount
+  1
+  >>> handler.text
+  'Text'
+
+
+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.
+
+You can use xml.dom.pulldom to build a minidom from lxml:
+
+.. sourcecode:: pycon
+
+  >>> from xml.dom.pulldom import SAX2DOM
+  >>> handler = SAX2DOM()
+  >>> lxml.sax.saxify(tree, handler)
+
+PullDOM makes the result available through the ``document`` attribute:
+
+.. sourcecode:: pycon
+
+  >>> dom = handler.document
+  >>> print(dom.firstChild.localName)
+  a
diff --git a/doc/sphinx/_sources/sitemap.txt b/doc/sphinx/_sources/sitemap.txt
new file mode 100644 (file)
index 0000000..7e7bea2
--- /dev/null
@@ -0,0 +1,38 @@
+Sitemap
+========
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   main
+   intro
+   api
+   ../INSTALL
+   performance
+   compatibility
+   FAQ
+
+   tutorial
+   API reference <api/>
+   parsing
+   validation
+   xpathxslt
+   objectify
+   lxmlhtml
+   cssselect
+   elementsoup
+   html5parser
+
+   resolvers
+   extensions
+   element_classes
+   sax
+   capi
+
+   build
+   lxml-source-howto
+   ../CREDITS
+
+   self
diff --git a/doc/sphinx/_sources/tutorial.txt b/doc/sphinx/_sources/tutorial.txt
new file mode 100644 (file)
index 0000000..8e1f29d
--- /dev/null
@@ -0,0 +1,1262 @@
+=======================
+The lxml.etree Tutorial
+=======================
+.. meta::
+  :description: The lxml tutorial on XML processing with Python
+  :keywords: XML processing with Python, lxml, lxml.etree, tutorial, ElementTree, Python, XML, HTML
+
+:Author:
+  Stefan Behnel
+
+This is a tutorial on XML processing with ``lxml.etree``.  It briefly
+overviews the main concepts of the `ElementTree API`_, and some simple
+enhancements that make your life as a programmer easier.
+
+For a complete reference of the API, see the `generated API
+documentation`_.
+
+.. _`ElementTree API`: http://effbot.org/zone/element-index.htm#documentation
+.. _`generated API documentation`: api/index.html
+
+.. contents::
+.. 
+   1  The Element class
+     1.1  Elements are lists
+     1.2  Elements carry attributes
+     1.3  Elements contain text
+     1.4  Using XPath to find text
+     1.5  Tree iteration
+     1.6  Serialisation
+   2  The ElementTree class
+   3  Parsing from strings and files
+     3.1  The fromstring() function
+     3.2  The XML() function
+     3.3  The parse() function
+     3.4  Parser objects
+     3.5  Incremental parsing
+     3.6  Event-driven parsing
+   4  Namespaces
+   5  The E-factory
+   6  ElementPath
+
+
+..
+  >>> try: from StringIO import StringIO
+  ... except ImportError:
+  ...    from io import BytesIO
+  ...    def StringIO(s):
+  ...        if isinstance(s, str): s = s.encode("UTF-8")
+  ...        return BytesIO(s)
+
+  >>> try: unicode = __builtins__["unicode"]
+  ... except (NameError, KeyError): unicode = str
+
+  >>> try: basestring = __builtins__["basestring"]
+  ... except (NameError, KeyError): basestring = str
+
+
+A common way to import ``lxml.etree`` is as follows:
+
+.. sourcecode:: pycon
+
+    >>> from lxml import etree
+
+If your code only uses the ElementTree API and does not rely on any
+functionality that is specific to ``lxml.etree``, you can also use (any part
+of) the following import chain as a fall-back to the original ElementTree:
+
+.. sourcecode:: python
+
+    try:
+      from lxml import etree
+      print("running with lxml.etree")
+    except ImportError:
+      try:
+        # Python 2.5
+        import xml.etree.cElementTree as etree
+        print("running with cElementTree on Python 2.5+")
+      except ImportError:
+        try:
+          # Python 2.5
+          import xml.etree.ElementTree as etree
+          print("running with ElementTree on Python 2.5+")
+        except ImportError:
+          try:
+            # normal cElementTree install
+            import cElementTree as etree
+            print("running with cElementTree")
+          except ImportError:
+            try:
+              # normal ElementTree install
+              import elementtree.ElementTree as etree
+              print("running with ElementTree")
+            except ImportError:
+              print("Failed to import ElementTree from any known place")
+
+To aid in writing portable code, this tutorial makes it clear in the examples
+which part of the presented API is an extension of lxml.etree over the
+original `ElementTree API`_, as defined by Fredrik Lundh's `ElementTree
+library`_.
+
+.. _`ElementTree library`: http://effbot.org/zone/element-index.htm
+
+..
+  >>> import sys
+  >>> from lxml import etree as _etree
+  >>> if sys.version_info[0] >= 3:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if isinstance(s, bytes) and bytes([10]) in s: s = s.decode("utf-8") # CR
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  ... else:
+  ...   class etree_mock(object):
+  ...     def __getattr__(self, name): return getattr(_etree, name)
+  ...     def tostring(self, *args, **kwargs):
+  ...       s = _etree.tostring(*args, **kwargs)
+  ...       if s[-1] == '\n': s = s[:-1]
+  ...       return s
+  >>> etree = etree_mock()
+
+
+The Element class
+=================
+
+An ``Element`` is the main container object for the ElementTree API.  Most of
+the XML tree functionality is accessed through this class.  Elements are
+easily created through the ``Element`` factory:
+
+.. sourcecode:: pycon
+
+    >>> root = etree.Element("root")
+
+The XML tag name of elements is accessed through the ``tag`` property:
+
+.. sourcecode:: pycon
+
+    >>> print(root.tag)
+    root
+
+Elements are organised in an XML tree structure.  To create child elements and
+add them to a parent element, you can use the ``append()`` method:
+
+.. sourcecode:: pycon
+
+    >>> root.append( etree.Element("child1") )
+
+However, this is so common that there is a shorter and much more efficient way
+to do this: the ``SubElement`` factory.  It accepts the same arguments as the
+``Element`` factory, but additionally requires the parent as first argument:
+
+.. sourcecode:: pycon
+
+    >>> child2 = etree.SubElement(root, "child2")
+    >>> child3 = etree.SubElement(root, "child3")
+
+To see that this is really XML, you can serialise the tree you have created:
+
+.. sourcecode:: pycon
+
+    >>> print(etree.tostring(root, pretty_print=True))
+    <root>
+      <child1/>
+      <child2/>
+      <child3/>
+    </root>
+
+
+Elements are lists
+------------------
+
+To make the access to these subelements as easy and straight forward as
+possible, elements behave like normal Python lists:
+
+.. sourcecode:: pycon
+
+    >>> child = root[0]
+    >>> print(child.tag)
+    child1
+
+    >>> print(len(root))
+    3
+
+    >>> root.index(root[1]) # lxml.etree only!
+    1
+
+    >>> children = list(root)
+
+    >>> for child in root:
+    ...     print(child.tag)
+    child1
+    child2
+    child3
+
+    >>> root.insert(0, etree.Element("child0"))
+    >>> start = root[:1]
+    >>> end   = root[-1:]
+
+    >>> print(start[0].tag)
+    child0
+    >>> print(end[0].tag)
+    child3
+
+    >>> root[0] = root[-1] # this moves the element in lxml.etree!
+    >>> for child in root:
+    ...     print(child.tag)
+    child3
+    child1
+    child2
+
+Prior to ElementTree 1.3 and lxml 2.0, you could also check the truth value of
+an Element to see if it has children, i.e. if the list of children is empty.
+This is no longer supported as people tend to find it surprising that a
+non-None reference to an existing Element can evaluate to False.  Instead, use
+``len(element)``, which is both more explicit and less error prone.
+
+Note in the examples that the last element was *moved* to a different position
+in the last example.  This is a difference from the original ElementTree (and
+from lists), where elements can sit in multiple positions of any number of
+trees.  In lxml.etree, elements can only sit in one position of one tree at a
+time.
+
+If you want to *copy* an element to a different position, consider creating an
+independent *deep copy* using the ``copy`` module from Python's standard
+library:
+
+.. sourcecode:: pycon
+
+    >>> from copy import deepcopy
+
+    >>> element = etree.Element("neu")
+    >>> element.append( deepcopy(root[1]) )
+
+    >>> print(element[0].tag)
+    child1
+    >>> print([ c.tag for c in root ])
+    ['child3', 'child1', 'child2']
+
+The way up in the tree is provided through the ``getparent()`` method:
+
+.. sourcecode:: pycon
+
+    >>> root is root[0].getparent()  # lxml.etree only!
+    True
+
+The siblings (or neighbours) of an element are accessed as next and previous
+elements:
+
+.. sourcecode:: pycon
+
+    >>> root[0] is root[1].getprevious() # lxml.etree only!
+    True
+    >>> root[1] is root[0].getnext() # lxml.etree only!
+    True
+
+
+Elements carry attributes
+-------------------------
+
+XML elements support attributes.  You can create them directly in the Element
+factory:
+
+.. sourcecode:: pycon
+
+    >>> root = etree.Element("root", interesting="totally")
+    >>> etree.tostring(root)
+    b'<root interesting="totally"/>'
+
+Fast and direct access to these attributes is provided by the ``set()`` and
+``get()`` methods of elements:
+
+.. sourcecode:: pycon
+
+    >>> print(root.get("interesting"))
+    totally
+
+    >>> root.set("interesting", "somewhat")
+    >>> print(root.get("interesting"))
+    somewhat
+
+However, a very convenient way of dealing with them is through the dictionary
+interface of the ``attrib`` property:
+
+.. sourcecode:: pycon
+
+    >>> attributes = root.attrib
+
+    >>> print(attributes["interesting"])
+    somewhat
+
+    >>> print(attributes.get("hello"))
+    None
+
+    >>> attributes["hello"] = "Guten Tag"
+    >>> print(attributes.get("hello"))
+    Guten Tag
+    >>> print(root.get("hello"))
+    Guten Tag
+
+
+Elements contain text
+---------------------
+
+Elements can contain text:
+
+.. sourcecode:: pycon
+
+    >>> root = etree.Element("root")
+    >>> root.text = "TEXT"
+
+    >>> print(root.text)
+    TEXT
+
+    >>> etree.tostring(root)
+    b'<root>TEXT</root>'
+
+In many XML documents (*data-centric* documents), this is the only place where
+text can be found.  It is encapsulated by a leaf tag at the very bottom of the
+tree hierarchy.
+
+However, if XML is used for tagged text documents such as (X)HTML, text can
+also appear between different elements, right in the middle of the tree:
+
+.. sourcecode:: html
+
+    <html><body>Hello<br/>World</body></html>
+
+Here, the ``<br/>`` tag is surrounded by text.  This is often referred to as
+*document-style* or *mixed-content* XML.  Elements support this through their
+``tail`` property.  It contains the text that directly follows the element, up
+to the next element in the XML tree:
+
+.. sourcecode:: pycon
+
+    >>> html = etree.Element("html")
+    >>> body = etree.SubElement(html, "body")
+    >>> body.text = "TEXT"
+
+    >>> etree.tostring(html)
+    b'<html><body>TEXT</body></html>'
+
+    >>> br = etree.SubElement(body, "br")
+    >>> etree.tostring(html)
+    b'<html><body>TEXT<br/></body></html>'
+
+    >>> br.tail = "TAIL"
+    >>> etree.tostring(html)
+    b'<html><body>TEXT<br/>TAIL</body></html>'
+
+The two properties ``.text`` and ``.tail`` are enough to represent any
+text content in an XML document.  This way, the ElementTree API does
+not require any `special text nodes`_ in addition to the Element
+class, that tend to get in the way fairly often (as you might know
+from classic DOM_ APIs).
+
+However, there are cases where the tail text also gets in the way.
+For example, when you serialise an Element from within the tree, you
+do not always want its tail text in the result (although you would
+still want the tail text of its children).  For this purpose, the
+``tostring()`` function accepts the keyword argument ``with_tail``:
+
+.. sourcecode:: pycon
+
+    >>> etree.tostring(br)
+    b'<br/>TAIL'
+    >>> etree.tostring(br, with_tail=False) # lxml.etree only!
+    b'<br/>'
+
+.. _`special text nodes`: http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1312295772
+.. _DOM: http://www.w3.org/TR/DOM-Level-3-Core/core.html
+
+If you want to read *only* the text, i.e. without any intermediate
+tags, you have to recursively concatenate all ``text`` and ``tail``
+attributes in the correct order.  Again, the ``tostring()`` function
+comes to the rescue, this time using the ``method`` keyword:
+
+.. sourcecode:: pycon
+
+    >>> etree.tostring(html, method="text")
+    b'TEXTTAIL'
+
+
+Using XPath to find text
+------------------------
+
+.. _XPath: xpathxslt.html#xpath
+
+Another way to extract the text content of a tree is XPath_, which
+also allows you to extract the separate text chunks into a list:
+
+.. sourcecode:: pycon
+
+    >>> print(html.xpath("string()")) # lxml.etree only!
+    TEXTTAIL
+    >>> print(html.xpath("//text()")) # lxml.etree only!
+    ['TEXT', 'TAIL']
+
+If you want to use this more often, you can wrap it in a function:
+
+.. sourcecode:: pycon
+
+    >>> build_text_list = etree.XPath("//text()") # lxml.etree only!
+    >>> print(build_text_list(html))
+    ['TEXT', 'TAIL']
+
+Note that a string result returned by XPath is a special 'smart'
+object that knows about its origins.  You can ask it where it came
+from through its ``getparent()`` method, just as you would with
+Elements:
+
+.. sourcecode:: pycon
+
+    >>> texts = build_text_list(html)
+    >>> print(texts[0])
+    TEXT
+    >>> parent = texts[0].getparent()
+    >>> print(parent.tag)
+    body
+
+    >>> print(texts[1])
+    TAIL
+    >>> print(texts[1].getparent().tag)
+    br
+
+You can also find out if it's normal text content or tail text:
+
+.. sourcecode:: pycon
+
+    >>> print(texts[0].is_text)
+    True
+    >>> print(texts[1].is_text)
+    False
+    >>> print(texts[1].is_tail)
+    True
+
+While this works for the results of the ``text()`` function, lxml will
+not tell you the origin of a string value that was constructed by the
+XPath functions ``string()`` or ``concat()``:
+
+.. sourcecode:: pycon
+
+    >>> stringify = etree.XPath("string()")
+    >>> print(stringify(html))
+    TEXTTAIL
+    >>> print(stringify(html).getparent())
+    None
+
+
+Tree iteration
+--------------
+
+For problems like the above, where you want to recursively traverse the tree
+and do something with its elements, tree iteration is a very convenient
+solution.  Elements provide a tree iterator for this purpose.  It yields
+elements in *document order*, i.e. in the order their tags would appear if you
+serialised the tree to XML:
+
+.. sourcecode:: pycon
+
+    >>> root = etree.Element("root")
+    >>> etree.SubElement(root, "child").text = "Child 1"
+    >>> etree.SubElement(root, "child").text = "Child 2"
+    >>> etree.SubElement(root, "another").text = "Child 3"
+
+    >>> print(etree.tostring(root, pretty_print=True))
+    <root>
+      <child>Child 1</child>
+      <child>Child 2</child>
+      <another>Child 3</another>
+    </root>
+
+    >>> for element in root.iter():
+    ...     print("%s - %s" % (element.tag, element.text))
+    root - None
+    child - Child 1
+    child - Child 2
+    another - Child 3
+
+If you know you are only interested in a single tag, you can pass its name to
+``iter()`` to have it filter for you:
+
+.. sourcecode:: pycon
+
+    >>> for element in root.iter("child"):
+    ...     print("%s - %s" % (element.tag, element.text))
+    child - Child 1
+    child - Child 2
+
+By default, iteration yields all nodes in the tree, including
+ProcessingInstructions, Comments and Entity instances.  If you want to
+make sure only Element objects are returned, you can pass the
+``Element`` factory as tag parameter:
+
+.. sourcecode:: pycon
+
+    >>> root.append(etree.Entity("#234"))
+    >>> root.append(etree.Comment("some comment"))
+
+    >>> for element in root.iter():
+    ...     if isinstance(element.tag, basestring):
+    ...         print("%s - %s" % (element.tag, element.text))
+    ...     else:
+    ...         print("SPECIAL: %s - %s" % (element, element.text))
+    root - None
+    child - Child 1
+    child - Child 2
+    another - Child 3
+    SPECIAL: &#234; - &#234;
+    SPECIAL: <!--some comment--> - some comment
+
+    >>> for element in root.iter(tag=etree.Element):
+    ...     print("%s - %s" % (element.tag, element.text))
+    root - None
+    child - Child 1
+    child - Child 2
+    another - Child 3
+
+    >>> for element in root.iter(tag=etree.Entity):
+    ...     print(element.text)
+    &#234;
+
+In lxml.etree, elements provide `further iterators`_ for all directions in the
+tree: children, parents (or rather ancestors) and siblings.
+
+.. _`further iterators`: api.html#iteration
+
+
+Serialisation
+-------------
+
+Serialisation commonly uses the ``tostring()`` function that returns a
+string, or the ``ElementTree.write()`` method that writes to a file, a
+file-like object, or a URL (via FTP PUT or HTTP POST).  Both calls accept
+the same keyword arguments like ``pretty_print`` for formatted output
+or ``encoding`` to select a specific output encoding other than plain
+ASCII:
+
+.. sourcecode:: pycon
+
+   >>> root = etree.XML('<root><a><b/></a></root>')
+
+   >>> etree.tostring(root)
+   b'<root><a><b/></a></root>'
+
+   >>> print(etree.tostring(root, xml_declaration=True))
+   <?xml version='1.0' encoding='ASCII'?>
+   <root><a><b/></a></root>
+
+   >>> print(etree.tostring(root, encoding='iso-8859-1'))
+   <?xml version='1.0' encoding='iso-8859-1'?>
+   <root><a><b/></a></root>
+
+   >>> print(etree.tostring(root, pretty_print=True))
+   <root>
+     <a>
+       <b/>
+     </a>
+   </root>
+
+Note that pretty printing appends a newline at the end.
+
+Since lxml 2.0 (and ElementTree 1.3), the serialisation functions can
+do more than XML serialisation.  You can serialise to HTML or extract
+the text content by passing the ``method`` keyword:
+
+.. sourcecode:: pycon
+
+   >>> root = etree.XML(
+   ...    '<html><head/><body><p>Hello<br/>World</p></body></html>')
+
+   >>> etree.tostring(root) # default: method = 'xml'
+   b'<html><head/><body><p>Hello<br/>World</p></body></html>'
+
+   >>> etree.tostring(root, method='xml') # same as above
+   b'<html><head/><body><p>Hello<br/>World</p></body></html>'
+
+   >>> etree.tostring(root, method='html')
+   b'<html><head></head><body><p>Hello<br>World</p></body></html>'
+
+   >>> print(etree.tostring(root, method='html', pretty_print=True))
+   <html>
+   <head></head>
+   <body><p>Hello<br>World</p></body>
+   </html>
+
+   >>> etree.tostring(root, method='text')
+   b'HelloWorld'
+
+As for XML serialisation, the default encoding for plain text
+serialisation is ASCII:
+
+.. sourcecode:: pycon
+
+   >>> br = root.find('.//br')
+   >>> br.tail = u'W\xf6rld'
+
+   >>> etree.tostring(root, method='text')  # doctest: +ELLIPSIS
+   Traceback (most recent call last):
+     ...
+   UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' ...
+
+   >>> etree.tostring(root, method='text', encoding="UTF-8")
+   b'HelloW\xc3\xb6rld'
+
+Here, serialising to a Python unicode string instead of a byte string
+might become handy.  Just pass the ``unicode`` type as encoding:
+
+.. sourcecode:: pycon
+
+   >>> etree.tostring(root, encoding=unicode, method='text')
+   u'HelloW\xf6rld'
+
+The W3C has a good `article about the Unicode character set and
+character encodings`_.
+
+.. _`article about the Unicode character set and character encodings`: http://www.w3.org/International/tutorials/tutorial-char-enc/
+
+
+The ElementTree class
+=====================
+
+An ``ElementTree`` is mainly a document wrapper around a tree with a
+root node.  It provides a couple of methods for parsing, serialisation
+and general document handling.  One of the bigger differences is that
+it serialises as a complete document, as opposed to a single
+``Element``.  This includes top-level processing instructions and
+comments, as well as a DOCTYPE and other DTD content in the document:
+
+.. sourcecode:: pycon
+
+    >>> tree = etree.parse(StringIO('''\
+    ... <?xml version="1.0"?>
+    ... <!DOCTYPE root SYSTEM "test" [ <!ENTITY tasty "eggs"> ]>
+    ... <root>
+    ...   <a>&tasty;</a>
+    ... </root>
+    ... '''))
+
+    >>> print(tree.docinfo.doctype)
+    <!DOCTYPE root SYSTEM "test">
+
+    >>> # lxml 1.3.4 and later
+    >>> print(etree.tostring(tree))
+    <!DOCTYPE root SYSTEM "test" [
+    <!ENTITY tasty "eggs">
+    ]>
+    <root>
+      <a>eggs</a>
+    </root>
+
+    >>> # lxml 1.3.4 and later
+    >>> print(etree.tostring(etree.ElementTree(tree.getroot())))
+    <!DOCTYPE root SYSTEM "test" [
+    <!ENTITY tasty "eggs">
+    ]>
+    <root>
+      <a>eggs</a>
+    </root>
+
+    >>> # ElementTree and lxml <= 1.3.3
+    >>> print(etree.tostring(tree.getroot()))
+    <root>
+      <a>eggs</a>
+    </root>
+
+Note that this has changed in lxml 1.3.4 to match the behaviour of
+lxml 2.0.  Before, the examples were serialised without DTD content,
+which made lxml loose DTD information in an input-output cycle.
+
+
+Parsing from strings and files
+==============================
+
+``lxml.etree`` supports parsing XML in a number of ways and from all
+important sources, namely strings, files, URLs (http/ftp) and
+file-like objects.  The main parse functions are ``fromstring()`` and
+``parse()``, both called with the source as first argument.  By
+default, they use the standard parser, but you can always pass a
+different parser as second argument.
+
+
+The fromstring() function
+-------------------------
+
+The ``fromstring()`` function is the easiest way to parse a string:
+
+.. sourcecode:: pycon
+
+    >>> some_xml_data = "<root>data</root>"
+
+    >>> root = etree.fromstring(some_xml_data)
+    >>> print(root.tag)
+    root
+    >>> etree.tostring(root)
+    b'<root>data</root>'
+
+
+The XML() function
+------------------
+
+The ``XML()`` function behaves like the ``fromstring()`` function, but is
+commonly used to write XML literals right into the source:
+
+.. sourcecode:: pycon
+
+    >>> root = etree.XML("<root>data</root>")
+    >>> print(root.tag)
+    root
+    >>> etree.tostring(root)
+    b'<root>data</root>'
+
+
+The parse() function
+--------------------
+
+The ``parse()`` function is used to parse from files and file-like objects:
+
+.. sourcecode:: pycon
+
+    >>> some_file_like = StringIO("<root>data</root>")
+
+    >>> tree = etree.parse(some_file_like)
+
+    >>> etree.tostring(tree)
+    b'<root>data</root>'
+
+Note that ``parse()`` returns an ElementTree object, not an Element object as
+the string parser functions:
+
+.. sourcecode:: pycon
+
+    >>> root = tree.getroot()
+    >>> print(root.tag)
+    root
+    >>> etree.tostring(root)
+    b'<root>data</root>'
+
+The reasoning behind this difference is that ``parse()`` returns a
+complete document from a file, while the string parsing functions are
+commonly used to parse XML fragments.
+
+The ``parse()`` function supports any of the following sources:
+
+* an open file object
+
+* a file-like object that has a ``.read(byte_count)`` method returning
+  a byte string on each call
+
+* a filename string
+
+* an HTTP or FTP URL string
+
+Note that passing a filename or URL is usually faster than passing an
+open file.
+
+
+Parser objects
+--------------
+
+By default, ``lxml.etree`` uses a standard parser with a default setup.  If
+you want to configure the parser, you can create a you instance:
+
+.. sourcecode:: pycon
+
+    >>> parser = etree.XMLParser(remove_blank_text=True) # lxml.etree only!
+
+This creates a parser that removes empty text between tags while parsing,
+which can reduce the size of the tree and avoid dangling tail text if you know
+that whitespace-only content is not meaningful for your data.  An example:
+
+.. sourcecode:: pycon
+
+    >>> root = etree.XML("<root>  <a/>   <b>  </b>     </root>", parser)
+
+    >>> etree.tostring(root)
+    b'<root><a/><b>  </b></root>'
+
+Note that the whitespace content inside the ``<b>`` tag was not removed, as
+content at leaf elements tends to be data content (even if blank).  You can
+easily remove it in an additional step by traversing the tree:
+
+.. sourcecode:: pycon
+
+    >>> for element in root.iter("*"):
+    ...     if element.text is not None and not element.text.strip():
+    ...         element.text = None
+
+    >>> etree.tostring(root)
+    b'<root><a/><b/></root>'
+
+See ``help(etree.XMLParser)`` to find out about the available parser options.
+
+
+Incremental parsing
+-------------------
+
+``lxml.etree`` provides two ways for incremental step-by-step parsing.  One is
+through file-like objects, where it calls the ``read()`` method repeatedly.
+This is best used where the data arrives from a source like ``urllib`` or any
+other file-like object that can provide data on request.  Note that the parser
+will block and wait until data becomes available in this case:
+
+.. sourcecode:: pycon
+
+    >>> class DataSource:
+    ...     data = [ b"<roo", b"t><", b"a/", b"><", b"/root>" ]
+    ...     def read(self, requested_size):
+    ...         try:
+    ...             return self.data.pop(0)
+    ...         except IndexError:
+    ...             return b''
+
+    >>> tree = etree.parse(DataSource())
+
+    >>> etree.tostring(tree)
+    b'<root><a/></root>'
+
+The second way is through a feed parser interface, given by the ``feed(data)``
+and ``close()`` methods:
+
+.. sourcecode:: pycon
+
+    >>> parser = etree.XMLParser()
+
+    >>> parser.feed("<roo")
+    >>> parser.feed("t><")
+    >>> parser.feed("a/")
+    >>> parser.feed("><")
+    >>> parser.feed("/root>")
+
+    >>> root = parser.close()
+
+    >>> etree.tostring(root)
+    b'<root><a/></root>'
+
+Here, you can interrupt the parsing process at any time and continue it later
+on with another call to the ``feed()`` method.  This comes in handy if you
+want to avoid blocking calls to the parser, e.g. in frameworks like Twisted,
+or whenever data comes in slowly or in chunks and you want to do other things
+while waiting for the next chunk.
+
+After calling the ``close()`` method (or when an exception was raised
+by the parser), you can reuse the parser by calling its ``feed()``
+method again:
+
+.. sourcecode:: pycon
+
+    >>> parser.feed("<root/>")
+    >>> root = parser.close()
+    >>> etree.tostring(root)
+    b'<root/>'
+
+
+Event-driven parsing
+--------------------
+
+Sometimes, all you need from a document is a small fraction somewhere deep
+inside the tree, so parsing the whole tree into memory, traversing it and
+dropping it can be too much overhead.  ``lxml.etree`` supports this use case
+with two event-driven parser interfaces, one that generates parser events
+while building the tree (``iterparse``), and one that does not build the tree
+at all, and instead calls feedback methods on a target object in a SAX-like
+fashion.
+
+Here is a simple ``iterparse()`` example:
+
+.. sourcecode:: pycon
+
+    >>> some_file_like = StringIO("<root><a>data</a></root>")
+
+    >>> for event, element in etree.iterparse(some_file_like):
+    ...     print("%s, %4s, %s" % (event, element.tag, element.text))
+    end,    a, data
+    end, root, None
+
+By default, ``iterparse()`` only generates events when it is done parsing an
+element, but you can control this through the ``events`` keyword argument:
+
+.. sourcecode:: pycon
+
+    >>> some_file_like = StringIO("<root><a>data</a></root>")
+
+    >>> for event, element in etree.iterparse(some_file_like,
+    ...                                       events=("start", "end")):
+    ...     print("%5s, %4s, %s" % (event, element.tag, element.text))
+    start, root, None
+    start,    a, data
+      end,    a, data
+      end, root, None
+
+Note that the text, tail and children of an Element are not necessarily there
+yet when receiving the ``start`` event.  Only the ``end`` event guarantees
+that the Element has been parsed completely.
+
+It also allows to ``.clear()`` or modify the content of an Element to
+save memory. So if you parse a large tree and you want to keep memory
+usage small, you should clean up parts of the tree that you no longer
+need:
+
+.. sourcecode:: pycon
+
+    >>> some_file_like = StringIO(
+    ...     "<root><a><b>data</b></a><a><b/></a></root>")
+
+    >>> for event, element in etree.iterparse(some_file_like):
+    ...     if element.tag == 'b':
+    ...         print(element.text)
+    ...     elif element.tag == 'a':
+    ...         print("** cleaning up the subtree")
+    ...         element.clear()
+    data
+    ** cleaning up the subtree
+    None
+    ** cleaning up the subtree
+
+A very important use cases for ``iterparse()`` is parsing large
+generated XML files, e.g. database dumps.  Most often, these XML
+formats only have one main data item element that hangs directly below
+the root node and that is repeated thousands of times.  In this case,
+it is best practice to let ``lxml.etree`` do the tree building and to
+only intercept exactly on this one Element, using the normal tree API
+for data extraction.
+
+.. sourcecode:: pycon
+
+    >>> xml_file = StringIO('''\
+    ... <root>
+    ...   <a><b>ABC</b><c>abc</c></a>
+    ...   <a><b>MORE DATA</b><c>more data</c></a>
+    ...   <a><b>XYZ</b><c>xyz</c></a>
+    ... </root>''')
+
+    >>> for _, element in etree.iterparse(xml_file, tag='a'):
+    ...     print('%s -- %s' % (element.findtext('b'), element[1].text))
+    ...     element.clear()
+    ABC -- abc
+    MORE DATA -- more data
+    XYZ -- xyz
+
+If, for some reason, building the tree is not desired at all, the
+target parser interface of ``lxml.etree`` can be used.  It creates
+SAX-like events by calling the methods of a target object.  By
+implementing some or all of these methods, you can control which
+events are generated:
+
+.. sourcecode:: pycon
+
+    >>> class ParserTarget:
+    ...     events = []
+    ...     close_count = 0
+    ...     def start(self, tag, attrib):
+    ...         self.events.append(("start", tag, attrib))
+    ...     def close(self):
+    ...         events, self.events = self.events, []
+    ...         self.close_count += 1
+    ...         return events
+
+    >>> parser_target = ParserTarget()
+
+    >>> parser = etree.XMLParser(target=parser_target)
+    >>> events = etree.fromstring('<root test="true"/>', parser)
+
+    >>> print(parser_target.close_count)
+    1
+
+    >>> for event in events:
+    ...     print('event: %s - tag: %s' % (event[0], event[1]))
+    ...     for attr, value in event[2].items():
+    ...         print(' * %s = %s' % (attr, value))
+    event: start - tag: root
+     * test = true
+
+You can reuse the parser and its target as often as you like, so you
+should take care that the ``.close()`` methods really resets the
+target to a usable state (also in the case of an error!).
+
+.. sourcecode:: pycon
+
+    >>> events = etree.fromstring('<root test="true"/>', parser)
+    >>> print(parser_target.close_count)
+    2
+    >>> events = etree.fromstring('<root test="true"/>', parser)
+    >>> print(parser_target.close_count)
+    3
+    >>> events = etree.fromstring('<root test="true"/>', parser)
+    >>> print(parser_target.close_count)
+    4
+
+    >>> for event in events:
+    ...     print('event: %s - tag: %s' % (event[0], event[1]))
+    ...     for attr, value in event[2].items():
+    ...         print(' * %s = %s' % (attr, value))
+    event: start - tag: root
+     * test = true
+
+
+Namespaces
+==========
+
+The ElementTree API avoids `namespace prefixes`_ wherever possible and deploys
+the real namespaces instead:
+
+.. sourcecode:: pycon
+
+    >>> xhtml = etree.Element("{http://www.w3.org/1999/xhtml}html")
+    >>> body = etree.SubElement(xhtml, "{http://www.w3.org/1999/xhtml}body")
+    >>> body.text = "Hello World"
+
+    >>> print(etree.tostring(xhtml, pretty_print=True))
+    <html:html xmlns:html="http://www.w3.org/1999/xhtml">
+      <html:body>Hello World</html:body>
+    </html:html>
+
+.. _`namespace prefixes`: http://www.w3.org/TR/xml-names/#ns-qualnames
+
+The notation that ElementTree uses was originally brought up by `James
+Clark`_.  It has the major advantage of providing a universally
+qualified name for a tag, regardless of any prefixes that may or may
+not have been used or defined in a document.  By moving the
+indirection of prefixes out of the way, it makes namespace aware code
+much clearer and safer.
+
+.. _`James Clark`: http://www.jclark.com/xml/xmlns.htm
+
+As you can see from the example, prefixes only become important when
+you serialise the result.  However, the above code looks somewhat
+verbose due to the lengthy namespace names.  And retyping or copying a
+string over and over again is error prone.  It is therefore common
+practice to store a namespace URI in a global variable.  To adapt the
+namespace prefixes for serialisation, you can also pass a mapping to
+the Element factory function, e.g. to define the default namespace:
+
+.. sourcecode:: pycon
+
+    >>> XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml"
+    >>> XHTML = "{%s}" % XHTML_NAMESPACE
+
+    >>> NSMAP = {None : XHTML_NAMESPACE} # the default namespace (no prefix)
+
+    >>> xhtml = etree.Element(XHTML + "html", nsmap=NSMAP) # lxml only!
+    >>> body = etree.SubElement(xhtml, XHTML + "body")
+    >>> body.text = "Hello World"
+
+    >>> print(etree.tostring(xhtml, pretty_print=True))
+    <html xmlns="http://www.w3.org/1999/xhtml">
+      <body>Hello World</body>
+    </html>
+
+lxml.etree allows you to look up the current namespaces defined for a
+node through the ``.nsmap`` property:
+
+.. sourcecode:: pycon
+
+    >>> xhtml.nsmap
+    {None: 'http://www.w3.org/1999/xhtml'}
+
+Note, however, that this includes all prefixes known in the context of
+an Element, not only those that it defines itself.
+
+.. sourcecode:: pycon
+
+    >>> root = etree.Element('root', nsmap={'a': 'http://a.b/c'})
+    >>> child = etree.SubElement(root, 'child',
+    ...                          nsmap={'b': 'http://b.c/d'})
+    >>> len(root.nsmap)
+    1
+    >>> len(child.nsmap)
+    2
+    >>> child.nsmap['a']
+    'http://a.b/c'
+    >>> child.nsmap['b']
+    'http://b.c/d'
+
+Therefore, modifying the returned dict cannot have any meaningful
+impact on the Element.  Any changes to it are ignored.
+
+Namespaces on attributes work alike, but since version 2.3, lxml.etree
+will make sure that the attribute uses a prefixed namespace
+declaration.  This is because unprefixed attribute names are not
+considered being in a namespace by the XML namespace specification
+(`section 6.2`_), so they may end up loosing their namespace on a
+serialise-parse roundtrip, even if they appear in a namespaced
+element.
+
+.. sourcecode:: pycon
+
+    >>> body.set(XHTML + "bgcolor", "#CCFFAA")
+
+    >>> print(etree.tostring(xhtml, pretty_print=True))
+    <html xmlns="http://www.w3.org/1999/xhtml">
+      <body xmlns:html="http://www.w3.org/1999/xhtml" html:bgcolor="#CCFFAA">Hello World</body>
+    </html>
+
+    >>> print(body.get("bgcolor"))
+    None
+    >>> body.get(XHTML + "bgcolor")
+    '#CCFFAA'
+
+.. _`section 6.2`: http://www.w3.org/TR/2009/REC-xml-names-20091208/#defaulting
+
+You can also use XPath with fully qualified names:
+
+.. sourcecode:: pycon
+
+    >>> find_xhtml_body = etree.ETXPath(      # lxml only !
+    ...     "//{%s}body" % XHTML_NAMESPACE)
+    >>> results = find_xhtml_body(xhtml)
+
+    >>> print(results[0].tag)
+    {http://www.w3.org/1999/xhtml}body
+
+
+The E-factory
+=============
+
+The ``E-factory`` provides a simple and compact syntax for generating XML and
+HTML:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.builder import E
+
+    >>> def CLASS(*args): # class is a reserved word in Python
+    ...     return {"class":' '.join(args)}
+
+    >>> html = page = (
+    ...   E.html(       # create an Element called "html"
+    ...     E.head(
+    ...       E.title("This is a sample document")
+    ...     ),
+    ...     E.body(
+    ...       E.h1("Hello!", CLASS("title")),
+    ...       E.p("This is a paragraph with ", E.b("bold"), " text in it!"),
+    ...       E.p("This is another paragraph, with a", "\n      ",
+    ...         E.a("link", href="http://www.python.org"), "."),
+    ...       E.p("Here are some reservered characters: <spam&egg>."),
+    ...       etree.XML("<p>And finally an embedded XHTML fragment.</p>"),
+    ...     )
+    ...   )
+    ... )
+
+    >>> print(etree.tostring(page, pretty_print=True))
+    <html>
+      <head>
+        <title>This is a sample document</title>
+      </head>
+      <body>
+        <h1 class="title">Hello!</h1>
+        <p>This is a paragraph with <b>bold</b> text in it!</p>
+        <p>This is another paragraph, with a
+          <a href="http://www.python.org">link</a>.</p>
+        <p>Here are some reservered characters: &lt;spam&amp;egg&gt;.</p>
+        <p>And finally an embedded XHTML fragment.</p>
+      </body>
+    </html>
+
+The Element creation based on attribute access makes it easy to build up a
+simple vocabulary for an XML language:
+
+.. sourcecode:: pycon
+
+    >>> from lxml.builder import ElementMaker # lxml only !
+
+    >>> E = ElementMaker(namespace="http://my.de/fault/namespace",
+    ...                  nsmap={'p' : "http://my.de/fault/namespace"})
+
+    >>> DOC = E.doc
+    >>> TITLE = E.title
+    >>> SECTION = E.section
+    >>> PAR = E.par
+
+    >>> my_doc = DOC(
+    ...   TITLE("The dog and the hog"),
+    ...   SECTION(
+    ...     TITLE("The dog"),
+    ...     PAR("Once upon a time, ..."),
+    ...     PAR("And then ...")
+    ...   ),
+    ...   SECTION(
+    ...     TITLE("The hog"),
+    ...     PAR("Sooner or later ...")
+    ...   )
+    ... )
+
+    >>> print(etree.tostring(my_doc, pretty_print=True))
+    <p:doc xmlns:p="http://my.de/fault/namespace">
+      <p:title>The dog and the hog</p:title>
+      <p:section>
+        <p:title>The dog</p:title>
+        <p:par>Once upon a time, ...</p:par>
+        <p:par>And then ...</p:par>
+      </p:section>
+      <p:section>
+        <p:title>The hog</p:title>
+        <p:par>Sooner or later ...</p:par>
+      </p:section>
+    </p:doc>
+
+One such example is the module ``lxml.html.builder``, which provides a
+vocabulary for HTML.
+
+
+ElementPath
+===========
+
+The ElementTree library comes with a simple XPath-like path language
+called ElementPath_.  The main difference is that you can use the
+``{namespace}tag`` notation in ElementPath expressions.  However,
+advanced features like value comparison and functions are not
+available.
+
+.. _ElementPath: http://effbot.org/zone/element-xpath.htm
+.. _`full XPath implementation`: xpathxslt.html#xpath
+
+In addition to a `full XPath implementation`_, lxml.etree supports the
+ElementPath language in the same way ElementTree does, even using
+(almost) the same implementation.  The API provides four methods here
+that you can find on Elements and ElementTrees:
+
+* ``iterfind()`` iterates over all Elements that match the path
+  expression
+
+* ``findall()`` returns a list of matching Elements
+
+* ``find()`` efficiently returns only the first match
+
+* ``findtext()`` returns the ``.text`` content of the first match
+
+Here are some examples:
+
+.. sourcecode:: pycon
+
+    >>> root = etree.XML("<root><a x='123'>aText<b/><c/><b/></a></root>")
+
+Find a child of an Element:
+
+.. sourcecode:: pycon
+
+    >>> print(root.find("b"))
+    None
+    >>> print(root.find("a").tag)
+    a
+
+Find an Element anywhere in the tree:
+
+.. sourcecode:: pycon
+
+    >>> print(root.find(".//b").tag)
+    b
+    >>> [ b.tag for b in root.iterfind(".//b") ]
+    ['b', 'b']
+
+Find Elements with a certain attribute:
+
+.. sourcecode:: pycon
+
+    >>> print(root.findall(".//a[@x]")[0].tag)
+    a
+    >>> print(root.findall(".//a[@y]"))
+    []
diff --git a/doc/sphinx/_sources/valgrind.txt b/doc/sphinx/_sources/valgrind.txt
new file mode 100644 (file)
index 0000000..54a5e49
--- /dev/null
@@ -0,0 +1,3 @@
+The command used to run the tests with valgrind:
+
+valgrind --tool=memcheck --leak-check=full --suppressions=valgrind-python.supp python2.3 test.py
diff --git a/doc/sphinx/_sources/validation.txt b/doc/sphinx/_sources/validation.txt
new file mode 100644 (file)
index 0000000..3eb7188
--- /dev/null
@@ -0,0 +1,581 @@
+====================
+Validation with lxml
+====================
+
+Apart from the built-in DTD support in parsers, lxml currently supports three
+schema languages: DTD_, `Relax NG`_ and `XML Schema`_.  All three provide
+identical APIs in lxml, represented by validator classes with the obvious
+names.
+
+.. _DTD:          http://en.wikipedia.org/wiki/Document_Type_Definition
+.. _`Relax NG`:   http://www.relaxng.org/
+.. _`XML Schema`: http://www.w3.org/XML/Schema
+
+lxml also provides support for ISO-`Schematron`_, based on the pure-XSLT 
+`skeleton implementation`_ of Schematron:
+
+.. _Schematron: http://www.schematron.com
+.. _`skeleton implementation`: http://www.schematron.com/implementation.html
+
+There is also basic support for `pre-ISO-Schematron` through the libxml2 
+Schematron features. However, this does not currently support error reporting
+in the validation phase due to insufficiencies in the implementation as of
+libxml2 2.6.30.
+
+.. _`pre-ISO-Schematron`:   http://www.ascc.net/xml/schematron
+
+.. contents::
+.. 
+   1  Validation at parse time
+   2  DTD
+   3  RelaxNG
+   4  XMLSchema
+   5  Schematron
+   6  (Pre-ISO-Schematron)
+
+The usual setup procedure:
+
+.. sourcecode:: pycon
+
+  >>> from lxml import etree
+
+..
+  >>> try: from StringIO import StringIO
+  ... except ImportError:
+  ...    from io import BytesIO
+  ...    def StringIO(s):
+  ...        if isinstance(s, str): s = s.encode("UTF-8")
+  ...        return BytesIO(s)
+
+
+Validation at parse time
+------------------------
+
+The parser in lxml can do on-the-fly validation of a document against
+a DTD or an XML schema.  The DTD is retrieved automatically based on
+the DOCTYPE of the parsed document.  All you have to do is use a
+parser that has DTD validation enabled:
+
+.. sourcecode:: pycon
+
+  >>> parser = etree.XMLParser(dtd_validation=True)
+
+Obviously, a request for validation enables the DTD loading feature.
+There are two other options that enable loading the DTD, but that do
+not perform any validation.  The first is the ``load_dtd`` keyword
+option, which simply loads the DTD into the parser and makes it
+available to the document as external subset.  You can retrieve the
+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
+``attribute_defaults`` option, which loads the DTD and weaves
+attribute default values into the document.  Again, no validation is
+performed unless explicitly requested.
+
+XML schema is supported in a similar way, but requires an explicit
+schema to be provided:
+
+.. sourcecode:: pycon
+
+  >>> schema_root = etree.XML('''\
+  ...   <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  ...     <xsd:element name="a" type="xsd:integer"/>
+  ...   </xsd:schema>
+  ... ''')
+  >>> schema = etree.XMLSchema(schema_root)
+
+  >>> parser = etree.XMLParser(schema = schema)
+  >>> root = etree.fromstring("<a>5</a>", parser)
+
+If the validation fails (be it for a DTD or an XML schema), the parser
+will raise an exception:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.fromstring("<a>no int</a>", parser)
+  Traceback (most recent call last):
+  lxml.etree.XMLSyntaxError: Element 'a': 'no int' is not a valid value of the atomic type 'xs:integer'.
+
+If you want the parser to succeed regardless of the outcome of the
+validation, you should use a non validating parser and run the
+validation separately after parsing the document.
+
+
+DTD
+---
+
+As described above, the parser support for DTDs depends on internal or
+external subsets of the XML file.  This means that the XML file itself
+must either contain a DTD or must reference a DTD to make this work.
+If you want to validate an XML document against a DTD that is not
+referenced by the document itself, you can use the ``DTD`` class.
+
+To use the ``DTD`` class, you must first pass a filename or file-like object
+into the constructor to parse a DTD:
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO("<!ELEMENT b EMPTY>")
+  >>> dtd = etree.DTD(f)
+
+Now you can use it to validate documents:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML("<b/>")
+  >>> print(dtd.validate(root))
+  True
+
+  >>> root = etree.XML("<b><a/></b>")
+  >>> print(dtd.validate(root))
+  False
+
+The reason for the validation failure can be found in the error log:
+
+.. sourcecode:: pycon
+
+  >>> print(dtd.error_log.filter_from_errors()[0])
+  <string>:1:0:ERROR:VALID:DTD_NOT_EMPTY: Element b was declared EMPTY this one has content
+
+As an alternative to parsing from a file, you can use the
+``external_id`` keyword argument to parse from a catalog.  The
+following example reads the DocBook DTD in version 4.2, if available
+in the system catalog:
+
+.. sourcecode:: python
+
+  dtd = etree.DTD(external_id = "-//OASIS//DTD DocBook XML V4.2//EN")
+
+
+RelaxNG
+-------
+
+The ``RelaxNG`` class takes an ElementTree object to construct a Relax NG
+validator:
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO('''\
+  ... <element name="a" xmlns="http://relaxng.org/ns/structure/1.0">
+  ...  <zeroOrMore>
+  ...     <element name="b">
+  ...       <text />
+  ...     </element>
+  ...  </zeroOrMore>
+  ... </element>
+  ... ''')
+  >>> relaxng_doc = etree.parse(f)
+  >>> relaxng = etree.RelaxNG(relaxng_doc)
+
+Alternatively, pass a filename to the ``file`` keyword argument to parse from
+a file.  This also enables correct handling of include files from within the
+RelaxNG parser.
+
+You can then validate some ElementTree document against the schema. You'll get
+back True if the document is valid against the Relax NG schema, and False if
+not:
+
+.. sourcecode:: pycon
+
+  >>> valid = StringIO('<a><b></b></a>')
+  >>> doc = etree.parse(valid)
+  >>> relaxng.validate(doc)
+  True
+
+  >>> invalid = StringIO('<a><c></c></a>')
+  >>> doc2 = etree.parse(invalid)
+  >>> relaxng.validate(doc2)
+  False
+
+Calling the schema object has the same effect as calling its validate
+method. This is sometimes used in conditional statements:
+
+.. sourcecode:: pycon
+
+  >>> invalid = StringIO('<a><c></c></a>')
+  >>> doc2 = etree.parse(invalid)
+  >>> if not relaxng(doc2):
+  ...     print("invalid!")
+  invalid!
+
+If you prefer getting an exception when validating, you can use the
+``assert_`` or ``assertValid`` methods:
+
+.. sourcecode:: pycon
+
+  >>> relaxng.assertValid(doc2)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.DocumentInvalid: Did not expect element c there, line 1
+
+  >>> relaxng.assert_(doc2)
+  Traceback (most recent call last):
+    ...
+  AssertionError: Did not expect element c there, line 1
+
+If you want to find out why the validation failed in the second case, you can
+look up the error log of the validation process and check it for relevant
+messages:
+
+.. sourcecode:: pycon
+
+  >>> log = relaxng.error_log
+  >>> print(log.last_error)
+  <string>:1:0:ERROR:RELAXNGV:RELAXNG_ERR_ELEMWRONG: Did not expect element c there
+
+You can see that the error (ERROR) happened during RelaxNG validation
+(RELAXNGV).  The message then tells you what went wrong.  You can also
+look at the error domain and its type directly:
+
+.. sourcecode:: pycon
+
+  >>> error = log.last_error
+  >>> print(error.domain_name)
+  RELAXNGV
+  >>> print(error.type_name)
+  RELAXNG_ERR_ELEMWRONG
+
+Note that this error log is local to the RelaxNG object.  It will only
+contain log entries that appeared during the validation.
+
+Similar to XSLT, there's also a less efficient but easier shortcut method to
+do one-shot RelaxNG validation:
+
+.. sourcecode:: pycon
+
+  >>> doc.relaxng(relaxng_doc)
+  True
+  >>> doc2.relaxng(relaxng_doc)
+  False
+
+libxml2 does not currently support the `RelaxNG Compact Syntax`_.
+However, the trang_ translator can convert the compact syntax to the
+XML syntax, which can then be used with lxml.
+
+.. _`RelaxNG Compact Syntax`: 
+.. _trang: http://www.thaiopensource.com/relaxng/trang.html
+
+
+XMLSchema
+---------
+
+lxml.etree also has XML Schema (XSD) support, using the class
+lxml.etree.XMLSchema.  The API is very similar to the Relax NG and DTD
+classes.  Pass an ElementTree object to construct a XMLSchema validator:
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO('''\
+  ... <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  ... <xsd:element name="a" type="AType"/>
+  ... <xsd:complexType name="AType">
+  ...   <xsd:sequence>
+  ...     <xsd:element name="b" type="xsd:string" />
+  ...   </xsd:sequence>
+  ... </xsd:complexType>
+  ... </xsd:schema>
+  ... ''')
+  >>> xmlschema_doc = etree.parse(f)
+  >>> xmlschema = etree.XMLSchema(xmlschema_doc)
+
+You can then validate some ElementTree document with this.  Like with RelaxNG,
+you'll get back true if the document is valid against the XML schema, and
+false if not:
+
+.. sourcecode:: pycon
+
+  >>> valid = StringIO('<a><b></b></a>')
+  >>> doc = etree.parse(valid)
+  >>> xmlschema.validate(doc)
+  True
+
+  >>> invalid = StringIO('<a><c></c></a>')
+  >>> doc2 = etree.parse(invalid)
+  >>> xmlschema.validate(doc2)
+  False
+
+Calling the schema object has the same effect as calling its validate method.
+This is sometimes used in conditional statements:
+
+.. sourcecode:: pycon
+
+  >>> invalid = StringIO('<a><c></c></a>')
+  >>> doc2 = etree.parse(invalid)
+  >>> if not xmlschema(doc2):
+  ...     print("invalid!")
+  invalid!
+
+If you prefer getting an exception when validating, you can use the
+``assert_`` or ``assertValid`` methods:
+
+.. sourcecode:: pycon
+
+  >>> xmlschema.assertValid(doc2)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.DocumentInvalid: Element 'c': This element is not expected. Expected is ( b )., line 1
+
+  >>> xmlschema.assert_(doc2)
+  Traceback (most recent call last):
+    ...
+  AssertionError: Element 'c': This element is not expected. Expected is ( b )., line 1
+
+Error reporting works as for the RelaxNG class:
+
+.. sourcecode:: pycon
+
+  >>> log = xmlschema.error_log
+  >>> error = log.last_error
+  >>> print(error.domain_name)
+  SCHEMASV
+  >>> print(error.type_name)
+  SCHEMAV_ELEMENT_CONTENT
+
+If you were to print this log entry, you would get something like the
+following.  Note that the error message depends on the libxml2 version in
+use::
+
+  <string>:1:ERROR::SCHEMAV_ELEMENT_CONTENT: Element 'c': This element is not expected. Expected is ( b ).
+
+Similar to XSLT and RelaxNG, there's also a less efficient but easier shortcut
+method to do XML Schema validation:
+
+.. sourcecode:: pycon
+
+  >>> doc.xmlschema(xmlschema_doc)
+  True
+  >>> doc2.xmlschema(xmlschema_doc)
+  False
+
+Schematron
+----------
+
+From version 2.3 on lxml features ISO-`Schematron`_ support built on the 
+de-facto reference implementation of Schematron, the pure-XSLT-1.0 
+`skeleton implementation`_. This is provided by the lxml.isoschematron package 
+that implements the Schematron class, with an API compatible to the other 
+validators'.  Pass an Element or ElementTree object to construct a Schematron 
+validator:
+
+.. sourcecode:: pycon
+
+  >>> from lxml import isoschematron
+  >>> f = StringIO('''\
+  ... <schema xmlns="http://purl.oclc.org/dsdl/schematron" >
+  ...   <pattern id="sum_equals_100_percent">
+  ...     <title>Sum equals 100%.</title>
+  ...     <rule context="Total">
+  ...       <assert test="sum(//Percent)=100">Sum is not 100%.</assert>
+  ...     </rule>
+  ...   </pattern>
+  ... </schema>
+  ... ''')
+
+  >>> sct_doc = etree.parse(f)
+  >>> schematron = isoschematron.Schematron(sct_doc)
+
+You can then validate some ElementTree document with this. Just like with 
+XMLSchema or RelaxNG, you'll get back true if the document is valid against the
+schema, and false if not:
+
+.. sourcecode:: pycon
+
+  >>> valid = StringIO('''\
+  ... <Total>
+  ...   <Percent>20</Percent>
+  ...   <Percent>30</Percent>
+  ...   <Percent>50</Percent>
+  ... </Total>
+  ... ''')
+
+  >>> doc = etree.parse(valid)
+  >>> schematron.validate(doc)
+  True
+
+  >>> etree.SubElement(doc.getroot(), "Percent").text = "10"
+
+  >>> schematron.validate(doc)
+  False
+
+Calling the schema object has the same effect as calling its validate method.
+This can be useful for conditional statements:
+
+.. sourcecode:: pycon
+
+  >>> is_valid = isoschematron.Schematron(sct_doc)
+
+  >>> if not is_valid(doc):
+  ...     print("invalid!")
+  invalid!
+
+Built on a pure-xslt implementation, the actual validator is created as an 
+XSLT 1.0 stylesheet using these steps:
+
+0. (Extract embedded Schematron from XML Schema or RelaxNG schema)
+1. Process inclusions
+2. Process abstract patterns
+3. Compile the schematron schema to XSLT
+
+To allow more control over the individual steps, isoschematron.Schematron
+supports an extended API:
+
+The ``include`` and ``expand`` keyword arguments can be used to switch off
+steps 1) and 2).
+
+To set parameters for steps 1), 2) and 3) dictionaries containing parameters 
+for XSLT can be provided using the keyword arguments ``include_params``,
+``expand_params`` or ``compile_params``. Schematron automatically converts these
+parameters to stylesheet parameters so you need not worry to set string 
+parameters using quotes or to use XSLT.strparam(). If you ever need to pass an
+XPath as argument to the XSLT stylesheet you can pass in an etree.XPath object
+(see XPath and XSLT with lxml: Stylesheet-parameters_ for background on this).
+
+The ``phase`` parameter of the compile step is additionally exposed as a keyword
+argument. If set, it overrides occurrence in ``compile_params``. Note that 
+isoschematron.Schematron might expose more common parameters as additional keyword
+args in the future.
+
+By setting ``store_schematron`` to True, the (included-and-expanded) schematron
+document tree is stored and made available through the ``schematron`` property.
+
+Similarly, setting ``store_xslt`` to True will result in the validation XSLT 
+document tree being kept; it can be retrieved through the ``validator_xslt``
+property.
+
+Finally, with ``store_report`` set to True (default: False), the resulting 
+validation report document gets stored and can be accessed as the 
+``validation_report`` property.
+
+.. _Stylesheet-parameters: xpathxslt.html#stylesheet-parameters
+
+Using the ``phase`` parameter of isoschematron.Schematron allows for selective 
+validation of predefined pattern groups:
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO('''\
+  ... <schema xmlns="http://purl.oclc.org/dsdl/schematron" >
+  ...   <phase id="phase.sum_check">
+  ...     <active pattern="sum_equals_100_percent"/>
+  ...   </phase>
+  ...   <phase id="phase.entries_check">
+  ...     <active pattern="all_positive"/>
+  ...   </phase>
+  ...   <pattern id="sum_equals_100_percent">
+  ...     <title>Sum equals 100%.</title>
+  ...     <rule context="Total">
+  ...       <assert test="sum(//Percent)=100">Sum is not 100%.</assert>
+  ...     </rule>
+  ...   </pattern>
+  ...   <pattern id="all_positive">
+  ...     <title>All entries must be positive.</title>
+  ...     <rule context="Percent">
+  ...       <assert test="number(.)>0">Number (<value-of select="."/>) not positive</assert>
+  ...     </rule>
+  ...   </pattern>
+  ... </schema>
+  ... ''')
+
+  >>> sct_doc = etree.parse(f)
+  >>> schematron = isoschematron.Schematron(sct_doc)
+
+  >>> valid = StringIO('''\
+  ... <Total>
+  ...   <Percent>20</Percent>
+  ...   <Percent>30</Percent>
+  ...   <Percent>50</Percent>
+  ... </Total>
+  ... ''')
+
+  >>> doc = etree.parse(valid)
+  >>> schematron.validate(doc)
+  True
+
+  >>> invalid_positive = StringIO('''\
+  ... <Total>
+  ...   <Percent>0</Percent>
+  ...   <Percent>50</Percent>
+  ...   <Percent>50</Percent>
+  ... </Total>
+  ... ''')
+
+  >>> doc = etree.parse(invalid_positive)
+
+  >>> schematron.validate(doc)
+  False
+
+If the constraint of Percent entries being positive is not of interest in a 
+certain validation scenario, it can now be disabled:
+
+.. sourcecode:: pycon
+
+  >>> selective = isoschematron.Schematron(sct_doc, phase="phase.sum_check")
+  >>> selective.validate(doc)
+  True
+
+The usage of validation phases is a unique feature of ISO-Schematron and can be
+a very powerful tool e.g. for establishing validation stages or to provide 
+different validators for different "validation audiences".
+
+(Pre-ISO-Schematron)
+--------------------
+
+Since version 2.0, lxml.etree features `pre-ISO-Schematron`_ support, using the
+class lxml.etree.Schematron.  It requires at least libxml2 2.6.21 to
+work.  The API is the same as for the other validators.  Pass an
+ElementTree object to construct a Schematron validator:
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO('''\
+  ... <schema xmlns="http://www.ascc.net/xml/schematron" >
+  ...   <pattern name="Sum equals 100%.">
+  ...     <rule context="Total">
+  ...       <assert test="sum(//Percent)=100">Sum is not 100%.</assert>
+  ...     </rule>
+  ...   </pattern>
+  ... </schema>
+  ... ''')
+
+  >>> sct_doc = etree.parse(f)
+  >>> schematron = etree.Schematron(sct_doc)
+
+You can then validate some ElementTree document with this.  Like with RelaxNG,
+you'll get back true if the document is valid against the schema, and false if
+not:
+
+.. sourcecode:: pycon
+
+  >>> valid = StringIO('''\
+  ... <Total>
+  ...   <Percent>20</Percent>
+  ...   <Percent>30</Percent>
+  ...   <Percent>50</Percent>
+  ... </Total>
+  ... ''')
+
+  >>> doc = etree.parse(valid)
+  >>> schematron.validate(doc)
+  True
+
+  >>> etree.SubElement(doc.getroot(), "Percent").text = "10"
+
+  >>> schematron.validate(doc)
+  False
+
+Calling the schema object has the same effect as calling its validate method.
+This is sometimes used in conditional statements:
+
+.. sourcecode:: pycon
+
+  >>> is_valid = etree.Schematron(sct_doc)
+
+  >>> if not is_valid(doc):
+  ...     print("invalid!")
+  invalid!
+
+Note that libxml2 restricts error reporting to the parsing step (when creating
+the Schematron instance).  There is not currently any support for error
+reporting during validation.
diff --git a/doc/sphinx/_sources/xpathxslt.txt b/doc/sphinx/_sources/xpathxslt.txt
new file mode 100644 (file)
index 0000000..2244e61
--- /dev/null
@@ -0,0 +1,751 @@
+========================
+XPath and XSLT with lxml
+========================
+
+lxml supports XPath 1.0, XSLT 1.0 and the EXSLT extensions through
+libxml2 and libxslt in a standards compliant way.
+
+.. contents::
+..
+   1  XPath
+     1.1  The ``xpath()`` method
+     1.2  Namespaces and prefixes
+     1.3  XPath return values
+     1.4  Generating XPath expressions
+     1.5  The ``XPath`` class
+     1.6  Regular expressions in XPath
+     1.7  The ``XPathEvaluator`` classes
+     1.8  ``ETXPath``
+     1.9  Error handling
+   2  XSLT
+     2.1  XSLT result objects
+     2.2  Stylesheet parameters
+     2.3  The ``xslt()`` tree method
+     2.4  Dealing with stylesheet complexity
+     2.5  Profiling
+
+The usual setup procedure:
+
+.. sourcecode:: pycon
+
+  >>> from lxml import etree
+
+..
+  >>> try: from StringIO import StringIO
+  ... except ImportError:
+  ...    from io import BytesIO
+  ...    def StringIO(s):
+  ...        if isinstance(s, str): s = s.encode("UTF-8")
+  ...        return BytesIO(s)
+
+  >>> try: unicode = __builtins__["unicode"]
+  ... except (NameError, KeyError): unicode = str
+
+
+XPath
+=====
+
+lxml.etree supports the simple path syntax of the `find, findall and
+findtext`_ methods on ElementTree and Element, as known from the original
+ElementTree library (ElementPath_).  As an lxml specific extension, these
+classes also provide an ``xpath()`` method that supports expressions in the
+complete XPath syntax, as well as `custom extension functions`_.
+
+.. _ElementPath: http://effbot.org/zone/element-xpath.htm
+.. _`find,  findall and findtext`: http://effbot.org/zone/element.htm#searching-for-subelements
+.. _`custom extension functions`: extensions.html#xpath-extension-functions
+.. _`XSLT extension elements`: extensions.html#xslt-extension-elements
+
+There are also specialized XPath evaluator classes that are more efficient for
+frequent evaluation: ``XPath`` and ``XPathEvaluator``.  See the `performance
+comparison`_ to learn when to use which.  Their semantics when used on
+Elements and ElementTrees are the same as for the ``xpath()`` method described
+here.
+
+.. _`performance comparison`: performance.html#xpath
+
+
+The ``xpath()`` method
+----------------------
+
+For ElementTree, the xpath method performs a global XPath query against the
+document (if absolute) or against the root node (if relative):
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO('<foo><bar></bar></foo>')
+  >>> tree = etree.parse(f)
+
+  >>> r = tree.xpath('/foo/bar')
+  >>> len(r)
+  1
+  >>> r[0].tag
+  'bar'
+
+  >>> r = tree.xpath('bar')
+  >>> r[0].tag
+  'bar'
+
+When ``xpath()`` is used on an Element, the XPath expression is evaluated
+against the element (if relative) or against the root tree (if absolute):
+
+.. sourcecode:: pycon
+
+  >>> root = tree.getroot()
+  >>> r = root.xpath('bar')
+  >>> r[0].tag
+  'bar'
+
+  >>> bar = root[0]
+  >>> r = bar.xpath('/foo/bar')
+  >>> r[0].tag
+  'bar'
+
+  >>> tree = bar.getroottree()
+  >>> r = tree.xpath('/foo/bar')
+  >>> r[0].tag
+  'bar'
+
+The ``xpath()`` method has support for XPath variables:
+
+.. sourcecode:: pycon
+
+  >>> expr = "//*[local-name() = $name]"
+
+  >>> print(root.xpath(expr, name = "foo")[0].tag)
+  foo
+
+  >>> print(root.xpath(expr, name = "bar")[0].tag)
+  bar
+
+  >>> print(root.xpath("$text", text = "Hello World!"))
+  Hello World!
+
+
+Namespaces and prefixes
+-----------------------
+
+If your XPath expression uses namespace prefixes, you must define them
+in a prefix mapping.  To this end, pass a dictionary to the
+``namespaces`` keyword argument that maps the namespace prefixes used
+in the XPath expression to namespace URIs:
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO('''\
+  ... <a:foo xmlns:a="http://codespeak.net/ns/test1" 
+  ...        xmlns:b="http://codespeak.net/ns/test2">
+  ...    <b:bar>Text</b:bar>
+  ... </a:foo>
+  ... ''')
+  >>> doc = etree.parse(f)
+
+  >>> r = doc.xpath('/t:foo/b:bar',
+  ...               namespaces={'t': 'http://codespeak.net/ns/test1', 
+  ...                           'b': 'http://codespeak.net/ns/test2'})
+  >>> len(r)
+  1
+  >>> r[0].tag
+  '{http://codespeak.net/ns/test2}bar'
+  >>> r[0].text
+  'Text'
+
+The prefixes you choose here are not linked to the prefixes used
+inside the XML document.  The document may define whatever prefixes it
+likes, including the empty prefix, without breaking the above code.
+
+Note that XPath does not have a notion of a default namespace.  The
+empty prefix is therefore undefined for XPath and cannot be used in
+namespace prefix mappings.
+
+There is also an optional ``extensions`` argument which is used to
+define `custom extension functions`_ in Python that are local to this
+evaluation.  The namespace prefixes that they use in the XPath
+expression must also be defined in the namespace prefix mapping.
+
+
+XPath return values
+-------------------
+
+The return value types of XPath evaluations vary, depending on the
+XPath expression used:
+
+* True or False, when the XPath expression has a boolean result
+
+* a float, when the XPath expression has a numeric result (integer or float)
+
+* a 'smart' string (as described below), when the XPath expression has
+  a string result.
+
+* a list of items, when the XPath expression has a list as result.
+  The items may include Elements (also comments and processing
+  instructions), strings and tuples.  Text nodes and attributes in the
+  result are returned as 'smart' string values.  Namespace
+  declarations are returned as tuples of strings: ``(prefix, URI)``.
+
+XPath string results are 'smart' in that they provide a
+``getparent()`` method that knows their origin:
+
+* for attribute values, ``result.getparent()`` returns the Element
+  that carries them.  An example is ``//foo/@attribute``, where the
+  parent would be a ``foo`` Element.
+
+* for the ``text()`` function (as in ``//text()``), it returns the
+  Element that contains the text or tail that was returned.
+
+You can distinguish between different text origins with the boolean
+properties ``is_text``, ``is_tail`` and ``is_attribute``.
+
+Note that ``getparent()`` may not always return an Element.  For
+example, the XPath functions ``string()`` and ``concat()`` will
+construct strings that do not have an origin.  For them,
+``getparent()`` will return None.
+
+There are certain cases where the smart string behaviour is
+undesirable.  For example, it means that the tree will be kept alive
+by the string, which may have a considerable memory impact in the case
+that the string value is the only thing in the tree that is actually
+of interest.  For these cases, you can deactivate the parental
+relationship using the keyword argument ``smart_strings``.
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML("<root><a>TEXT</a></root>")
+
+  >>> find_text = etree.XPath("//text()")
+  >>> text = find_text(root)[0]
+  >>> print(text)
+  TEXT
+  >>> print(text.getparent().text)
+  TEXT
+
+  >>> find_text = etree.XPath("//text()", smart_strings=False)
+  >>> text = find_text(root)[0]
+  >>> print(text)
+  TEXT
+  >>> hasattr(text, 'getparent')
+  False
+
+
+Generating XPath expressions
+----------------------------
+
+ElementTree objects have a method ``getpath(element)``, which returns a
+structural, absolute XPath expression to find that element:
+
+.. sourcecode:: pycon
+
+  >>> a  = etree.Element("a")
+  >>> b  = etree.SubElement(a, "b")
+  >>> c  = etree.SubElement(a, "c")
+  >>> d1 = etree.SubElement(c, "d")
+  >>> d2 = etree.SubElement(c, "d")
+
+  >>> tree = etree.ElementTree(c)
+  >>> print(tree.getpath(d2))
+  /c/d[2]
+  >>> tree.xpath(tree.getpath(d2)) == [d2]
+  True
+
+
+The ``XPath`` class
+-------------------
+
+The ``XPath`` class compiles an XPath expression into a callable function:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML("<root><a><b/></a><b/></root>")
+
+  >>> find = etree.XPath("//b")
+  >>> print(find(root)[0].tag)
+  b
+
+The compilation takes as much time as in the ``xpath()`` method, but it is
+done only once per class instantiation.  This makes it especially efficient
+for repeated evaluation of the same XPath expression.
+
+Just like the ``xpath()`` method, the ``XPath`` class supports XPath
+variables:
+
+.. sourcecode:: pycon
+
+  >>> count_elements = etree.XPath("count(//*[local-name() = $name])")
+
+  >>> print(count_elements(root, name = "a"))
+  1.0
+  >>> print(count_elements(root, name = "b"))
+  2.0
+
+This supports very efficient evaluation of modified versions of an XPath
+expression, as compilation is still only required once.
+
+Prefix-to-namespace mappings can be passed as second parameter:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML("<root xmlns='NS'><a><b/></a><b/></root>")
+
+  >>> find = etree.XPath("//n:b", namespaces={'n':'NS'})
+  >>> print(find(root)[0].tag)
+  {NS}b
+
+
+Regular expressions in XPath
+----------------------------
+
+By default, ``XPath`` supports regular expressions in the EXSLT_ namespace:
+
+.. sourcecode:: pycon
+
+  >>> regexpNS = "http://exslt.org/regular-expressions"
+  >>> find = etree.XPath("//*[re:test(., '^abc$', 'i')]",
+  ...                    namespaces={'re':regexpNS})
+
+  >>> root = etree.XML("<root><a>aB</a><b>aBc</b></root>")
+  >>> print(find(root)[0].text)
+  aBc
+
+.. _EXSLT: http://www.exslt.org/
+
+You can disable this with the boolean keyword argument ``regexp`` which
+defaults to True.
+
+
+The ``XPathEvaluator`` classes
+------------------------------
+
+lxml.etree provides two other efficient XPath evaluators that work on
+ElementTrees or Elements respectively: ``XPathDocumentEvaluator`` and
+``XPathElementEvaluator``.  They are automatically selected if you use the
+XPathEvaluator helper for instantiation:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML("<root><a><b/></a><b/></root>")
+  >>> xpatheval = etree.XPathEvaluator(root)
+
+  >>> print(isinstance(xpatheval, etree.XPathElementEvaluator))
+  True
+
+  >>> print(xpatheval("//b")[0].tag)
+  b
+
+This class provides efficient support for evaluating different XPath
+expressions on the same Element or ElementTree.
+
+
+``ETXPath``
+-----------
+
+ElementTree supports a language named ElementPath_ in its ``find*()`` methods.
+One of the main differences between XPath and ElementPath is that the XPath
+language requires an indirection through prefixes for namespace support,
+whereas ElementTree uses the Clark notation (``{ns}name``) to avoid prefixes
+completely.  The other major difference regards the capabilities of both path
+languages.  Where XPath supports various sophisticated ways of restricting the
+result set through functions and boolean expressions, ElementPath only
+supports pure path traversal without nesting or further conditions.  So, while
+the ElementPath syntax is self-contained and therefore easier to write and
+handle, XPath is much more powerful and expressive.
+
+lxml.etree bridges this gap through the class ``ETXPath``, which accepts XPath
+expressions with namespaces in Clark notation.  It is identical to the
+``XPath`` class, except for the namespace notation.  Normally, you would
+write:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML("<root xmlns='ns'><a><b/></a><b/></root>")
+
+  >>> find = etree.XPath("//p:b", namespaces={'p' : 'ns'})
+  >>> print(find(root)[0].tag)
+  {ns}b
+
+``ETXPath`` allows you to change this to:
+
+.. sourcecode:: pycon
+
+  >>> find = etree.ETXPath("//{ns}b")
+  >>> print(find(root)[0].tag)
+  {ns}b
+
+
+Error handling
+--------------
+
+lxml.etree raises exceptions when errors occur while parsing or evaluating an
+XPath expression:
+
+.. sourcecode:: pycon
+
+  >>> find = etree.XPath("\\")
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XPathSyntaxError: Invalid expression
+
+lxml will also try to give you a hint what went wrong, so if you pass a more
+complex expression, you may get a somewhat more specific error:
+
+.. sourcecode:: pycon
+
+  >>> find = etree.XPath("//*[1.1.1]")
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XPathSyntaxError: Invalid predicate
+
+During evaluation, lxml will emit an XPathEvalError on errors:
+
+.. sourcecode:: pycon
+
+  >>> find = etree.XPath("//ns:a")
+  >>> find(root)
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XPathEvalError: Undefined namespace prefix
+
+This works for the ``XPath`` class, however, the other evaluators (including
+the ``xpath()`` method) are one-shot operations that do parsing and evaluation
+in one step.  They therefore raise evaluation exceptions in all cases:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.Element("test")
+  >>> find = root.xpath("//*[1.1.1]")
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XPathEvalError: Invalid predicate
+
+  >>> find = root.xpath("//ns:a")
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XPathEvalError: Undefined namespace prefix
+
+  >>> find = root.xpath("\\")
+  Traceback (most recent call last):
+    ...
+  lxml.etree.XPathEvalError: Invalid expression
+
+Note that lxml versions before 1.3 always raised an ``XPathSyntaxError`` for
+all errors, including evaluation errors.  The best way to support older
+versions is to except on the superclass ``XPathError``.
+
+
+XSLT
+====
+
+lxml.etree introduces a new class, lxml.etree.XSLT. The class can be
+given an ElementTree or Element object to construct an XSLT
+transformer:
+
+.. sourcecode:: pycon
+
+  >>> xslt_root = etree.XML('''\
+  ... <xsl:stylesheet version="1.0"
+  ...     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  ...     <xsl:template match="/">
+  ...         <foo><xsl:value-of select="/a/b/text()" /></foo>
+  ...     </xsl:template>
+  ... </xsl:stylesheet>''')
+  >>> transform = etree.XSLT(xslt_root)
+
+You can then run the transformation on an ElementTree document by simply
+calling it, and this results in another ElementTree object:
+
+.. sourcecode:: pycon
+
+  >>> f = StringIO('<a><b>Text</b></a>')
+  >>> doc = etree.parse(f)
+  >>> result_tree = transform(doc)
+
+By default, XSLT supports all extension functions from libxslt and
+libexslt as well as Python regular expressions through the `EXSLT
+regexp functions`_.  Also see the documentation on `custom extension
+functions`_, `XSLT extension elements`_ and `document resolvers`_.
+There is a separate section on `controlling access`_ to external
+documents and resources.
+
+.. _`EXSLT regexp functions`: http://www.exslt.org/regexp/
+.. _`document resolvers`: resolvers.html
+.. _`controlling access`: resolvers.html#i-o-access-control-in-xslt
+
+
+XSLT result objects
+-------------------
+
+The result of an XSL transformation can be accessed like a normal ElementTree
+document:
+
+.. sourcecode:: pycon
+
+  >>> root = etree.XML('<a><b>Text</b></a>')
+  >>> result = transform(root)
+
+  >>> result.getroot().text
+  'Text'
+
+but, as opposed to normal ElementTree objects, can also be turned into an (XML
+or text) string by applying the str() function:
+
+.. sourcecode:: pycon
+
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>Text</foo>\n'
+
+The result is always a plain string, encoded as requested by the
+``xsl:output`` element in the stylesheet.  If you want a Python unicode string
+instead, you should set this encoding to ``UTF-8`` (unless the `ASCII` default
+is sufficient).  This allows you to call the builtin ``unicode()`` function on
+the result:
+
+.. sourcecode:: pycon
+
+  >>> unicode(result)
+  u'<?xml version="1.0"?>\n<foo>Text</foo>\n'
+
+You can use other encodings at the cost of multiple recoding.  Encodings that
+are not supported by Python will result in an error:
+
+.. sourcecode:: pycon
+
+  >>> xslt_tree = etree.XML('''\
+  ... <xsl:stylesheet version="1.0"
+  ...     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  ...     <xsl:output encoding="UCS4"/>
+  ...     <xsl:template match="/">
+  ...         <foo><xsl:value-of select="/a/b/text()" /></foo>
+  ...     </xsl:template>
+  ... </xsl:stylesheet>''')
+  >>> transform = etree.XSLT(xslt_tree)
+
+  >>> result = transform(doc)
+  >>> unicode(result)
+  Traceback (most recent call last):
+    ...
+  LookupError: unknown encoding: UCS4
+
+
+Stylesheet parameters
+---------------------
+
+It is possible to pass parameters, in the form of XPath expressions, to the
+XSLT template:
+
+.. sourcecode:: pycon
+
+  >>> xslt_tree = etree.XML('''\
+  ... <xsl:stylesheet version="1.0"
+  ...     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  ...     <xsl:param name="a" />
+  ...     <xsl:template match="/">
+  ...         <foo><xsl:value-of select="$a" /></foo>
+  ...     </xsl:template>
+  ... </xsl:stylesheet>''')
+  >>> transform = etree.XSLT(xslt_tree)
+  >>> doc_root = etree.XML('<a><b>Text</b></a>')
+
+The parameters are passed as keyword parameters to the transform call.
+First, let's try passing in a simple integer expression:
+
+.. sourcecode:: pycon
+
+  >>> result = transform(doc_root, a="5")
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>5</foo>\n'
+
+You can use any valid XPath expression as parameter value:
+
+.. sourcecode:: pycon
+
+  >>> result = transform(doc_root, a="/a/b/text()")
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>Text</foo>\n'
+
+It's also possible to pass an XPath object as a parameter:
+
+.. sourcecode:: pycon
+
+  >>> result = transform(doc_root, a=etree.XPath("/a/b/text()"))
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>Text</foo>\n'
+
+Passing a string expression looks like this:
+
+.. sourcecode:: pycon
+
+  >>> result = transform(doc_root, a="'A'")
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>A</foo>\n'
+
+To pass a string that (potentially) contains quotes, you can use the
+``.strparam()`` class method.  Note that it does not escape the
+string.  Instead, it returns an opaque object that keeps the string
+value.
+
+.. sourcecode:: pycon
+
+  >>> plain_string_value = etree.XSLT.strparam(
+  ...                          """ It's "Monty Python" """)
+  >>> result = transform(doc_root, a=plain_string_value)
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo> It\'s "Monty Python" </foo>\n'
+
+If you need to pass parameters that are not legal Python identifiers,
+pass them inside of a dictionary:
+
+.. sourcecode:: pycon
+
+  >>> transform = etree.XSLT(etree.XML('''\
+  ... <xsl:stylesheet version="1.0"
+  ...     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  ...     <xsl:param name="non-python-identifier" />
+  ...     <xsl:template match="/">
+  ...         <foo><xsl:value-of select="$non-python-identifier" /></foo>
+  ...     </xsl:template>
+  ... </xsl:stylesheet>'''))
+
+  >>> result = transform(doc_root, **{'non-python-identifier': '5'})
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>5</foo>\n'
+
+
+
+Errors and messages
+-------------------
+
+Like most of the processing oriented objects in lxml.etree, ``XSLT``
+provides an error log that lists messages and error output from the
+last run.  See the `parser documentation`_ for a description of the
+error log.
+
+.. _`parser documentation`: parsing.html#error-log
+
+.. sourcecode:: pycon
+
+  >>> xslt_root = etree.XML('''\
+  ... <xsl:stylesheet version="1.0"
+  ...     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  ...     <xsl:template match="/">
+  ...         <xsl:message terminate="no">STARTING</xsl:message>
+  ...         <foo><xsl:value-of select="/a/b/text()" /></foo>
+  ...         <xsl:message terminate="no">DONE</xsl:message>
+  ...     </xsl:template>
+  ... </xsl:stylesheet>''')
+  >>> transform = etree.XSLT(xslt_root)
+
+  >>> doc_root = etree.XML('<a><b>Text</b></a>')
+  >>> result = transform(doc_root)
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>Text</foo>\n'
+
+  >>> transform.error_log
+  <string>:0:0:ERROR:XSLT:ERR_OK: STARTING
+  <string>:0:0:ERROR:XSLT:ERR_OK: DONE
+
+  >>> for entry in transform.error_log:
+  ...     print('message from line %s, col %s: %s' % (
+  ...                entry.line, entry.column, entry.message))
+  ...     print('domain: %s (%d)' % (entry.domain_name, entry.domain))
+  ...     print('type: %s (%d)' % (entry.type_name, entry.type))
+  ...     print('level: %s (%d)' % (entry.level_name, entry.level))
+  ...     print('filename: %s' % entry.filename)
+  message from line 0, col 0: STARTING
+  domain: XSLT (22)
+  type: ERR_OK (0)
+  level: ERROR (2)
+  filename: <string>
+  message from line 0, col 0: DONE
+  domain: XSLT (22)
+  type: ERR_OK (0)
+  level: ERROR (2)
+  filename: <string>
+
+Note that there is no way in XSLT to distinguish between user
+messages, warnings and error messages that occurred during the
+run. ``libxslt`` simply does not provide this information.  You can
+partly work around this limitation by making your own messages
+uniquely identifiable, e.g. with a common text prefix.
+
+
+The ``xslt()`` tree method
+--------------------------
+
+There's also a convenience method on ElementTree objects for doing XSL
+transformations.  This is less efficient if you want to apply the same XSL
+transformation to multiple documents, but is shorter to write for one-shot
+operations, as you do not have to instantiate a stylesheet yourself:
+
+.. sourcecode:: pycon
+
+  >>> result = doc.xslt(xslt_tree, a="'A'")
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>A</foo>\n'
+
+This is a shortcut for the following code:
+
+.. sourcecode:: pycon
+
+  >>> transform = etree.XSLT(xslt_tree)
+  >>> result = transform(doc, a="'A'")
+  >>> str(result)
+  '<?xml version="1.0"?>\n<foo>A</foo>\n'
+
+
+Dealing with stylesheet complexity
+----------------------------------
+
+Some applications require a larger set of rather diverse stylesheets.
+lxml.etree allows you to deal with this in a number of ways.  Here are
+some ideas to try.
+
+The most simple way to reduce the diversity is by using XSLT
+parameters that you pass at call time to configure the stylesheets.
+The ``partial()`` function in the ``functools`` module of Python 2.5
+may come in handy here.  It allows you to bind a set of keyword
+arguments (i.e. stylesheet parameters) to a reference of a callable
+stylesheet.  The same works for instances of the ``XPath()``
+evaluator, obviously.
+
+You may also consider creating stylesheets programmatically.  Just
+create an XSL tree, e.g. from a parsed template, and then add or
+replace parts as you see fit.  Passing an XSL tree into the ``XSLT()``
+constructor multiple times will create independent stylesheets, so
+later modifications of the tree will not be reflected in the already
+created stylesheets.  This makes stylesheet generation very straight
+forward.
+
+A third thing to remember is the support for `custom extension
+functions`_ and `XSLT extension elements`_.  Some things are much
+easier to express in XSLT than in Python, while for others it is the
+complete opposite.  Finding the right mixture of Python code and XSL
+code can help a great deal in keeping applications well designed and
+maintainable.
+
+
+Profiling
+---------
+
+If you want to know how your stylesheet performed, pass the ``profile_run``
+keyword to the transform:
+
+.. sourcecode:: pycon
+
+  >>> result = transform(doc, a="/a/b/text()", profile_run=True)
+  >>> profile = result.xslt_profile
+
+The value of the ``xslt_profile`` property is an ElementTree with profiling
+data about each template, similar to the following:
+
+.. sourcecode:: xml
+
+  <profile>
+    <template rank="1" match="/" name="" mode="" calls="1" time="1" average="1"/>
+  </profile>
+
+Note that this is a read-only document.  You must not move any of its elements
+to other documents.  Please deep-copy the document if you need to modify it.
+If you want to free it from memory, just do:
+
+.. sourcecode:: pycon
+
+  >>> del result.xslt_profile
diff --git a/doc/sphinx/_static/basic.css b/doc/sphinx/_static/basic.css
new file mode 100644 (file)
index 0000000..32630d5
--- /dev/null
@@ -0,0 +1,528 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+    clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+    width: 100%;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+    list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+img {
+    border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+    width: 100%;
+}
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+div.modindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+    margin: 1em 0 1em 0;
+    padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+    clear: left;
+    float: left;
+    margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+    clear: right;
+    float: right;
+    margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+    text-align: left;
+}
+
+.align-center {
+    clear: both;
+    text-align: center;
+}
+
+.align-right {
+    text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+    margin: 0 0 0.5em 1em;
+    border: 1px solid #ddb;
+    padding: 7px 7px 0 7px;
+    background-color: #ffe;
+    width: 40%;
+    float: right;
+}
+
+p.sidebar-title {
+    font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+    border: 1px solid #ccc;
+    padding: 7px 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+    border: 0;
+    border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 5px;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+    border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+    border: 0 !important;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+table.citation {
+    border-left: solid 1px gray;
+    margin-left: 1px;
+}
+
+table.citation td {
+    border-bottom: none;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+    list-style: decimal;
+}
+
+ol.loweralpha {
+    list-style: lower-alpha;
+}
+
+ol.upperalpha {
+    list-style: upper-alpha;
+}
+
+ol.lowerroman {
+    list-style: lower-roman;
+}
+
+ol.upperroman {
+    list-style: upper-roman;
+}
+
+dl {
+    margin-bottom: 15px;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+dt:target, .highlighted {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+.refcount {
+    color: #060;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+.footnote:target  {
+    background-color: #ffa;
+}
+
+.line-block {
+    display: block;
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+
+.line-block .line-block {
+    margin-top: 0;
+    margin-bottom: 0;
+    margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+    font-family: sans-serif;
+}
+
+.accelerator {
+    text-decoration: underline;
+}
+
+.classifier {
+    font-style: oblique;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+    overflow: auto;
+    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+tt.descclassname {
+    background-color: transparent;
+}
+
+tt.xref, a tt {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+.viewcode-link {
+    float: right;
+}
+
+.viewcode-back {
+    float: right;
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    margin: -1px -10px;
+    padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+    vertical-align: middle;
+}
+
+div.body div.math p {
+    text-align: center;
+}
+
+span.eqno {
+    float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0 !important;
+        width: 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    #top-link {
+        display: none;
+    }
+}
diff --git a/doc/sphinx/_static/default.css b/doc/sphinx/_static/default.css
new file mode 100644 (file)
index 0000000..21f3f50
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+ * default.css_t
+ * ~~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- default theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+    font-family: sans-serif;
+    font-size: 100%;
+    background-color: #11303d;
+    color: #000;
+    margin: 0;
+    padding: 0;
+}
+
+div.document {
+    background-color: #1c4e63;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+div.body {
+    background-color: #ffffff;
+    color: #000000;
+    padding: 0 20px 30px 20px;
+}
+
+div.footer {
+    color: #ffffff;
+    width: 100%;
+    padding: 9px 0 9px 0;
+    text-align: center;
+    font-size: 75%;
+}
+
+div.footer a {
+    color: #ffffff;
+    text-decoration: underline;
+}
+
+div.related {
+    background-color: #133f52;
+    line-height: 30px;
+    color: #ffffff;
+}
+
+div.related a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.4em;
+    font-weight: normal;
+    margin: 0;
+    padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.3em;
+    font-weight: normal;
+    margin: 5px 0 0 0;
+    padding: 0;
+}
+
+div.sphinxsidebar p {
+    color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+    margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px;
+    padding: 0;
+    color: #ffffff;
+}
+
+div.sphinxsidebar a {
+    color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+
+
+/* -- hyperlink styles ------------------------------------------------------ */
+
+a {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:visited {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+
+
+/* -- body styles ----------------------------------------------------------- */
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: 'Trebuchet MS', sans-serif;
+    background-color: #f2f2f2;
+    font-weight: normal;
+    color: #20435c;
+    border-bottom: 1px solid #ccc;
+    margin: 20px -20px 10px -20px;
+    padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.admonition p {
+    margin-bottom: 5px;
+}
+
+div.admonition pre {
+    margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+    margin-bottom: 5px;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+
+div.topic {
+    background-color: #eee;
+}
+
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+
+p.admonition-title {
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+pre {
+    padding: 5px;
+    background-color: #eeffcc;
+    color: #333333;
+    line-height: 120%;
+    border: 1px solid #ac9;
+    border-left: none;
+    border-right: none;
+}
+
+tt {
+    background-color: #ecf0f3;
+    padding: 0 1px 0 1px;
+    font-size: 0.95em;
+}
+
+th {
+    background-color: #ede;
+}
+
+.warning tt {
+    background: #efc2c2;
+}
+
+.note tt {
+    background: #d6d6d6;
+}
+
+.viewcode-back {
+    font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+}
\ No newline at end of file
diff --git a/doc/sphinx/_static/pygments.css b/doc/sphinx/_static/pygments.css
new file mode 100644 (file)
index 0000000..1a14f2a
--- /dev/null
@@ -0,0 +1,62 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight  { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #303030 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0040D0 } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/doc/sphinx/_static/sphinxdoc.css b/doc/sphinx/_static/sphinxdoc.css
new file mode 100644 (file)
index 0000000..75b2ae0
--- /dev/null
@@ -0,0 +1,323 @@
+/**
+ * Sphinx stylesheet -- sphinxdoc theme
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ *
+ * Originally created by Armin Ronacher for Werkzeug, adapted by Georg Brandl.
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+    font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
+                 'Verdana', sans-serif;
+    font-size: 14px;
+    letter-spacing: -0.01em;
+    line-height: 150%;
+    text-align: center;
+    background-color: #BFD1D4;
+    color: black;
+    padding: 0;
+    border: 1px solid #aaa;
+
+    margin: 0px 80px 0px 80px;
+    min-width: 740px;
+}
+
+div.document {
+    background-color: white;
+    text-align: left;
+    background-image: url(contents.png);
+    background-repeat: repeat-x;
+}
+
+div.bodywrapper {
+    margin: 0 240px 0 0;
+    border-right: 1px solid #ccc;
+}
+
+div.body {
+    margin: 0;
+    padding: 0.5em 20px 20px 20px;
+}
+
+div.related {
+    font-size: 1em;
+}
+
+div.related ul {
+    background-image: url(navigation.png);
+    height: 2em;
+    border-top: 1px solid #ddd;
+    border-bottom: 1px solid #ddd;
+}
+
+div.related ul li {
+    margin: 0;
+    padding: 0;
+    height: 2em;
+    float: left;
+}
+
+div.related ul li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+div.related ul li a {
+    margin: 0;
+    padding: 0 5px 0 5px;
+    line-height: 1.75em;
+    color: #EE9816;
+}
+
+div.related ul li a:hover {
+    color: #3CA8E7;
+}
+
+div.sphinxsidebarwrapper {
+    padding: 0;
+}
+
+div.sphinxsidebar {
+    margin: 0;
+    padding: 0.5em 15px 15px 0;
+    width: 210px;
+    float: right;
+    font-size: 1em;
+    text-align: left;
+}
+
+div.sphinxsidebar h3, div.sphinxsidebar h4 {
+    margin: 1em 0 0.5em 0;
+    font-size: 1em;
+    padding: 0.1em 0 0.1em 0.5em;
+    color: white;
+    border: 1px solid #86989B;
+    background-color: #AFC1C4;
+}
+
+div.sphinxsidebar h3 a {
+    color: white;
+}
+
+div.sphinxsidebar ul {
+    padding-left: 1.5em;
+    margin-top: 7px;
+    padding: 0;
+    line-height: 130%;
+}
+
+div.sphinxsidebar ul ul {
+    margin-left: 20px;
+}
+
+div.footer {
+    background-color: #E3EFF1;
+    color: #86989B;
+    padding: 3px 8px 3px 0;
+    clear: both;
+    font-size: 0.8em;
+    text-align: right;
+}
+
+div.footer a {
+    color: #86989B;
+    text-decoration: underline;
+}
+
+/* -- body styles ----------------------------------------------------------- */
+
+p {    
+    margin: 0.8em 0 0.5em 0;
+}
+
+a {
+    color: #CA7900;
+    text-decoration: none;
+}
+
+a:hover {
+    color: #2491CF;
+}
+
+div.body a {
+    text-decoration: underline;
+}
+
+h1 {
+    margin: 0;
+    padding: 0.7em 0 0.3em 0;
+    font-size: 1.5em;
+    color: #11557C;
+}
+
+h2 {
+    margin: 1.3em 0 0.2em 0;
+    font-size: 1.35em;
+    padding: 0;
+}
+
+h3 {
+    margin: 1em 0 -0.3em 0;
+    font-size: 1.2em;
+}
+
+div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a {
+    color: black!important;
+}
+
+h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor {
+    display: none;
+    margin: 0 0 0 0.3em;
+    padding: 0 0.2em 0 0.2em;
+    color: #aaa!important;
+}
+
+h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor,
+h5:hover a.anchor, h6:hover a.anchor {
+    display: inline;
+}
+
+h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover,
+h5 a.anchor:hover, h6 a.anchor:hover {
+    color: #777;
+    background-color: #eee;
+}
+
+a.headerlink {
+    color: #c60f0f!important;
+    font-size: 1em;
+    margin-left: 6px;
+    padding: 0 4px 0 4px;
+    text-decoration: none!important;
+}
+
+a.headerlink:hover {
+    background-color: #ccc;
+    color: white!important;
+}
+
+cite, code, tt {
+    font-family: 'Consolas', 'Deja Vu Sans Mono',
+                 'Bitstream Vera Sans Mono', monospace;
+    font-size: 0.95em;
+    letter-spacing: 0.01em;
+}
+
+tt {
+    background-color: #f2f2f2;
+    border-bottom: 1px solid #ddd;
+    color: #333;
+}
+
+tt.descname, tt.descclassname, tt.xref {
+    border: 0;
+}
+
+hr {
+    border: 1px solid #abc;
+    margin: 2em;
+}
+
+a tt {
+    border: 0;
+    color: #CA7900;
+}
+
+a tt:hover {
+    color: #2491CF;
+}
+
+pre {
+    font-family: 'Consolas', 'Deja Vu Sans Mono',
+                 'Bitstream Vera Sans Mono', monospace;
+    font-size: 0.95em;
+    letter-spacing: 0.015em;
+    line-height: 120%;
+    padding: 0.5em;
+    border: 1px solid #ccc;
+    background-color: #f8f8f8;
+}
+
+pre a {
+    color: inherit;
+    text-decoration: underline;
+}
+
+td.linenos pre {
+    padding: 0.5em 0;
+}
+
+div.quotebar {
+    background-color: #f8f8f8;
+    max-width: 250px;
+    float: right;
+    padding: 2px 7px;
+    border: 1px solid #ccc;
+}
+
+div.topic {
+    background-color: #f8f8f8;
+}
+
+table {
+    border-collapse: collapse;
+    margin: 0 -0.5em 0 -0.5em;
+}
+
+table td, table th {
+    padding: 0.2em 0.5em 0.2em 0.5em;
+}
+
+div.admonition, div.warning {
+    font-size: 0.9em;
+    margin: 1em 0 1em 0;
+    border: 1px solid #86989B;
+    background-color: #f7f7f7;
+    padding: 0;
+}
+
+div.admonition p, div.warning p {
+    margin: 0.5em 1em 0.5em 1em;
+    padding: 0;
+}
+
+div.admonition pre, div.warning pre {
+    margin: 0.4em 1em 0.4em 1em;
+}
+
+div.admonition p.admonition-title,
+div.warning p.admonition-title {
+    margin: 0;
+    padding: 0.1em 0 0.1em 0.5em;
+    color: white;
+    border-bottom: 1px solid #86989B;
+    font-weight: bold;
+    background-color: #AFC1C4;
+}
+
+div.warning {
+    border: 1px solid #940000;
+}
+
+div.warning p.admonition-title {
+    background-color: #CF0000;
+    border-bottom-color: #940000;
+}
+
+div.admonition ul, div.admonition ol,
+div.warning ul, div.warning ol {
+    margin: 0.1em 0.5em 0.5em 3em;
+    padding: 0;
+}
+
+div.versioninfo {
+    margin: 1em 0 0 0;
+    border: 1px solid #ccc;
+    background-color: #DDEAF0;
+    padding: 8px;
+    line-height: 1.3em;
+    font-size: 0.9em;
+}
diff --git a/doc/sphinx/_static/tagpython-big.png b/doc/sphinx/_static/tagpython-big.png
new file mode 100644 (file)
index 0000000..8eeb96a
Binary files /dev/null and b/doc/sphinx/_static/tagpython-big.png differ
diff --git a/doc/sphinx/api.html b/doc/sphinx/api.html
new file mode 100644 (file)
index 0000000..a2b8aab
--- /dev/null
@@ -0,0 +1,516 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>APIs specific to lxml.etree &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="apis-specific-to-lxml-etree">
+<h1><a class="toc-backref" href="#id1">APIs specific to lxml.etree</a><a class="headerlink" href="#apis-specific-to-lxml-etree" title="Permalink to this headline">¶</a></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
+new API.  This page describes the major differences and a few additions to the
+main ElementTree API.</p>
+<p>For a complete reference of the API, see the <a class="reference external" href="api/index.html">generated API
+documentation</a>.</p>
+<p>Separate pages describe the support for <a class="reference external" href="parsing.html">parsing XML</a>, executing <a class="reference external" href="xpathxslt.html">XPath and
+XSLT</a>, <a class="reference external" href="validation.html">validating XML</a> and interfacing with other XML tools through the
+<a class="reference external" href="sax.html">SAX-API</a>.</p>
+<p>lxml is extremely extensible through <a class="reference external" href="extensions.html">XPath functions in Python</a>, custom
+<a class="reference external" href="element_classes.html">Python element classes</a>, custom <a class="reference external" href="resolvers.html">URL resolvers</a> and even <a class="reference external" href="capi.html">at the C-level</a>.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#apis-specific-to-lxml-etree" id="id1">APIs specific to lxml.etree</a><ul>
+<li><a class="reference internal" href="#lxml-etree" id="id2">lxml.etree</a></li>
+<li><a class="reference internal" href="#other-element-apis" id="id3">Other Element APIs</a></li>
+<li><a class="reference internal" href="#trees-and-documents" id="id4">Trees and Documents</a></li>
+<li><a class="reference internal" href="#iteration" id="id5">Iteration</a></li>
+<li><a class="reference internal" href="#error-handling-on-exceptions" id="id6">Error handling on exceptions</a></li>
+<li><a class="reference internal" href="#error-logging" id="id7">Error logging</a></li>
+<li><a class="reference internal" href="#serialisation" id="id8">Serialisation</a></li>
+<li><a class="reference internal" href="#cdata" id="id9">CDATA</a></li>
+<li><a class="reference internal" href="#xinclude-and-elementinclude" id="id10">XInclude and ElementInclude</a></li>
+<li><a class="reference internal" href="#write-c14n-on-elementtree" id="id11">write_c14n on ElementTree</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="lxml-etree">
+<h2><a class="toc-backref" href="#id2">lxml.etree</a><a class="headerlink" href="#lxml-etree" title="Permalink to this headline">¶</a></h2>
+<p>lxml.etree tries to follow the <a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree API</a> wherever it can.  There are
+however some incompatibilities (see <a class="reference external" href="compatibility.html">compatibility</a>).  The extensions are
+documented here.</p>
+<p>If you need to know which version of lxml is installed, you can access the
+<tt class="docutils literal"><span class="pre">lxml.etree.LXML_VERSION</span></tt> attribute to retrieve a version tuple.  Note,
+however, that it did not exist before version 1.0, so you will get an
+AttributeError in older versions.  The versions of libxml2 and libxslt are
+available through the attributes <tt class="docutils literal"><span class="pre">LIBXML_VERSION</span></tt> and <tt class="docutils literal"><span class="pre">LIBXSLT_VERSION</span></tt>.</p>
+<p>The following examples usually assume this to be executed first:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="other-element-apis">
+<h2><a class="toc-backref" href="#id3">Other Element APIs</a><a class="headerlink" href="#other-element-apis" title="Permalink to this headline">¶</a></h2>
+<p>While lxml.etree itself uses the ElementTree API, it is possible to replace
+the Element implementation by <a class="reference external" href="element_classes.html">custom element subclasses</a>.  This has been
+used to implement well-known XML APIs on top of lxml.  For example, lxml ships
+with a data-binding implementation called <a class="reference external" href="objectify.html">objectify</a>, which is similar to
+the <a class="reference external" href="http://uche.ogbuji.net/tech/4suite/amara/">Amara bindery</a> tool.</p>
+<p>lxml.etree comes with a number of <a class="reference external" href="element_classes.html#setting-up-a-class-lookup-scheme">different lookup schemes</a> to customize the
+mapping between libxml2 nodes and the Element classes used by lxml.etree.</p>
+</div>
+<div class="section" id="trees-and-documents">
+<h2><a class="toc-backref" href="#id4">Trees and Documents</a><a class="headerlink" href="#trees-and-documents" title="Permalink to this headline">¶</a></h2>
+<p>Compared to the original ElementTree API, lxml.etree has an extended tree
+model.  It knows about parents and siblings of elements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;a&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;b&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">c</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;c&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">d</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;d&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">d</span><span class="p">,</span>    <span class="s">&quot;e&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span> <span class="o">==</span> <span class="n">root</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">b</span><span class="o">.</span><span class="n">getnext</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">c</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">getprevious</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+</pre></div>
+</div>
+<p>Elements always live within a document context in lxml.  This implies that
+there is also a notion of an absolute document root.  You can retrieve an
+ElementTree for the root node of a document from any of its elements.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">getroottree</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+</pre></div>
+</div>
+<p>Note that this is different from wrapping an Element in an ElementTree.  You
+can use ElementTrees to create XML trees with an explicit root node:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">d</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">d</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">)</span>
+<span class="go">b&#39;&lt;d&gt;&lt;e/&gt;&lt;/d&gt;&#39;</span>
+</pre></div>
+</div>
+<p>ElementTree objects are serialised as complete documents, including
+preceding or trailing processing instructions and comments.</p>
+<p>All operations that you run on such an ElementTree (like XPath, XSLT, etc.)
+will understand the explicitly chosen root as root node of a document.  They
+will not see any elements outside the ElementTree.  However, ElementTrees do
+not modify their Elements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">element</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</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="go">d</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">getroottree</span><span class="p">()</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+</pre></div>
+</div>
+<p>The rule is that all operations that are applied to Elements use either the
+Element itself as reference point, or the absolute root of the document that
+contains this Element (e.g. for absolute XPath expressions).  All operations
+on an ElementTree use its explicit root node as reference.</p>
+</div>
+<div class="section" id="iteration">
+<h2><a class="toc-backref" href="#id5">Iteration</a><a class="headerlink" href="#iteration" title="Permalink to this headline">¶</a></h2>
+<p>The ElementTree API makes Elements iterable to supports iteration over their
+children.  Using the tree defined above, we get:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span> <span class="p">]</span>
+<span class="go">[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;]</span>
+</pre></div>
+</div>
+<p>To iterate in the opposite direction, use the <tt class="docutils literal"><span class="pre">reversed()</span></tt> function
+that exists in Python 2.4 and later.</p>
+<p>Tree traversal should use the <tt class="docutils literal"><span class="pre">element.iter()</span></tt> method:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</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="p">]</span>
+<span class="go">[&#39;root&#39;, &#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;]</span>
+</pre></div>
+</div>
+<p>lxml.etree also supports this, but additionally features an extended API for
+iteration over the children, following/preceding siblings, ancestors and
+descendants of an element, as defined by the respective XPath axis:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterchildren</span><span class="p">()</span> <span class="p">]</span>
+<span class="go">[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterchildren</span><span class="p">(</span><span class="nb">reversed</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[&#39;d&#39;, &#39;c&#39;, &#39;b&#39;, &#39;a&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">sibling</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">sibling</span> <span class="ow">in</span> <span class="n">b</span><span class="o">.</span><span class="n">itersiblings</span><span class="p">()</span> <span class="p">]</span>
+<span class="go">[&#39;c&#39;, &#39;d&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">sibling</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">sibling</span> <span class="ow">in</span> <span class="n">c</span><span class="o">.</span><span class="n">itersiblings</span><span class="p">(</span><span class="n">preceding</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[&#39;b&#39;, &#39;a&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">ancestor</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">ancestor</span> <span class="ow">in</span> <span class="n">e</span><span class="o">.</span><span class="n">iterancestors</span><span class="p">()</span> <span class="p">]</span>
+<span class="go">[&#39;d&#39;, &#39;root&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterdescendants</span><span class="p">()</span> <span class="p">]</span>
+<span class="go">[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;]</span>
+</pre></div>
+</div>
+<p>Note how <tt class="docutils literal"><span class="pre">element.iterdescendants()</span></tt> does not include the element
+itself, as opposed to <tt class="docutils literal"><span class="pre">element.iter()</span></tt>.  The latter effectively
+implements the &#8216;descendant-or-self&#8217; axis in XPath.</p>
+<p>All of these iterators support an additional <tt class="docutils literal"><span class="pre">tag</span></tt> keyword argument that
+filters the generated elements by tag name:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterchildren</span><span class="p">(</span><span class="n">tag</span><span class="o">=</span><span class="s">&#39;a&#39;</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[&#39;a&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">d</span><span class="o">.</span><span class="n">iterchildren</span><span class="p">(</span><span class="n">tag</span><span class="o">=</span><span class="s">&#39;a&#39;</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterdescendants</span><span class="p">(</span><span class="n">tag</span><span class="o">=</span><span class="s">&#39;d&#39;</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[&#39;d&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</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="n">tag</span><span class="o">=</span><span class="s">&#39;d&#39;</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[&#39;d&#39;]</span>
+</pre></div>
+</div>
+<p>The most common way to traverse an XML tree is depth-first, which
+traverses the tree in document order.  This is implemented by the
+<tt class="docutils literal"><span class="pre">.iter()</span></tt> method.  While there is no dedicated method for
+breadth-first traversal, it is almost as simple if you use the
+<tt class="docutils literal"><span class="pre">collections.deque</span></tt> type from Python 2.4.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;root&gt;&lt;a&gt;&lt;b/&gt;&lt;c/&gt;&lt;/a&gt;&lt;d&gt;&lt;e/&gt;&lt;/d&gt;&lt;/root&gt;&#39;</span><span class="p">)</span>
+<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="n">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">))</span>
+<span class="go">&lt;root&gt;</span>
+<span class="go">  &lt;a&gt;</span>
+<span class="go">    &lt;b/&gt;</span>
+<span class="go">    &lt;c/&gt;</span>
+<span class="go">  &lt;/a&gt;</span>
+<span class="go">  &lt;d&gt;</span>
+<span class="go">    &lt;e/&gt;</span>
+<span class="go">  &lt;/d&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">queue</span> <span class="o">=</span> <span class="n">deque</span><span class="p">([</span><span class="n">root</span><span class="p">])</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">while</span> <span class="n">queue</span><span class="p">:</span>
+<span class="gp">... </span>   <span class="n">el</span> <span class="o">=</span> <span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span>  <span class="c"># pop next element</span>
+<span class="gp">... </span>   <span class="n">queue</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">el</span><span class="p">)</span>      <span class="c"># append its children</span>
+<span class="gp">... </span>   <span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+<span class="go">a</span>
+<span class="go">d</span>
+<span class="go">b</span>
+<span class="go">c</span>
+<span class="go">e</span>
+</pre></div>
+</div>
+<p>See also the section on the utility functions <tt class="docutils literal"><span class="pre">iterparse()</span></tt> and
+<tt class="docutils literal"><span class="pre">iterwalk()</span></tt> in the <a class="reference external" href="parsing.html#iterparse-and-iterwalk">parser documentation</a>.</p>
+</div>
+<div class="section" id="error-handling-on-exceptions">
+<h2><a class="toc-backref" href="#id6">Error handling on exceptions</a><a class="headerlink" href="#error-handling-on-exceptions" title="Permalink to this headline">¶</a></h2>
+<p>Libxml2 provides error messages for failures, be it during parsing, XPath
+evaluation or schema validation.  The preferred way of accessing them is
+through the local <tt class="docutils literal"><span class="pre">error_log</span></tt> property of the respective evaluator or
+transformer object.  See their documentation for details.</p>
+<p>However, lxml also keeps a global error log of all errors that occurred at the
+application level.  Whenever an exception is raised, you can retrieve the
+errors that occured and &#8220;might have&#8221; lead to the problem from the error log
+copy attached to the exception:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">clear_error_log</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">broken_xml</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;</span>
+<span class="gp">... </span><span class="s">&lt;root&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">try</span><span class="p">:</span>
+<span class="gp">... </span>  <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">broken_xml</span><span class="p">))</span>
+<span class="gp">... </span><span class="k">except</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLSyntaxError</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span>
+<span class="gp">... </span>  <span class="k">pass</span> <span class="c"># just put the exception into e</span>
+</pre></div>
+</div>
+<p>Once you have caught this exception, you can access its <tt class="docutils literal"><span class="pre">error_log</span></tt> property
+to retrieve the log entries or filter them by a specific type, error domain or
+error level:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">log</span> <span class="o">=</span> <span class="n">e</span><span class="o">.</span><span class="n">error_log</span><span class="o">.</span><span class="n">filter_from_level</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ErrorLevels</span><span class="o">.</span><span class="n">FATAL</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">log</span><span class="p">)</span>
+<span class="go">&lt;string&gt;:4:8:FATAL:PARSER:ERR_TAG_NAME_MISMATCH: Opening and ending tag mismatch: a line 3 and root</span>
+<span class="go">&lt;string&gt;:5:1:FATAL:PARSER:ERR_TAG_NOT_FINISHED: Premature end of data in tag root line 2</span>
+</pre></div>
+</div>
+<p>This might look a little cryptic at first, but it is the information that
+libxml2 gives you.  At least the message at the end should give you a hint
+what went wrong and you can see that the fatal errors (FATAL) happened during
+parsing (PARSER) lines 4, column 8 and line 5, column 1 of a string (&lt;string&gt;,
+or the filename if available).  Here, PARSER is the so-called error domain,
+see <tt class="docutils literal"><span class="pre">lxml.etree.ErrorDomains</span></tt> for that.  You can get it from a log entry
+like this:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">entry</span> <span class="o">=</span> <span class="n">log</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
+<span class="go">PARSER</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
+<span class="go">ERR_TAG_NAME_MISMATCH</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
+<span class="go">&lt;string&gt;</span>
+</pre></div>
+</div>
+<p>There is also a convenience attribute <tt class="docutils literal"><span class="pre">last_error</span></tt> that returns the last
+error or fatal error that occurred:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">entry</span> <span class="o">=</span> <span class="n">e</span><span class="o">.</span><span class="n">error_log</span><span class="o">.</span><span class="n">last_error</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
+<span class="go">PARSER</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
+<span class="go">ERR_TAG_NOT_FINISHED</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
+<span class="go">&lt;string&gt;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="error-logging">
+<h2><a class="toc-backref" href="#id7">Error logging</a><a class="headerlink" href="#error-logging" title="Permalink to this headline">¶</a></h2>
+<p>lxml.etree supports logging libxml2 messages to the Python stdlib logging
+module.  This is done through the <tt class="docutils literal"><span class="pre">etree.PyErrorLog</span></tt> class.  It disables the
+error reporting from exceptions and forwards log messages to a Python logger.
+To use it, see the descriptions of the function <tt class="docutils literal"><span class="pre">etree.useGlobalPythonLog</span></tt>
+and the class <tt class="docutils literal"><span class="pre">etree.PyErrorLog</span></tt> for help.  Note that this does not affect
+the local error logs of XSLT, XMLSchema, etc.</p>
+</div>
+<div class="section" id="serialisation">
+<h2><a class="toc-backref" href="#id8">Serialisation</a><a class="headerlink" href="#serialisation" title="Permalink to this headline">¶</a></h2>
+<p>lxml.etree has direct support for pretty printing XML output.  Functions like
+<tt class="docutils literal"><span class="pre">ElementTree.write()</span></tt> and <tt class="docutils literal"><span class="pre">tostring()</span></tt> support it through a keyword
+argument:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;test/&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;&lt;test/&gt;&lt;/root&gt;&#39;</span>
+
+<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&gt;</span>
+<span class="go">  &lt;test/&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<p>Note the newline that is appended at the end when pretty printing the
+output.  It was added in lxml 2.0.</p>
+<p>By default, lxml (just as ElementTree) outputs the XML declaration only if it
+is required by the standard:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">unicode_root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span> <span class="s">u&quot;t</span><span class="se">\u3120</span><span class="s">st&quot;</span> <span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">unicode_root</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">u&quot;t</span><span class="se">\u0A0A</span><span class="s">st&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">unicode_root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s">&quot;utf-8&quot;</span><span class="p">)</span>
+<span class="go">b&#39;&lt;t\xe3\x84\xa0st&gt;t\xe0\xa8\x8ast&lt;/t\xe3\x84\xa0st&gt;&#39;</span>
+
+<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">unicode_root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s">&quot;iso-8859-1&quot;</span><span class="p">))</span>
+<span class="go">&lt;?xml version=&#39;1.0&#39; encoding=&#39;iso-8859-1&#39;?&gt;</span>
+<span class="go">&lt;t&amp;#12576;st&gt;t&amp;#2570;st&lt;/t&amp;#12576;st&gt;</span>
+</pre></div>
+</div>
+<p>Also see the general remarks on <a class="reference external" href="parsing.html#python-unicode-strings">Unicode support</a>.</p>
+<p>You can enable or disable the declaration explicitly by passing another
+keyword argument for the serialisation:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><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">xml_declaration</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="go">&lt;?xml version=&#39;1.0&#39; encoding=&#39;ASCII&#39;?&gt;</span>
+<span class="go">&lt;root&gt;&lt;test/&gt;&lt;/root&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">unicode_root</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">unicode_root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s">&quot;UTF-16LE&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                             <span class="n">xml_declaration</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="go">b&#39;&lt;\x00t\x00 1s\x00t\x00/\x00&gt;\x00&#39;</span>
+</pre></div>
+</div>
+<p>Note that a standard compliant XML parser will not consider the last line
+well-formed XML if the encoding is not explicitly provided somehow, e.g. in an
+underlying transport protocol:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">notxml</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">unicode_root</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s">&quot;UTF-16LE&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                                      <span class="n">xml_declaration</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="n">notxml</span><span class="p">)</span>        
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XMLSyntaxError</span>: <span class="n">...</span>
+</pre></div>
+</div>
+<p>Since version 2.3, the serialisation can override the internal subset
+of the document with a user provided DOCTYPE:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml</span> <span class="o">=</span> <span class="s">&#39;&lt;!DOCTYPE root&gt;</span><span class="se">\n</span><span class="s">&lt;root/&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">))</span>
+
+<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">tree</span><span class="p">))</span>
+<span class="go">&lt;!DOCTYPE root&gt;</span>
+<span class="go">&lt;root/&gt;</span>
+
+<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">tree</span><span class="p">,</span>
+<span class="gp">... </span>    <span class="n">doctype</span><span class="o">=</span><span class="s">&#39;&lt;!DOCTYPE root SYSTEM &quot;/tmp/test.dtd&quot;&gt;&#39;</span><span class="p">))</span>
+<span class="go">&lt;!DOCTYPE root SYSTEM &quot;/tmp/test.dtd&quot;&gt;</span>
+<span class="go">&lt;root/&gt;</span>
+</pre></div>
+</div>
+<p>The content will be encoded, but otherwise copied verbatimly into the
+output stream.  It is therefore left to the user to take care for a
+correct doctype format, including the name of the root node.</p>
+</div>
+<div class="section" id="cdata">
+<h2><a class="toc-backref" href="#id9">CDATA</a><a class="headerlink" href="#cdata" title="Permalink to this headline">¶</a></h2>
+<p>By default, lxml&#8217;s parser will strip CDATA sections from the tree and
+replace them by their plain text content.  As real applications for
+CDATA are rare, this is the best way to deal with this issue.</p>
+<p>However, in some cases, keeping CDATA sections or creating them in a
+document is required to adhere to existing XML language definitions.
+For these special cases, you can instruct the parser to leave CDATA
+sections in the document:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">strip_cdata</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;root&gt;&lt;![CDATA[test]]&gt;&lt;/root&gt;&#39;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;test&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;&lt;![CDATA[test]]&gt;&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+<p>Note how the <tt class="docutils literal"><span class="pre">.text</span></tt> property does not give any indication that the
+text content is wrapped by a CDATA section.  If you want to make sure
+your data is wrapped by a CDATA block, you can use the <tt class="docutils literal"><span class="pre">CDATA()</span></tt>
+text wrapper:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&#39;test&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;test&#39;</span>
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;test&lt;/root&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">CDATA</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;test&#39;</span>
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;&lt;![CDATA[test]]&gt;&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="xinclude-and-elementinclude">
+<h2><a class="toc-backref" href="#id10">XInclude and ElementInclude</a><a class="headerlink" href="#xinclude-and-elementinclude" title="Permalink to this headline">¶</a></h2>
+<p>You can let lxml process xinclude statements in a document by calling the
+xinclude() method on a tree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">data</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;doc xmlns:xi=&quot;http://www.w3.org/2001/XInclude&quot;&gt;</span>
+<span class="gp">... </span><span class="s">&lt;foo/&gt;</span>
+<span class="gp">... </span><span class="s">&lt;xi:include href=&quot;doc/test.xml&quot; /&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/doc&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span><span class="o">.</span><span class="n">xinclude</span><span class="p">()</span>
+<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">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()))</span>
+<span class="go">&lt;doc xmlns:xi=&quot;http://www.w3.org/2001/XInclude&quot;&gt;</span>
+<span class="go">&lt;foo/&gt;</span>
+<span class="go">&lt;a xml:base=&quot;doc/test.xml&quot;/&gt;</span>
+<span class="go">&lt;/doc&gt;</span>
+</pre></div>
+</div>
+<p>Note that the ElementTree compatible <a class="reference external" href="http://effbot.org/zone/element-xinclude.htm">ElementInclude</a> module is also supported
+as <tt class="docutils literal"><span class="pre">lxml.ElementInclude</span></tt>.  It has the additional advantage of supporting
+custom <a class="reference external" href="resolvers.html">URL resolvers</a> at the Python level.  The normal XInclude mechanism
+cannot deploy these.  If you need ElementTree compatibility or custom
+resolvers, you have to stick to the external Python module.</p>
+</div>
+<div class="section" id="write-c14n-on-elementtree">
+<h2><a class="toc-backref" href="#id11">write_c14n on ElementTree</a><a class="headerlink" href="#write-c14n-on-elementtree" title="Permalink to this headline">¶</a></h2>
+<p>The lxml.etree.ElementTree class has a method write_c14n, which takes a file
+object as argument.  This file object will receive an UTF-8 representation of
+the canonicalized form of the XML, following the W3C C14N recommendation.  For
+example:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">f2</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span><span class="o">.</span><span class="n">write_c14n</span><span class="p">(</span><span class="n">f2</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">f2</span><span class="o">.</span><span class="n">getvalue</span><span class="p">()</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s">&quot;utf-8&quot;</span><span class="p">))</span>
+<span class="go">&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">APIs specific to lxml.etree</a><ul>
+<li><a class="reference internal" href="#lxml-etree">lxml.etree</a></li>
+<li><a class="reference internal" href="#other-element-apis">Other Element APIs</a></li>
+<li><a class="reference internal" href="#trees-and-documents">Trees and Documents</a></li>
+<li><a class="reference internal" href="#iteration">Iteration</a></li>
+<li><a class="reference internal" href="#error-handling-on-exceptions">Error handling on exceptions</a></li>
+<li><a class="reference internal" href="#error-logging">Error logging</a></li>
+<li><a class="reference internal" href="#serialisation">Serialisation</a></li>
+<li><a class="reference internal" href="#cdata">CDATA</a></li>
+<li><a class="reference internal" href="#xinclude-and-elementinclude">XInclude and ElementInclude</a></li>
+<li><a class="reference internal" href="#write-c14n-on-elementtree">write_c14n on ElementTree</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/api.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/build.html b/doc/sphinx/build.html
new file mode 100644 (file)
index 0000000..42c5106
--- /dev/null
@@ -0,0 +1,381 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>How to build lxml from source &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="how-to-build-lxml-from-source">
+<h1><a class="toc-backref" href="#id3">How to build lxml from source</a><a class="headerlink" href="#how-to-build-lxml-from-source" title="Permalink to this headline">¶</a></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
+separate <tt class="docutils literal"><span class="pre">-dev</span></tt> or <tt class="docutils literal"><span class="pre">-devel</span></tt> packages like <tt class="docutils literal"><span class="pre">libxml2-dev</span></tt>, which
+you must install before trying to build lxml.  The build process also
+requires <a class="reference external" href="http://peak.telecommunity.com/DevCenter/setuptools">setuptools</a>.  The lxml source distribution comes with a
+script called <tt class="docutils literal"><span class="pre">ez_setup.py</span></tt> that can be used to install them.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#how-to-build-lxml-from-source" id="id3">How to build lxml from source</a><ul>
+<li><a class="reference internal" href="#cython" id="id4">Cython</a></li>
+<li><a class="reference internal" href="#github-git-and-hg" id="id5">Github, git and hg</a></li>
+<li><a class="reference internal" href="#id2" id="id6">Setuptools</a></li>
+<li><a class="reference internal" href="#running-the-tests-and-reporting-errors" id="id7">Running the tests and reporting errors</a></li>
+<li><a class="reference internal" href="#building-an-egg" id="id8">Building an egg</a></li>
+<li><a class="reference internal" href="#building-lxml-on-macos-x" id="id9">Building lxml on MacOS-X</a></li>
+<li><a class="reference internal" href="#static-linking-on-windows" id="id10">Static linking on Windows</a></li>
+<li><a class="reference internal" href="#building-debian-packages-from-svn-sources" id="id11">Building Debian packages from SVN sources</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="cython">
+<h2><a class="toc-backref" href="#id4">Cython</a><a class="headerlink" href="#cython" title="Permalink to this headline">¶</a></h2>
+<p>The lxml.etree and lxml.objectify modules are written in <a class="reference external" href="http://www.cython.org">Cython</a>.
+Since we distribute the Cython-generated .c files with lxml releases,
+however, you do not need Cython to build lxml from the normal release
+sources.  We even encourage you to <em>not install Cython</em> for a normal
+release build, as the generated C code can vary quite heavily between
+Cython versions, which may or may not generate correct code for lxml.
+The pre-generated release sources were tested and therefore are known
+to work.</p>
+<p>So, if you want a reliable build of lxml, we suggest to a) use a
+source release of lxml and b) disable or uninstall Cython for the
+build.</p>
+<p><em>Only</em> if you are interested in building lxml from a checkout of the
+developer sources (e.g. to test a bug fix that has not been release
+yet) or if you want to be an lxml developer, then you do need a
+working Cython installation.  You can use <a class="reference external" href="http://peak.telecommunity.com/DevCenter/EasyInstall">EasyInstall</a> to install it:</p>
+<div class="highlight-python"><pre>easy_install "Cython&gt;=0.14.1"</pre>
+</div>
+<p>lxml currently requires Cython 0.14.1, later release versions should
+work as well.</p>
+</div>
+<div class="section" id="github-git-and-hg">
+<h2><a class="toc-backref" href="#id5">Github, git and hg</a><a class="headerlink" href="#github-git-and-hg" title="Permalink to this headline">¶</a></h2>
+<p>The lxml package is developed in a repository on <a class="reference external" href="https://github.com/lxml/">Github</a> using
+<a class="reference external" href="http://mercurial.selenic.com/">Mercurial</a> and the <a class="reference external" href="http://hg-git.github.com/">hg-git</a> plugin.  You can retrieve the current
+developer version using:</p>
+<div class="highlight-python"><pre>hg clone git://github.com/lxml/lxml.git lxml</pre>
+</div>
+<p>This will create a directory <tt class="docutils literal"><span class="pre">lxml</span></tt> and download the source into it,
+including the complete development history.  Don&#8217;t be afraid, the
+download is fairly quick.  You can also browse the <a class="reference external" href="https://github.com/lxml/lxml">lxml repository</a>
+through the web.</p>
+</div>
+<div class="section" id="id2">
+<h2><a class="toc-backref" href="#id6">Setuptools</a><a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
+<p>Usually, building lxml is done through setuptools.  Clone the source
+repository as described above (or download the <a class="reference external" href="https://github.com/lxml/lxml/tarball/master">source tar-ball</a> and
+unpack it) and then type:</p>
+<div class="highlight-python"><pre>python setup.py build</pre>
+</div>
+<p>or:</p>
+<div class="highlight-python"><pre>python setup.py bdist_egg</pre>
+</div>
+<p>If you want to test lxml from the source directory, it is better to build it
+in-place like this:</p>
+<div class="highlight-python"><pre>python setup.py  build_ext -i</pre>
+</div>
+<p>or, in Unix-like environments:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">make</span>
+</pre></div>
+</div>
+<p>If you get errors about missing header files (e.g. <tt class="docutils literal"><span class="pre">Python.h</span></tt> or
+<tt class="docutils literal"><span class="pre">libxml/xmlversion.h</span></tt>) then you need to make sure the development
+packages of Python, libxml2 and libxslt are properly installed.  On
+Linux distributions, they are usually called something like
+<tt class="docutils literal"><span class="pre">libxml2-dev</span></tt> or <tt class="docutils literal"><span class="pre">libxslt-devel</span></tt>.  If these packages were
+installed in non-standard places, try passing the following option to
+setup.py to make sure the right config is found:</p>
+<div class="highlight-python"><pre>python setup.py build --with-xslt-config=/path/to/xslt-config</pre>
+</div>
+<p>If this doesn&#8217;t help, you may have to add the location of the header
+files to the include path like:</p>
+<div class="highlight-python"><pre>python setup.py build_ext -i  -I /usr/include/libxml2</pre>
+</div>
+<p>where the file is in <tt class="docutils literal"><span class="pre">/usr/include/libxml2/libxml/xmlversion.h</span></tt></p>
+<p>To use lxml.etree in-place, you can place lxml&#8217;s <tt class="docutils literal"><span class="pre">src</span></tt> directory on your
+Python module search path (PYTHONPATH) and then import <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> to play
+with it:</p>
+<div class="highlight-python"><pre># cd lxml
+# PYTHONPATH=src python
+Python 2.5.1
+Type "help", "copyright", "credits" or "license" for more information.
+&gt;&gt;&gt; from lxml import etree
+&gt;&gt;&gt;</pre>
+</div>
+<p>To make sure everything gets recompiled cleanly after changes, you can
+run <tt class="docutils literal"><span class="pre">make</span> <span class="pre">clean</span></tt> or delete the file <tt class="docutils literal"><span class="pre">src/lxml/etree.c</span></tt>.  Distutils
+do not automatically pick up changes that affect files other than the
+main file <tt class="docutils literal"><span class="pre">src/lxml/etree.pyx</span></tt>.</p>
+</div>
+<div class="section" id="running-the-tests-and-reporting-errors">
+<h2><a class="toc-backref" href="#id7">Running the tests and reporting errors</a><a class="headerlink" href="#running-the-tests-and-reporting-errors" title="Permalink to this headline">¶</a></h2>
+<p>The source distribution (tgz) and the source repository contain a test
+suite for lxml.  You can run it from the top-level directory:</p>
+<div class="highlight-python"><pre>python test.py</pre>
+</div>
+<p>Note that the test script only tests the in-place build (see distutils
+building above), as it searches the <tt class="docutils literal"><span class="pre">src</span></tt> directory.  You can use the
+following one-step command to trigger an in-place build and test it:</p>
+<div class="highlight-python"><pre>make test</pre>
+</div>
+<p>This also runs the ElementTree and cElementTree compatibility tests.  To call
+them separately, make sure you have lxml on your PYTHONPATH first, then run:</p>
+<div class="highlight-python"><pre>python selftest.py</pre>
+</div>
+<p>and:</p>
+<div class="highlight-python"><pre>python selftest2.py</pre>
+</div>
+<p>If the tests give failures, errors, or worse, segmentation faults, we&#8217;d really
+like to know.  Please contact us on the <a class="reference external" href="http://codespeak.net/mailman/listinfo/lxml-dev">mailing list</a>, and please specify
+the version of lxml, libxml2, libxslt and Python you were using, as well as
+your operating system type (Linux, Windows, MacOs, ...).</p>
+</div>
+<div class="section" id="building-an-egg">
+<h2><a class="toc-backref" href="#id8">Building an egg</a><a class="headerlink" href="#building-an-egg" title="Permalink to this headline">¶</a></h2>
+<p>This is the procedure to make an lxml egg for your platform (assuming
+that you have <a class="reference external" href="http://peak.telecommunity.com/DevCenter/setuptools">setuptools</a> installed):</p>
+<ul class="simple">
+<li>Download the lxml-x.y.tar.gz release.  This contains the pregenerated C so
+that you can be sure you build exactly from the release sources.  Unpack
+them and cd into the resulting directory.</li>
+<li>python setup.py build</li>
+<li>If you&#8217;re on a unixy platform, cd into <tt class="docutils literal"><span class="pre">build/lib.your.platform</span></tt> and strip
+any <tt class="docutils literal"><span class="pre">.so</span></tt> file you find there.  This reduces the size of the egg
+considerably.</li>
+<li><tt class="docutils literal"><span class="pre">python</span> <span class="pre">setup.py</span> <span class="pre">bdist_egg</span></tt></li>
+</ul>
+<p>This will put the egg into the <tt class="docutils literal"><span class="pre">dist</span></tt> directory.</p>
+</div>
+<div class="section" id="building-lxml-on-macos-x">
+<h2><a class="toc-backref" href="#id9">Building lxml on MacOS-X</a><a class="headerlink" href="#building-lxml-on-macos-x" title="Permalink to this headline">¶</a></h2>
+<p>Apple regularly ships new system releases with horribly outdated
+system libraries.  This is specifically the case for libxml2 and
+libxslt, where the system provided versions are too old to build lxml.</p>
+<p>While the Unix environment in MacOS-X makes it relatively easy to
+install Unix/Linux style package management tools and new software, it
+actually seems to be hard to get libraries set up for exclusive usage
+that MacOS-X ships in an older version.  Alternative distributions
+(like macports) install their libraries in addition to the system
+libraries, but the compiler and the runtime loader on MacOS still sees
+the system libraries before the new libraries.  This can lead to
+undebuggable crashes where the newer library seems to be loaded but
+the older system library is used.</p>
+<p>Apple discourages static building against libraries, which would help
+working around this problem.  Apple does not ship static library
+binaries with its system and several package management systems follow
+this decision.  Therefore, building static binaries requires building
+the dependencies first.  The <tt class="docutils literal"><span class="pre">setup.py</span></tt> script does this
+automatically when you call it like this:</p>
+<div class="highlight-python"><pre>python setup.py build --static-deps</pre>
+</div>
+<p>This will download and build the latest versions of libxml2 and
+libxslt from the official FTP download site.  If you want to use
+specific versions, or want to prevent any online access, you can
+download both <tt class="docutils literal"><span class="pre">tar.gz</span></tt> release files yourself, place them into a
+subdirectory <tt class="docutils literal"><span class="pre">libs</span></tt> in the lxml distribution, and call <tt class="docutils literal"><span class="pre">setup.py</span></tt>
+with the desired target versions like this:</p>
+<div class="highlight-python"><pre>python setup.py build --static-deps \
+       --libxml2-version=2.7.3 \
+       --libxslt-version=1.1.24 \
+
+sudo python setup.py install</pre>
+</div>
+<p>Instead of <tt class="docutils literal"><span class="pre">build</span></tt>, you can use any target, like <tt class="docutils literal"><span class="pre">bdist_egg</span></tt> if
+you want to use setuptools to build an installable egg.</p>
+<p>Note that this also works with <a class="reference external" href="http://peak.telecommunity.com/DevCenter/EasyInstall">EasyInstall</a>.  Since you can&#8217;t pass
+command line options in this case, you have to use an environment
+variable instead:</p>
+<div class="highlight-python"><pre>STATIC_DEPS=true easy_install lxml</pre>
+</div>
+<p>Some machines may require an additional run with &#8220;sudo&#8221; to install the
+package into the Python package directory:</p>
+<div class="highlight-python"><pre>STATIC_DEPS=true sudo easy_install lxml</pre>
+</div>
+<p>The <tt class="docutils literal"><span class="pre">STATICBUILD</span></tt> environment variable is handled equivalently to
+the <tt class="docutils literal"><span class="pre">STATIC_DEPS</span></tt> variable, but is used by some other extension
+packages, too.</p>
+</div>
+<div class="section" id="static-linking-on-windows">
+<h2><a class="toc-backref" href="#id10">Static linking on Windows</a><a class="headerlink" href="#static-linking-on-windows" title="Permalink to this headline">¶</a></h2>
+<p>Most operating systems have proper package management that makes installing
+current versions of libxml2 and libxslt easy.  The most famous exception is
+Microsoft Windows, which entirely lacks these capabilities.  It can therefore
+be interesting to statically link the external libraries into lxml.etree to
+avoid having to install them separately.</p>
+<p>Download lxml and all required libraries to the same directory.  The iconv,
+libxml2, libxslt, and zlib libraries are all available from the ftp site
+<a class="reference external" href="ftp://ftp.zlatkovic.com/pub/libxml/">ftp://ftp.zlatkovic.com/pub/libxml/</a>.</p>
+<p>Your directory should now have the following files in it (although most likely
+different versions):</p>
+<div class="highlight-python"><pre>iconv-1.9.1.win32.zip
+libxml2-2.6.23.win32.zip
+libxslt-1.1.15.win32.zip
+lxml-1.0.0.tgz
+zlib-1.2.3.win32.zip</pre>
+</div>
+<p>Now extract each of those files in the <em>same</em> directory.  This should give you
+something like this:</p>
+<div class="highlight-python"><pre>iconv-1.9.1.win32/
+iconv-1.9.1.win32.zip
+libxml2-2.6.23.win32/
+libxml2-2.6.23.win32.zip
+libxslt-1.1.15.win32/
+libxslt-1.1.15.win32.zip
+lxml-1.0.0/
+lxml-1.0.0.tgz
+zlib-1.2.3.win32/
+zlib-1.2.3.win32.zip</pre>
+</div>
+<p>Go to the lxml directory and edit the file <tt class="docutils literal"><span class="pre">setup.py</span></tt>.  There should
+be a section near the top that looks like this:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">STATIC_INCLUDE_DIRS</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="n">STATIC_LIBRARY_DIRS</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="n">STATIC_CFLAGS</span> <span class="o">=</span> <span class="p">[]</span>
+</pre></div>
+</div>
+<p>Change this section to something like this, but take care to use the correct
+version numbers:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">STATIC_INCLUDE_DIRS</span> <span class="o">=</span> <span class="p">[</span>
+       <span class="s">&quot;..</span><span class="se">\\</span><span class="s">libxml2-2.6.23.win32</span><span class="se">\\</span><span class="s">include&quot;</span><span class="p">,</span>
+       <span class="s">&quot;..</span><span class="se">\\</span><span class="s">libxslt-1.1.15.win32</span><span class="se">\\</span><span class="s">include&quot;</span><span class="p">,</span>
+       <span class="s">&quot;..</span><span class="se">\\</span><span class="s">zlib-1.2.3.win32</span><span class="se">\\</span><span class="s">include&quot;</span><span class="p">,</span>
+       <span class="s">&quot;..</span><span class="se">\\</span><span class="s">iconv-1.9.1.win32</span><span class="se">\\</span><span class="s">include&quot;</span>
+       <span class="p">]</span>
+
+<span class="n">STATIC_LIBRARY_DIRS</span> <span class="o">=</span> <span class="p">[</span>
+       <span class="s">&quot;..</span><span class="se">\\</span><span class="s">libxml2-2.6.23.win32</span><span class="se">\\</span><span class="s">lib&quot;</span><span class="p">,</span>
+       <span class="s">&quot;..</span><span class="se">\\</span><span class="s">libxslt-1.1.15.win32</span><span class="se">\\</span><span class="s">lib&quot;</span><span class="p">,</span>
+       <span class="s">&quot;..</span><span class="se">\\</span><span class="s">zlib-1.2.3.win32</span><span class="se">\\</span><span class="s">lib&quot;</span><span class="p">,</span>
+       <span class="s">&quot;..</span><span class="se">\\</span><span class="s">iconv-1.9.1.win32</span><span class="se">\\</span><span class="s">lib&quot;</span>
+       <span class="p">]</span>
+
+<span class="n">STATIC_CFLAGS</span> <span class="o">=</span> <span class="p">[]</span>
+</pre></div>
+</div>
+<p>Add any CFLAGS you might consider useful to the third list.  Now you
+should be able to pass the <tt class="docutils literal"><span class="pre">--static</span></tt> option to setup.py and
+everything should work well.  Try calling:</p>
+<div class="highlight-python"><pre>python setup.py bdist_wininst --static</pre>
+</div>
+<p>This will create a windows installer in the <tt class="docutils literal"><span class="pre">pkg</span></tt> directory.</p>
+</div>
+<div class="section" id="building-debian-packages-from-svn-sources">
+<h2><a class="toc-backref" href="#id11">Building Debian packages from SVN sources</a><a class="headerlink" href="#building-debian-packages-from-svn-sources" title="Permalink to this headline">¶</a></h2>
+<p><a class="reference external" href="http://codespeak.net/pipermail/lxml-dev/2006-May/001254.html">Andreas Pakulat</a> proposed the following approach.</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">apt-get</span> <span class="pre">source</span> <span class="pre">lxml</span></tt></li>
+<li>remove the unpacked directory</li>
+<li>tar.gz the lxml SVN version and replace the orig.tar.gz that lies in the
+directory</li>
+<li>check md5sum of created tar.gz file and place new sum and size in dsc file</li>
+<li>do <tt class="docutils literal"><span class="pre">dpkg-source</span> <span class="pre">-x</span> <span class="pre">lxml-[VERSION].dsc</span></tt> and cd into the newly created directory</li>
+<li>run <tt class="docutils literal"><span class="pre">dch</span> <span class="pre">-i</span></tt> and add a comment like &#8220;use trunk version&#8221;, this will
+increase the debian version number so apt/dpkg won&#8217;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
+can either install them manually or run <tt class="docutils literal"><span class="pre">apt-get</span> <span class="pre">build-dep</span> <span class="pre">lxml</span></tt>.</p>
+<p>That will give you .deb packages in the parent directory which can be
+installed using <tt class="docutils literal"><span class="pre">dpkg</span> <span class="pre">-i</span></tt>.</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">How to build lxml from source</a><ul>
+<li><a class="reference internal" href="#cython">Cython</a></li>
+<li><a class="reference internal" href="#github-git-and-hg">Github, git and hg</a></li>
+<li><a class="reference internal" href="#id2">Setuptools</a></li>
+<li><a class="reference internal" href="#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li>
+<li><a class="reference internal" href="#building-an-egg">Building an egg</a></li>
+<li><a class="reference internal" href="#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li>
+<li><a class="reference internal" href="#static-linking-on-windows">Static linking on Windows</a></li>
+<li><a class="reference internal" href="#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/build.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/capi.html b/doc/sphinx/capi.html
new file mode 100644 (file)
index 0000000..c7d6c33
--- /dev/null
@@ -0,0 +1,184 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>The public C-API of lxml.etree &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="the-public-c-api-of-lxml-etree">
+<h1><a class="toc-backref" href="#id1">The public C-API of lxml.etree</a><a class="headerlink" href="#the-public-c-api-of-lxml-etree" title="Permalink to this headline">¶</a></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,
+without going through the Python API.</p>
+<p>The API is described in the file <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/src/lxml/etreepublic.pxd">etreepublic.pxd</a>, which is directly
+c-importable by extension modules implemented in <a class="reference external" href="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/">Pyrex</a> or <a class="reference external" href="http://www.cython.org">Cython</a>.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#the-public-c-api-of-lxml-etree" id="id1">The public C-API of lxml.etree</a><ul>
+<li><a class="reference internal" href="#writing-external-modules-in-cython" id="id2">Writing external modules in Cython</a></li>
+<li><a class="reference internal" href="#writing-external-modules-in-c" id="id3">Writing external modules in C</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="writing-external-modules-in-cython">
+<h2><a class="toc-backref" href="#id2">Writing external modules in Cython</a><a class="headerlink" href="#writing-external-modules-in-cython" title="Permalink to this headline">¶</a></h2>
+<p>This is the easiest way of extending lxml at the C level.  A <a class="reference external" href="http://www.cython.org">Cython</a>
+(or <a class="reference external" href="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/">Pyrex</a>) module should start like this:</p>
+<div class="highlight-python"><pre># My Cython extension
+
+# import the public functions and classes of lxml.etree
+cimport etreepublic as cetree
+
+# import the lxml.etree module in Python
+cdef object etree
+from lxml import etree
+
+# initialize the access to the C-API of lxml.etree
+cetree.import_lxml__etree()</pre>
+</div>
+<p>From this line on, you can access all public functions of lxml.etree
+from the <tt class="docutils literal"><span class="pre">cetree</span></tt> namespace like this:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># build a tag name from namespace and element name</span>
+<span class="n">py_tag</span> <span class="o">=</span> <span class="n">cetree</span><span class="o">.</span><span class="n">namespacedNameFromNsName</span><span class="p">(</span><span class="s">&quot;http://some/url&quot;</span><span class="p">,</span> <span class="s">&quot;myelement&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Public lxml classes are easily subclassed.  For example, to implement
+and set a new default element class, you can write Cython code like
+the following:</p>
+<div class="highlight-python"><pre>from etreepublic cimport ElementBase
+cdef class NewElementClass(ElementBase):
+     def set_value(self, myval):
+         self.set("my_attribute", myval)
+
+etree.set_element_class_lookup(
+     etree.DefaultElementClassLookup(element=NewElementClass))</pre>
+</div>
+</div>
+<div class="section" id="writing-external-modules-in-c">
+<h2><a class="toc-backref" href="#id3">Writing external modules in C</a><a class="headerlink" href="#writing-external-modules-in-c" title="Permalink to this headline">¶</a></h2>
+<p>If you really feel like it, you can also interface with lxml.etree straight
+from C code.  All you have to do is include the header file for the public
+API, import the <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> module and then call the import function:</p>
+<div class="highlight-c"><div class="highlight"><pre><span class="cp">/* My C extension */</span>
+
+<span class="cp">/* common includes */</span>
+<span class="cp">#include &quot;Python.h&quot;</span>
+<span class="cp">#include &quot;stdio.h&quot;</span>
+<span class="cp">#include &quot;string.h&quot;</span>
+<span class="cp">#include &quot;stdarg.h&quot;</span>
+<span class="cp">#include &quot;libxml/xmlversion.h&quot;</span>
+<span class="cp">#include &quot;libxml/encoding.h&quot;</span>
+<span class="cp">#include &quot;libxml/hash.h&quot;</span>
+<span class="cp">#include &quot;libxml/tree.h&quot;</span>
+<span class="cp">#include &quot;libxml/xmlIO.h&quot;</span>
+<span class="cp">#include &quot;libxml/xmlsave.h&quot;</span>
+<span class="cp">#include &quot;libxml/globals.h&quot;</span>
+<span class="cp">#include &quot;libxml/xmlstring.h&quot;</span>
+
+<span class="cp">/* lxml.etree specific includes */</span>
+<span class="cp">#include &quot;lxml-version.h&quot;</span>
+<span class="cp">#include &quot;etree_defs.h&quot;</span>
+<span class="cp">#include &quot;etree.h&quot;</span>
+
+<span class="cm">/* setup code */</span>
+<span class="n">import_lxml__etree</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>Note that including <tt class="docutils literal"><span class="pre">etree.h</span></tt> does not automatically include the
+header files it requires.  Note also that the above list of common
+includes may not be sufficient.</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">The public C-API of lxml.etree</a><ul>
+<li><a class="reference internal" href="#writing-external-modules-in-cython">Writing external modules in Cython</a></li>
+<li><a class="reference internal" href="#writing-external-modules-in-c">Writing external modules in C</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/capi.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/compatibility.html b/doc/sphinx/compatibility.html
new file mode 100644 (file)
index 0000000..3baf86a
--- /dev/null
@@ -0,0 +1,269 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>ElementTree compatibility of lxml.etree &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="elementtree-compatibility-of-lxml-etree">
+<h1>ElementTree compatibility of lxml.etree<a class="headerlink" href="#elementtree-compatibility-of-lxml-etree" title="Permalink to this headline">¶</a></h1>
+<p>A lot of care has been taken to ensure compatibility between etree and
+ElementTree.  Nonetheless, some differences and incompatibilities exist:</p>
+<ul>
+<li><p class="first">Importing etree is obviously different; etree uses a lower-case
+package name, while ElementTree uses a combination of upper-case and
+lower case in imports:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># etree</span>
+<span class="kn">from</span> <span class="nn">lxml.etree</span> <span class="kn">import</span> <span class="n">Element</span>
+
+<span class="c"># ElementTree</span>
+<span class="kn">from</span> <span class="nn">elementtree.ElementTree</span> <span class="kn">import</span> <span class="n">Element</span>
+
+<span class="c"># ElementTree in the Python 2.5 standard library</span>
+<span class="kn">from</span> <span class="nn">xml.etree.ElementTree</span> <span class="kn">import</span> <span class="n">Element</span>
+</pre></div>
+</div>
+<p>When switching over code from ElementTree to lxml.etree, and you&#8217;re using
+the package name prefix &#8216;ElementTree&#8217;, you can do the following:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># instead of</span>
+<span class="kn">from</span> <span class="nn">elementtree</span> <span class="kn">import</span> <span class="n">ElementTree</span>
+<span class="c"># use</span>
+<span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span> <span class="k">as</span> <span class="n">ElementTree</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">lxml.etree offers a lot more functionality, such as XPath, XSLT, Relax NG,
+and XML Schema support, which (c)ElementTree does not offer.</p>
+</li>
+<li><p class="first">etree has a different idea about Python unicode strings than ElementTree.
+In most parts of the API, ElementTree uses plain strings and unicode strings
+as what they are.  This includes Element.text, Element.tail and many other
+places.  However, the ElementTree parsers assume by default that any string
+(<cite>str</cite> or <cite>unicode</cite>) contains ASCII data.  They raise an exception if
+strings do not match the expected encoding.</p>
+<p>etree has the same idea about plain strings (<cite>str</cite>) as ElementTree.  For
+unicode strings, however, etree assumes throughout the API that they are
+Python unicode encoded strings rather than byte data.  This includes the
+parsers.  It is therefore perfectly correct to pass XML unicode data into
+the etree parsers in form of Python unicode strings.  It is an error, on the
+other hand, if unicode strings specify an encoding in their XML declaration,
+as this conflicts with the characteristic encoding of Python unicode
+strings.</p>
+</li>
+<li><p class="first">ElementTree allows you to place an Element in two different trees at the
+same time.  Thus, this:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">a</span> <span class="o">=</span> <span class="n">Element</span><span class="p">(</span><span class="s">&#39;a&#39;</span><span class="p">)</span>
+<span class="n">b</span> <span class="o">=</span> <span class="n">SubElement</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&#39;b&#39;</span><span class="p">)</span>
+<span class="n">c</span> <span class="o">=</span> <span class="n">Element</span><span class="p">(</span><span class="s">&#39;c&#39;</span><span class="p">)</span>
+<span class="n">c</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">b</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>will result in the following tree a:</p>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;a&gt;&lt;b</span> <span class="nt">/&gt;&lt;/a&gt;</span>
+</pre></div>
+</div>
+<p>and the following tree c:</p>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;c&gt;&lt;b</span> <span class="nt">/&gt;&lt;/c&gt;</span>
+</pre></div>
+</div>
+<p>In lxml, this behavior is different, because lxml is built on top of a tree
+that maintains parent relationships for elements (like W3C DOM).  This means
+an element can only exist in a single tree at the same time.  Adding an
+element in some tree to another tree will cause this element to be moved.</p>
+<p>So, for tree a we will get:</p>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;a&gt;&lt;/a&gt;</span>
+</pre></div>
+</div>
+<p>and for tree c we will get:</p>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;c&gt;&lt;b/&gt;&lt;/c&gt;</span>
+</pre></div>
+</div>
+<p>Unfortunately this is a rather fundamental difference in behavior, which is
+hard to change.  It won&#8217;t affect some applications, but if you want to port
+code you must unfortunately make sure that it doesn&#8217;t affect yours.</p>
+</li>
+<li><p class="first">etree allows navigation to the parent of a node by the <tt class="docutils literal"><span class="pre">getparent()</span></tt>
+method and to the siblings by calling <tt class="docutils literal"><span class="pre">getnext()</span></tt> and <tt class="docutils literal"><span class="pre">getprevious()</span></tt>.
+This is not possible in ElementTree as the underlying tree model does not
+have this information.</p>
+</li>
+<li><p class="first">When trying to set a subelement using __setitem__ that is in fact not an
+Element but some other object, etree raises a TypeError, and ElementTree
+raises an AssertionError.  This also applies to some other places of the
+API.  In general, etree tries to avoid AssertionErrors in favour of being
+more specific about the reason for the exception.</p>
+</li>
+<li><p class="first">When parsing fails in <tt class="docutils literal"><span class="pre">iterparse()</span></tt>, ElementTree up to version
+1.2.x raises a low-level <tt class="docutils literal"><span class="pre">ExpatError</span></tt> instead of a <tt class="docutils literal"><span class="pre">SyntaxError</span></tt>
+as the other parsers.  Both lxml and ElementTree 1.3 raise a
+<tt class="docutils literal"><span class="pre">ParseError</span></tt> for parser errors.</p>
+</li>
+<li><p class="first">The <tt class="docutils literal"><span class="pre">iterparse()</span></tt> function in lxml is implemented based on the libxml2
+parser and tree generator.  This means that modifications of the document
+root or the ancestors of the current element during parsing can irritate the
+parser and even segfault.  While this is not a problem in the Python object
+structure used by ElementTree, the C tree underlying lxml suffers from it.
+The golden rule for <tt class="docutils literal"><span class="pre">iterparse()</span></tt> on lxml therefore is: do not touch
+anything that will have to be touched again by the parser later on.  See the
+lxml parser documentation on this.</p>
+</li>
+<li><p class="first">ElementTree ignores comments and processing instructions when parsing XML,
+while etree will read them in and treat them as Comment or
+ProcessingInstruction elements respectively.  This is especially visible
+where comments are found inside text content, which is then split by the
+Comment element.</p>
+<p>You can disable this behaviour by passing the boolean <tt class="docutils literal"><span class="pre">remove_comments</span></tt>
+and/or <tt class="docutils literal"><span class="pre">remove_pis</span></tt> keyword arguments to the parser you use.  For
+convenience and to support portable code, you can also use the
+<tt class="docutils literal"><span class="pre">etree.ETCompatXMLParser</span></tt> instead of the default <tt class="docutils literal"><span class="pre">etree.XMLParser</span></tt>.  It
+tries to provide a default setup that is as close to the ElementTree parser
+as possible.</p>
+</li>
+<li><p class="first">The <tt class="docutils literal"><span class="pre">TreeBuilder</span></tt> class of <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> uses a different
+signature for the <tt class="docutils literal"><span class="pre">start()</span></tt> method.  It accepts an additional
+argument <tt class="docutils literal"><span class="pre">nsmap</span></tt> to propagate the namespace declarations of an
+element in addition to its own namespace.  To assure compatibility
+with ElementTree (which does not support this argument), lxml checks
+if the method accepts 3 arguments before calling it, and otherwise
+drops the namespace mapping.  This should work with most existing
+ElementTree code, although there may still be conflicting cases.</p>
+</li>
+<li><p class="first">ElementTree 1.2 has a bug when serializing an empty Comment (no text
+argument given) to XML, etree serializes this successfully.</p>
+</li>
+<li><p class="first">ElementTree adds whitespace around comments on serialization, lxml does
+not.  This means that a comment text &#8220;text&#8221; that ElementTree serializes as
+&#8220;&lt;!&#8211; text &#8211;&gt;&#8221; will become &#8220;&lt;!&#8211;text&#8211;&gt;&#8221; in lxml.</p>
+</li>
+<li><p class="first">When the string &#8216;*&#8217; is used as tag filter in the <tt class="docutils literal"><span class="pre">Element.getiterator()</span></tt>
+method, ElementTree returns all elements in the tree, including comments and
+processing instructions. lxml.etree only returns real Elements, i.e. tree
+nodes that have a string tag name.  Without a filter, both libraries iterate
+over all nodes.</p>
+<p>Note that currently only lxml.etree supports passing the <tt class="docutils literal"><span class="pre">Element</span></tt> factory
+function as filter to select only Elements.  Both libraries support passing
+the <tt class="docutils literal"><span class="pre">Comment</span></tt> and <tt class="docutils literal"><span class="pre">ProcessingInstruction</span></tt> factories to select the
+respective tree nodes.</p>
+</li>
+<li><p class="first">ElementTree merges the target of a processing instruction into <tt class="docutils literal"><span class="pre">PI.text</span></tt>,
+while lxml.etree puts it into the <tt class="docutils literal"><span class="pre">.target</span></tt> property and leaves it out of
+the <tt class="docutils literal"><span class="pre">.text</span></tt> property.  The <tt class="docutils literal"><span class="pre">pi.text</span></tt> in ElementTree therefore
+correspondents to <tt class="docutils literal"><span class="pre">pi.target</span> <span class="pre">+</span> <span class="pre">&quot;</span> <span class="pre">&quot;</span> <span class="pre">+</span> <span class="pre">pi.text</span></tt> in lxml.etree.</p>
+</li>
+<li><p class="first">Because etree is built on top of libxml2, which is namespace prefix aware,
+etree preserves namespaces declarations and prefixes while ElementTree tends
+to come up with its own prefixes (ns0, ns1, etc).  When no namespace prefix
+is given, however, etree creates ElementTree style prefixes as well.</p>
+</li>
+<li><p class="first">etree has a &#8216;prefix&#8217; attribute (read-only) on elements giving the Element&#8217;s
+prefix, if this is known, and None otherwise (in case of no namespace at
+all, or default namespace).</p>
+</li>
+<li><p class="first">etree further allows passing an &#8216;nsmap&#8217; dictionary to the Element and
+SubElement element factories to explicitly map namespace prefixes to
+namespace URIs.  These will be translated into namespace declarations on
+that element.  This means that in the probably rare case that you need to
+construct an attribute called &#8216;nsmap&#8217;, you need to be aware that unlike in
+ElementTree, you cannot pass it as a keyword argument to the Element and
+SubElement factories directly.</p>
+</li>
+<li><p class="first">ElementTree allows QName objects as attribute values and resolves their
+prefix on serialisation (e.g. an attribute value <tt class="docutils literal"><span class="pre">QName(&quot;{myns}myname&quot;)</span></tt>
+becomes &#8220;p:myname&#8221; if &#8220;p&#8221; is the namespace prefix of &#8220;myns&#8221;).  lxml.etree
+also allows you to set attribute values from QName instances (and also .text
+values), but it resolves their prefix immediately and stores the plain text
+value.  So, if prefixes are modified later on, e.g. by moving a subtree to a
+different tree (which reassigns the prefix mappings), the text values will
+not be updated and you might end up with an undefined prefix.</p>
+</li>
+<li><p class="first">etree elements can be copied using <tt class="docutils literal"><span class="pre">copy.deepcopy()</span></tt> and <tt class="docutils literal"><span class="pre">copy.copy()</span></tt>,
+just like ElementTree&#8217;s.  However, <tt class="docutils literal"><span class="pre">copy.copy()</span></tt> does <em>not</em> create a
+shallow copy where elements are shared between trees, as this makes no sense
+in the context of libxml2 trees.  Note that lxml can deep-copy trees
+considerably faster than ElementTree, so a deep copy might still be fast
+enough to replace a shallow copy in your case.</p>
+</li>
+</ul>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/compatibility.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/cssselect.html b/doc/sphinx/cssselect.html
new file mode 100644 (file)
index 0000000..5507055
--- /dev/null
@@ -0,0 +1,191 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>lxml.cssselect &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="lxml-cssselect">
+<h1><a class="toc-backref" href="#id1">lxml.cssselect</a><a class="headerlink" href="#lxml-cssselect" title="Permalink to this headline">¶</a></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
+<a class="reference external" href="objectify.html#objectpath">ObjectPath</a> in the <a class="reference external" href="objectify.html">lxml.objectify</a> module.  The newest child of this family
+is <a class="reference external" href="http://www.w3.org/TR/CSS21/selector.html">CSS selection</a>, which is implemented in the new <tt class="docutils literal"><span class="pre">lxml.cssselect</span></tt> module.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#lxml-cssselect" id="id1">lxml.cssselect</a><ul>
+<li><a class="reference internal" href="#the-cssselector-class" id="id2">The CSSSelector class</a></li>
+<li><a class="reference internal" href="#css-selectors" id="id3">CSS Selectors</a></li>
+<li><a class="reference internal" href="#namespaces" id="id4">Namespaces</a></li>
+<li><a class="reference internal" href="#limitations" id="id5">Limitations</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="the-cssselector-class">
+<h2><a class="toc-backref" href="#id2">The CSSSelector class</a><a class="headerlink" href="#the-cssselector-class" title="Permalink to this headline">¶</a></h2>
+<p>The most important class in the <tt class="docutils literal"><span class="pre">cssselect</span></tt> module is <tt class="docutils literal"><span class="pre">CSSSelector</span></tt>.  It
+provides the same interface as the <a class="reference external" href="xpathxslt.html#xpath">XPath</a> class, but accepts a CSS selector
+expression as input:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.cssselect</span> <span class="kn">import</span> <span class="n">CSSSelector</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">sel</span> <span class="o">=</span> <span class="n">CSSSelector</span><span class="p">(</span><span class="s">&#39;div.content&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">sel</span>  
+<span class="go">&lt;CSSSelector ... for &#39;div.content&#39;&gt;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">sel</span><span class="o">.</span><span class="n">css</span>
+<span class="go">&#39;div.content&#39;</span>
+</pre></div>
+</div>
+<p>The selector actually compiles to XPath, and you can see the
+expression by inspecting the object:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">sel</span><span class="o">.</span><span class="n">path</span>
+<span class="go">&quot;descendant-or-self::div[contains(concat(&#39; &#39;, normalize-space(@class), &#39; &#39;), &#39; content &#39;)]&quot;</span>
+</pre></div>
+</div>
+<p>To use the selector, simply call it with a document or element
+object:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.etree</span> <span class="kn">import</span> <span class="n">fromstring</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">h</span> <span class="o">=</span> <span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&#39;&#39;&lt;div id=&quot;outer&quot;&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;div id=&quot;inner&quot; class=&quot;content body&quot;&gt;</span>
+<span class="gp">... </span><span class="s">      text</span>
+<span class="gp">... </span><span class="s">  &lt;/div&gt;&lt;/div&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;id&#39;</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">sel</span><span class="p">(</span><span class="n">h</span><span class="p">)]</span>
+<span class="go">[&#39;inner&#39;]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="css-selectors">
+<h2><a class="toc-backref" href="#id3">CSS Selectors</a><a class="headerlink" href="#css-selectors" title="Permalink to this headline">¶</a></h2>
+<p>This libraries attempts to implement CSS selectors <a class="reference external" href="http://www.w3.org/TR/2001/CR-css3-selectors-20011113/">as described in
+the w3c specification</a>.  Many of
+the pseudo-classes do not apply in this context, including all
+<a class="reference external" href="http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#dynamic-pseudos">dynamic pseudo-classes</a>.
+In particular these will not be available:</p>
+<ul class="simple">
+<li>link state: <tt class="docutils literal"><span class="pre">:link</span></tt>, <tt class="docutils literal"><span class="pre">:visited</span></tt>, <tt class="docutils literal"><span class="pre">:target</span></tt></li>
+<li>actions: <tt class="docutils literal"><span class="pre">:hover</span></tt>, <tt class="docutils literal"><span class="pre">:active</span></tt>, <tt class="docutils literal"><span class="pre">:focus</span></tt></li>
+<li>UI states: <tt class="docutils literal"><span class="pre">:enabled</span></tt>, <tt class="docutils literal"><span class="pre">:disabled</span></tt>, <tt class="docutils literal"><span class="pre">:indeterminate</span></tt>
+(<tt class="docutils literal"><span class="pre">:checked</span></tt> and <tt class="docutils literal"><span class="pre">:unchecked</span></tt> <em>are</em> available)</li>
+</ul>
+<p>Also, none of the pseudo-elements apply, because the selector only
+returns elements and pseudo-elements select portions of text, like
+<tt class="docutils literal"><span class="pre">::first-line</span></tt>.</p>
+</div>
+<div class="section" id="namespaces">
+<h2><a class="toc-backref" href="#id4">Namespaces</a><a class="headerlink" href="#namespaces" title="Permalink to this headline">¶</a></h2>
+<p>In CSS you can use <tt class="docutils literal"><span class="pre">namespace-prefix|element</span></tt>, similar to
+<tt class="docutils literal"><span class="pre">namespace-prefix:element</span></tt> in an XPath expression.  In fact, it maps
+one-to-one, and the same rules are used to map namespace prefixes to
+namespace URIs.</p>
+</div>
+<div class="section" id="limitations">
+<h2><a class="toc-backref" href="#id5">Limitations</a><a class="headerlink" href="#limitations" title="Permalink to this headline">¶</a></h2>
+<p>These applicable pseudoclasses are not yet implemented:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">:lang(language)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">:root</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">*:first-of-type</span></tt>, <tt class="docutils literal"><span class="pre">*:last-of-type</span></tt>, <tt class="docutils literal"><span class="pre">*:nth-of-type</span></tt>,
+<tt class="docutils literal"><span class="pre">*:nth-last-of-type</span></tt>, <tt class="docutils literal"><span class="pre">*:only-of-type</span></tt>.  All of these work when
+you specify an element type, but not with <tt class="docutils literal"><span class="pre">*</span></tt></li>
+</ul>
+<p>Unlike XPath you cannot provide parameters in your expressions &#8211; all
+expressions are completely static.</p>
+<p>XPath has underspecified string quoting rules (there seems to be no
+string quoting at all), so if you use expressions that contain
+characters that requiring quoting you might have problems with the
+translation from CSS to XPath.</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">lxml.cssselect</a><ul>
+<li><a class="reference internal" href="#the-cssselector-class">The CSSSelector class</a></li>
+<li><a class="reference internal" href="#css-selectors">CSS Selectors</a></li>
+<li><a class="reference internal" href="#namespaces">Namespaces</a></li>
+<li><a class="reference internal" href="#limitations">Limitations</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/cssselect.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/element_classes.html b/doc/sphinx/element_classes.html
new file mode 100644 (file)
index 0000000..6a6a212
--- /dev/null
@@ -0,0 +1,556 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Using custom Element classes in lxml &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="using-custom-element-classes-in-lxml">
+<h1><a class="toc-backref" href="#id2">Using custom Element classes in lxml</a><a class="headerlink" href="#using-custom-element-classes-in-lxml" title="Permalink to this headline">¶</a></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
+default for all elements generated by a specific parser, only for a
+specific tag name in a specific namespace or even for an exact element
+at a specific position in the tree.</p>
+<p>Custom Elements must inherit from the <tt class="docutils literal"><span class="pre">lxml.etree.ElementBase</span></tt> class, which
+provides the Element interface for subclasses:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">honk</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ElementBase</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">def</span> <span class="nf">honking</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>      <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;honking&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="s">&#39;true&#39;</span>
+<span class="gp">... </span>   <span class="n">honking</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">honking</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This defines a new Element class <tt class="docutils literal"><span class="pre">honk</span></tt> with a property <tt class="docutils literal"><span class="pre">honking</span></tt>.</p>
+<p>The following document describes how you can make lxml.etree use these
+custom Element classes.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#using-custom-element-classes-in-lxml" id="id2">Using custom Element classes in lxml</a><ul>
+<li><a class="reference internal" href="#background-on-element-proxies" id="id3">Background on Element proxies</a></li>
+<li><a class="reference internal" href="#element-initialization" id="id4">Element initialization</a></li>
+<li><a class="reference internal" href="#setting-up-a-class-lookup-scheme" id="id5">Setting up a class lookup scheme</a><ul>
+<li><a class="reference internal" href="#default-class-lookup" id="id6">Default class lookup</a></li>
+<li><a class="reference internal" href="#namespace-class-lookup" id="id7">Namespace class lookup</a></li>
+<li><a class="reference internal" href="#attribute-based-lookup" id="id8">Attribute based lookup</a></li>
+<li><a class="reference internal" href="#custom-element-class-lookup" id="id9">Custom element class lookup</a></li>
+<li><a class="reference internal" href="#tree-based-element-class-lookup-in-python" id="id10">Tree based element class lookup in Python</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#generating-xml-with-custom-classes" id="id11">Generating XML with custom classes</a></li>
+<li><a class="reference internal" href="#id1" id="id12">Implementing namespaces</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="background-on-element-proxies">
+<h2><a class="toc-backref" href="#id3">Background on Element proxies</a><a class="headerlink" href="#background-on-element-proxies" title="Permalink to this headline">¶</a></h2>
+<p>Being based on libxml2, lxml.etree holds the entire XML tree in a C
+structure.  To communicate with Python code, it creates Python proxy
+objects for the XML elements on demand.</p>
+<blockquote>
+<div><img alt="proxies.png" src="proxies.png" />
+</div></blockquote>
+<p>The mapping between C elements and Python Element classes is
+completely configurable.  When you ask lxml.etree for an Element by
+using its API, it will instantiate your classes for you.  All you have
+to do is tell lxml which class to use for which kind of Element.  This
+is done through a class lookup scheme, as described in the sections
+below.</p>
+</div>
+<div class="section" id="element-initialization">
+<h2><a class="toc-backref" href="#id4">Element initialization</a><a class="headerlink" href="#element-initialization" title="Permalink to this headline">¶</a></h2>
+<p>There is one thing to know up front.  Element classes <em>must not</em> have
+an <tt class="docutils literal"><span class="pre">__init___</span></tt> or <tt class="docutils literal"><span class="pre">__new__</span></tt> method.  There should not be any
+internal state either, except for the data stored in the underlying
+XML tree.  Element instances are created and garbage collected at
+need, so there is normally no way to predict when and how often a
+proxy is created for them.  Even worse, when the <tt class="docutils literal"><span class="pre">__init__</span></tt> method
+is called, the object is not even initialized yet to represent the XML
+tag, so there is not much use in providing an <tt class="docutils literal"><span class="pre">__init__</span></tt> method in
+subclasses.</p>
+<p>Most use cases will not require any class initialisation or proxy
+state, so you can content yourself with skipping to the next section
+for now.  However, if you really need to set up your element class on
+instantiation, or need a way to persistently store state in the proxy
+instances instead of the XML tree, here is a way to do so.</p>
+<p>There is one important guarantee regarding Element proxies.  Once a
+proxy has been instantiated, it will keep alive as long as there is a
+Python reference to it, and any access to the XML element in the tree
+will return this very instance.  Therefore, if you need to store local
+state in a custom Element class (which is generally discouraged), you
+can do so by keeping the Elements in a tree alive.  If the tree
+doesn&#8217;t change, you can simply do this:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">proxy_cache</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">())</span>
+</pre></div>
+</div>
+<p>or</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">proxy_cache</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">())</span>
+</pre></div>
+</div>
+<p>or use any other suitable container.  Note that you have to keep this
+cache manually up to date if the tree changes, which can get tricky in
+cases.</p>
+<p>For proxy initialisation, ElementBase classes have an <tt class="docutils literal"><span class="pre">_init()</span></tt>
+method that can be overridden, as oppose to the normal <tt class="docutils literal"><span class="pre">__init__()</span></tt>
+method.  It can be used to modify the XML tree, e.g. to construct
+special children or verify and update attributes.</p>
+<p>The semantics of <tt class="docutils literal"><span class="pre">_init()</span></tt> are as follows:</p>
+<ul class="simple">
+<li>It is called once on Element class instantiation time.  That is,
+when a Python representation of the element is created by lxml.  At
+that time, the element object is completely initialized to represent
+a specific XML element within the tree.</li>
+<li>The method has complete access to the XML tree.  Modifications can be done
+in exactly the same way as anywhere else in the program.</li>
+<li>Python representations of elements may be created multiple times during the
+lifetime of an XML element in the underlying C tree.  The <tt class="docutils literal"><span class="pre">_init()</span></tt> code
+provided by subclasses must take special care by itself that multiple
+executions either are harmless or that they are prevented by some kind of
+flag in the XML tree.  The latter can be achieved by modifying an attribute
+value or by removing or adding a specific child node and then verifying this
+before running through the init process.</li>
+<li>Any exceptions raised in <tt class="docutils literal"><span class="pre">_init()</span></tt> will be propagated throught the API
+call that lead to the creation of the Element.  So be careful with the code
+you write here as its exceptions may turn up in various unexpected places.</li>
+</ul>
+</div>
+<div class="section" id="setting-up-a-class-lookup-scheme">
+<h2><a class="toc-backref" href="#id5">Setting up a class lookup scheme</a><a class="headerlink" href="#setting-up-a-class-lookup-scheme" title="Permalink to this headline">¶</a></h2>
+<p>The first thing to do when deploying custom element classes is to register a
+class lookup scheme on a parser.  lxml.etree provides quite a number of
+different schemes that also support class lookup based on namespaces or
+attribute values.  Most lookups support fallback chaining, which allows the
+next lookup mechanism to take over when the previous one fails to find a
+class.</p>
+<p>For example, setting the <tt class="docutils literal"><span class="pre">honk</span></tt> Element as a default element class
+for a parser works as follows:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser_lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementDefaultClassLookup</span><span class="p">(</span><span class="n">element</span><span class="o">=</span><span class="n">honk</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">parser_lookup</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>There is one drawback of the parser based scheme: the <tt class="docutils literal"><span class="pre">Element()</span></tt> factory
+does not know about your specialised parser and creates a new document that
+deploys the default parser:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+<p>You should therefore avoid using this factory function in code that
+uses custom classes.  The <tt class="docutils literal"><span class="pre">makeelement()</span></tt> method of parsers provides
+a simple replacement:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">makeelement</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>If you use a parser at the module level, you can easily redirect a module
+level <tt class="docutils literal"><span class="pre">Element()</span></tt> factory to the parser method by adding code like this:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">module_level_parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">Element</span> <span class="o">=</span> <span class="n">module_level_parser</span><span class="o">.</span><span class="n">makeelement</span>
+</pre></div>
+</div>
+<p>While the <tt class="docutils literal"><span class="pre">XML()</span></tt> and <tt class="docutils literal"><span class="pre">HTML()</span></tt> factories also depend on the default
+parser, you can pass them a different parser as second argument:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;test/&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="go">False</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;test/&gt;&quot;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>Whenever you create a document with a parser, it will inherit the lookup
+scheme and all subsequent element instantiations for this document will use
+it:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&lt;test/&gt;&quot;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="s">&quot;subel&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>For testing code in the Python interpreter and for small projects, you
+may also consider setting a lookup scheme on the default parser.  To
+avoid interfering with other modules, however, it is usually a better
+idea to use a dedicated parser for each module (or a parser pool when
+using threads) and then register the required lookup scheme only for
+this parser.</p>
+<div class="section" id="default-class-lookup">
+<h3><a class="toc-backref" href="#id6">Default class lookup</a><a class="headerlink" href="#default-class-lookup" title="Permalink to this headline">¶</a></h3>
+<p>This is the most simple lookup mechanism.  It always returns the default
+element class.  Consequently, no further fallbacks are supported, but this
+scheme is a nice fallback for other custom lookup mechanisms.</p>
+<p>Usage:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementDefaultClassLookup</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Note that the default for new parsers is to use the global fallback, which is
+also the default lookup (if not configured otherwise).</p>
+<p>To change the default element implementation, you can pass your new class to
+the constructor.  While it accepts classes for <tt class="docutils literal"><span class="pre">element</span></tt>, <tt class="docutils literal"><span class="pre">comment</span></tt> and
+<tt class="docutils literal"><span class="pre">pi</span></tt> nodes, most use cases will only override the element class:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">makeelement</span><span class="p">(</span><span class="s">&quot;myelement&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="go">False</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementDefaultClassLookup</span><span class="p">(</span><span class="n">element</span><span class="o">=</span><span class="n">honk</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">makeelement</span><span class="p">(</span><span class="s">&quot;myelement&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">honk</span><span class="p">))</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span><span class="o">.</span><span class="n">honking</span>
+<span class="go">False</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">makeelement</span><span class="p">(</span><span class="s">&quot;myelement&quot;</span><span class="p">,</span> <span class="n">honking</span><span class="o">=</span><span class="s">&#39;true&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">el</span><span class="p">)</span>
+<span class="go">b&#39;&lt;myelement honking=&quot;true&quot;/&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span><span class="o">.</span><span class="n">honking</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="namespace-class-lookup">
+<h3><a class="toc-backref" href="#id7">Namespace class lookup</a><a class="headerlink" href="#namespace-class-lookup" title="Permalink to this headline">¶</a></h3>
+<p>This is an advanced lookup mechanism that supports namespace/tag-name specific
+element classes.  You can select it by calling:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementNamespaceClassLookup</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>See the separate section on <a class="reference external" href="#implementing-namespaces">implementing namespaces</a> below to learn how to
+make use of it.</p>
+<p>This scheme supports a fallback mechanism that is used in the case where the
+namespace is not found or no class was registered for the element name.
+Normally, the default class lookup is used here.  To change it, pass the
+desired fallback lookup scheme to the constructor:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">fallback</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementDefaultClassLookup</span><span class="p">(</span><span class="n">element</span><span class="o">=</span><span class="n">honk</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementNamespaceClassLookup</span><span class="p">(</span><span class="n">fallback</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="attribute-based-lookup">
+<h3><a class="toc-backref" href="#id8">Attribute based lookup</a><a class="headerlink" href="#attribute-based-lookup" title="Permalink to this headline">¶</a></h3>
+<p>This scheme uses a mapping from attribute values to classes.  An attribute
+name is set at initialisation time and is then used to find the corresponding
+value in a dictionary.  It is set up as follows:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">id_class_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;1234&#39;</span> <span class="p">:</span> <span class="n">honk</span><span class="p">}</span> <span class="c"># maps attribute values to classes</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">AttributeBasedElementClassLookup</span><span class="p">(</span>
+<span class="gp">... </span>                                     <span class="s">&#39;id&#39;</span><span class="p">,</span> <span class="n">id_class_mapping</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This class uses its fallback if the attribute is not found or its value is not
+in the mapping.  Normally, the default class lookup is used here.  If you want
+to use the namespace lookup, for example, you can use this code:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">fallback</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementNamespaceClassLookup</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">AttributeBasedElementClassLookup</span><span class="p">(</span>
+<span class="gp">... </span>                      <span class="s">&#39;id&#39;</span><span class="p">,</span> <span class="n">id_class_mapping</span><span class="p">,</span> <span class="n">fallback</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="custom-element-class-lookup">
+<h3><a class="toc-backref" href="#id9">Custom element class lookup</a><a class="headerlink" href="#custom-element-class-lookup" title="Permalink to this headline">¶</a></h3>
+<p>This is the most customisable way of finding element classes on a per-element
+basis.  It allows you to implement a custom lookup scheme in a subclass:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyLookup</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">CustomElementClassLookup</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">lookup</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node_type</span><span class="p">,</span> <span class="n">document</span><span class="p">,</span> <span class="n">namespace</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="n">honk</span> <span class="c"># be a bit more selective here ...</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">MyLookup</span><span class="p">())</span>
+</pre></div>
+</div>
+<p>The <tt class="docutils literal"><span class="pre">.lookup()</span></tt> method must return either None (which triggers the
+fallback mechanism) or a subclass of <tt class="docutils literal"><span class="pre">lxml.etree.ElementBase</span></tt>.  It
+can take any decision it wants based on the node type (one of
+&#8220;element&#8221;, &#8220;comment&#8221;, &#8220;PI&#8221;, &#8220;entity&#8221;), the XML document of the
+element, or its namespace or tag name.</p>
+</div>
+<div class="section" id="tree-based-element-class-lookup-in-python">
+<h3><a class="toc-backref" href="#id10">Tree based element class lookup in Python</a><a class="headerlink" href="#tree-based-element-class-lookup-in-python" title="Permalink to this headline">¶</a></h3>
+<p>Taking more elaborate decisions than allowed by the custom scheme is
+difficult to achieve in pure Python, as it results in a
+chicken-and-egg problem.  It would require access to the tree - before
+the elements in the tree have been instantiated as Python Element
+proxies.</p>
+<p>Luckily, there is a way to do this.  The <tt class="docutils literal"><span class="pre">PythonElementClassLookup</span></tt>
+works similar to the custom lookup scheme:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyLookup</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">PythonElementClassLookup</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">lookup</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">document</span><span class="p">,</span> <span class="n">element</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="n">MyElementClass</span> <span class="c"># defined elsewhere</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">MyLookup</span><span class="p">())</span>
+</pre></div>
+</div>
+<p>As before, the first argument to the <tt class="docutils literal"><span class="pre">lookup()</span></tt> method is the opaque
+document instance that contains the Element.  The second arguments is a
+lightweight Element proxy implementation that is only valid during the lookup.
+Do not try to keep a reference to it.  Once the lookup is finished, the proxy
+will become invalid.  You will get an <tt class="docutils literal"><span class="pre">AssertionError</span></tt> if you access any of
+the properties or methods outside the scope of the lookup call where they were
+instantiated.</p>
+<p>During the lookup, the element object behaves mostly like a normal Element
+instance.  It provides the properties <tt class="docutils literal"><span class="pre">tag</span></tt>, <tt class="docutils literal"><span class="pre">text</span></tt>, <tt class="docutils literal"><span class="pre">tail</span></tt> etc. and
+supports indexing, slicing and the <tt class="docutils literal"><span class="pre">getchildren()</span></tt>, <tt class="docutils literal"><span class="pre">getparent()</span></tt>
+etc. methods.  It does <em>not</em> support iteration, nor does it support any kind
+of modification.  All of its properties are read-only and it cannot be removed
+or inserted into other trees.  You can use it as a starting point to freely
+traverse the tree and collect any kind of information that its elements
+provide.  Once you have taken the decision which class to use for this
+element, you can simply return it and have lxml take care of cleaning up the
+instantiated proxy classes.</p>
+<p>Sidenote: this lookup scheme originally lived in a separate module called
+<tt class="docutils literal"><span class="pre">lxml.pyclasslookup</span></tt>.</p>
+</div>
+</div>
+<div class="section" id="generating-xml-with-custom-classes">
+<h2><a class="toc-backref" href="#id11">Generating XML with custom classes</a><a class="headerlink" href="#generating-xml-with-custom-classes" title="Permalink to this headline">¶</a></h2>
+<p>Up to lxml 2.1, you could not instantiate proxy classes yourself.
+Only lxml.etree could do that when creating an object representation
+of an existing XML element.  Since lxml 2.2, however, instantiating
+this class will simply create a new Element:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">honk</span><span class="p">(</span><span class="n">honking</span> <span class="o">=</span> <span class="s">&#39;true&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;honk&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span><span class="o">.</span><span class="n">honking</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>Note, however, that the proxy you create here will be garbage
+collected just like any other proxy.  You can therefore not count on
+lxml.etree using the same class that you instantiated when you access
+this Element a second time after letting its reference go.  You should
+therefore always use a corresponding class lookup scheme that returns
+your Element proxy classes for the elements that they create.  The
+<tt class="docutils literal"><span class="pre">ElementNamespaceClassLookup</span></tt> is generally a good match.</p>
+<p>You can use custom Element classes to quickly create XML fragments:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">hale</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ElementBase</span><span class="p">):</span> <span class="k">pass</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">bopp</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ElementBase</span><span class="p">):</span> <span class="k">pass</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">hale</span><span class="p">(</span> <span class="s">&quot;some &quot;</span><span class="p">,</span> <span class="n">honk</span><span class="p">(</span><span class="n">honking</span> <span class="o">=</span> <span class="s">&#39;true&#39;</span><span class="p">),</span> <span class="n">bopp</span><span class="p">,</span> <span class="s">&quot; text&quot;</span> <span class="p">)</span>
+
+<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">el</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">))</span>
+<span class="go">&lt;hale&gt;some &lt;honk honking=&quot;true&quot;/&gt;&lt;bopp/&gt; text&lt;/hale&gt;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="id1">
+<h2><a class="toc-backref" href="#id12">Implementing namespaces</a><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<p>lxml allows you to implement namespaces, in a rather literal sense.  After
+setting up the namespace class lookup mechanism as described above, you can
+build a new element namespace (or retrieve an existing one) by calling the
+<tt class="docutils literal"><span class="pre">get_namespace(uri)</span></tt> method of the lookup:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementNamespaceClassLookup</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespace</span> <span class="o">=</span> <span class="n">lookup</span><span class="o">.</span><span class="n">get_namespace</span><span class="p">(</span><span class="s">&#39;http://hui.de/honk&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>and then register the new element type with that namespace, say, under the tag
+name <tt class="docutils literal"><span class="pre">honk</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">namespace</span><span class="p">[</span><span class="s">&#39;honk&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">honk</span>
+</pre></div>
+</div>
+<p>If you have many Element classes declared in one module, and they are
+all named like the elements they create, you can simply use
+<tt class="docutils literal"><span class="pre">namespace.update(vars())</span></tt> at the end of your module to declare them
+automatically.  The implementation is smart enough to ignore
+everything that is not an Element class.</p>
+<p>After this, you create and use your XML elements through the normal API of
+lxml:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml</span> <span class="o">=</span> <span class="s">&#39;&lt;honk xmlns=&quot;http://hui.de/honk&quot; honking=&quot;true&quot;/&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">honk_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>The same works when creating elements by hand:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">honk_element</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">makeelement</span><span class="p">(</span><span class="s">&#39;{http://hui.de/honk}honk&#39;</span><span class="p">,</span>
+<span class="gp">... </span>                                  <span class="n">honking</span><span class="o">=</span><span class="s">&#39;true&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>Essentially, what this allows you to do, is to give Elements a custom API
+based on their namespace and tag name.</p>
+<p>A somewhat related topic are <a class="reference external" href="extensions.html">extension functions</a> which use a similar
+mechanism for registering extension functions in XPath and XSLT.</p>
+<p>In the setup example above, we associated the <tt class="docutils literal"><span class="pre">honk</span></tt> Element class
+only with the &#8216;honk&#8217; element.  If an XML tree contains different
+elements in the same namespace, they do not pick up the same
+implementation:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml</span> <span class="o">=</span> <span class="s">&#39;&lt;honk xmlns=&quot;http://hui.de/honk&quot; honking=&quot;true&quot;&gt;&lt;bla/&gt;&lt;/honk&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">honk_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+<span class="c">...</span>
+<span class="gr">AttributeError</span>: <span class="n">&#39;lxml.etree._Element&#39; object has no attribute &#39;honking&#39;</span>
+</pre></div>
+</div>
+<p>You can therefore provide one implementation per element name in each
+namespace and have lxml select the right one on the fly.  If you want one
+element implementation per namespace (ignoring the element name) or prefer
+having a common class for most elements except a few, you can specify a
+default implementation for an entire namespace by registering that class with
+the empty element name (None).</p>
+<p>You may consider following an object oriented approach here.  If you build a
+class hierarchy of element classes, you can also implement a base class for a
+namespace that is used if no specific element class is provided.  Again, you
+can just pass None as an element name:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">HonkNSElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ElementBase</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">def</span> <span class="nf">honk</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>      <span class="k">return</span> <span class="s">&quot;HONK&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespace</span><span class="p">[</span><span class="bp">None</span><span class="p">]</span> <span class="o">=</span> <span class="n">HonkNSElement</span> <span class="c"># default Element for namespace</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">HonkElement</span><span class="p">(</span><span class="n">HonkNSElement</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">def</span> <span class="nf">honking</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>      <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;honking&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="s">&#39;true&#39;</span>
+<span class="gp">... </span>   <span class="n">honking</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">honking</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespace</span><span class="p">[</span><span class="s">&#39;honk&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">HonkElement</span> <span class="c"># Element for specific tag</span>
+</pre></div>
+</div>
+<p>Now you can rely on lxml to always return objects of type HonkNSElement or its
+subclasses for elements of this namespace:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml</span> <span class="o">=</span> <span class="s">&#39;&lt;honk xmlns=&quot;http://hui.de/honk&quot; honking=&quot;true&quot;&gt;&lt;bla/&gt;&lt;/honk&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">honk_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">honk_element</span><span class="p">))</span>
+<span class="go">&lt;class &#39;HonkElement&#39;&gt;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]))</span>
+<span class="go">&lt;class &#39;HonkNSElement&#39;&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="o">.</span><span class="n">honk</span><span class="p">())</span>
+<span class="go">HONK</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honk</span><span class="p">())</span>
+<span class="go">HONK</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">honk_element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honking</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+<span class="c">...</span>
+<span class="gr">AttributeError</span>: <span class="n">&#39;HonkNSElement&#39; object has no attribute &#39;honking&#39;</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Using custom Element classes in lxml</a><ul>
+<li><a class="reference internal" href="#background-on-element-proxies">Background on Element proxies</a></li>
+<li><a class="reference internal" href="#element-initialization">Element initialization</a></li>
+<li><a class="reference internal" href="#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a><ul>
+<li><a class="reference internal" href="#default-class-lookup">Default class lookup</a></li>
+<li><a class="reference internal" href="#namespace-class-lookup">Namespace class lookup</a></li>
+<li><a class="reference internal" href="#attribute-based-lookup">Attribute based lookup</a></li>
+<li><a class="reference internal" href="#custom-element-class-lookup">Custom element class lookup</a></li>
+<li><a class="reference internal" href="#tree-based-element-class-lookup-in-python">Tree based element class lookup in Python</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#generating-xml-with-custom-classes">Generating XML with custom classes</a></li>
+<li><a class="reference internal" href="#id1">Implementing namespaces</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/element_classes.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/elementsoup.html b/doc/sphinx/elementsoup.html
new file mode 100644 (file)
index 0000000..82cee04
--- /dev/null
@@ -0,0 +1,271 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>BeautifulSoup Parser &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="beautifulsoup-parser">
+<h1><a class="toc-backref" href="#id1">BeautifulSoup Parser</a><a class="headerlink" href="#beautifulsoup-parser" title="Permalink to this headline">¶</a></h1>
+<p><a class="reference external" href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a> is a Python package that parses broken HTML, just like
+lxml supports it based on the parser of libxml2.  BeautifulSoup uses a
+different parsing approach.  It is not a real HTML parser but uses
+regular expressions to dive through tag soup.  It is therefore more
+forgiving in some cases and less good in others.  It is not uncommon
+that lxml/libxml2 parses and fixes broken HTML better, but
+BeautifulSoup has superiour <a class="reference external" href="http://www.crummy.com/software/BeautifulSoup/documentation.html#Beautiful%20Soup%20Gives%20You%20Unicode%2C%20Dammit">support for encoding detection</a>.  It
+very much depends on the input which parser works better.</p>
+<p>To prevent users from having to choose their parser library in
+advance, lxml can interface to the parsing capabilities of
+BeautifulSoup through the <tt class="docutils literal"><span class="pre">lxml.html.soupparser</span></tt> module.  It
+provides three main functions: <tt class="docutils literal"><span class="pre">fromstring()</span></tt> and <tt class="docutils literal"><span class="pre">parse()</span></tt> to
+parse a string or file using BeautifulSoup into an <tt class="docutils literal"><span class="pre">lxml.html</span></tt>
+document, and <tt class="docutils literal"><span class="pre">convert_tree()</span></tt> to convert an existing BeautifulSoup
+tree into a list of top-level Elements.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#beautifulsoup-parser" id="id1">BeautifulSoup Parser</a><ul>
+<li><a class="reference internal" href="#parsing-with-the-soupparser" id="id2">Parsing with the soupparser</a></li>
+<li><a class="reference internal" href="#entity-handling" id="id3">Entity handling</a></li>
+<li><a class="reference internal" href="#using-soupparser-as-a-fallback" id="id4">Using soupparser as a fallback</a></li>
+<li><a class="reference internal" href="#using-only-the-encoding-detection" id="id5">Using only the encoding detection</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="parsing-with-the-soupparser">
+<h2><a class="toc-backref" href="#id2">Parsing with the soupparser</a><a class="headerlink" href="#parsing-with-the-soupparser" title="Permalink to this headline">¶</a></h2>
+<p>The functions <tt class="docutils literal"><span class="pre">fromstring()</span></tt> and <tt class="docutils literal"><span class="pre">parse()</span></tt> behave as known from
+ElementTree.  The first returns a root Element, the latter returns an
+ElementTree.</p>
+<p>There is also a legacy module called <tt class="docutils literal"><span class="pre">lxml.html.ElementSoup</span></tt>, which
+mimics the interface provided by ElementTree&#8217;s own <a class="reference external" href="http://effbot.org/zone/element-soup.htm">ElementSoup</a>
+module.  Note that the <tt class="docutils literal"><span class="pre">soupparser</span></tt> module was added in lxml 2.0.3.
+Previous versions of lxml 2.0.x only have the <tt class="docutils literal"><span class="pre">ElementSoup</span></tt> module.</p>
+<p>Here is a document full of tag soup, similar to, but not quite like, HTML:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tag_soup</span> <span class="o">=</span> <span class="s">&#39;&lt;meta&gt;&lt;head&gt;&lt;title&gt;Hello&lt;/head&gt;&lt;body onload=crash()&gt;Hi all&lt;p&gt;&#39;</span>
+</pre></div>
+</div>
+<p>all you need to do is pass it to the <tt class="docutils literal"><span class="pre">fromstring()</span></tt> function:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html.soupparser</span> <span class="kn">import</span> <span class="n">fromstring</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">fromstring</span><span class="p">(</span><span class="n">tag_soup</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>To see what we have here, you can serialise it:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.etree</span> <span class="kn">import</span> <span class="n">tostring</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</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;html&gt;</span>
+<span class="go">  &lt;meta/&gt;</span>
+<span class="go">  &lt;head&gt;</span>
+<span class="go">    &lt;title&gt;Hello&lt;/title&gt;</span>
+<span class="go">  &lt;/head&gt;</span>
+<span class="go">  &lt;body onload=&quot;crash()&quot;&gt;Hi all&lt;p/&gt;&lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>Not quite what you&#8217;d expect from an HTML page, but, well, it was broken
+already, right?  BeautifulSoup did its best, and so now it&#8217;s a tree.</p>
+<p>To control which Element implementation is used, you can pass a
+<tt class="docutils literal"><span class="pre">makeelement</span></tt> factory function to <tt class="docutils literal"><span class="pre">parse()</span></tt> and <tt class="docutils literal"><span class="pre">fromstring()</span></tt>.
+By default, this is based on the HTML parser defined in <tt class="docutils literal"><span class="pre">lxml.html</span></tt>.</p>
+<p>For a quick comparison, libxml2 2.6.32 parses the same tag soup as
+follows.  The main difference is that libxml2 tries harder to adhere
+to the structure of an HTML document and moves misplaced tags where
+they (likely) belong.  Note, however, that the result can vary between
+parser versions.</p>
+<div class="highlight-html"><div class="highlight"><pre><span class="nt">&lt;html&gt;</span>
+  <span class="nt">&lt;head&gt;</span>
+    <span class="nt">&lt;meta/&gt;</span>
+    <span class="nt">&lt;title&gt;</span>Hello<span class="nt">&lt;/title&gt;</span>
+  <span class="nt">&lt;/head&gt;</span>
+  <span class="nt">&lt;body&gt;</span>
+    <span class="nt">&lt;p&gt;</span>Hi all<span class="nt">&lt;/p&gt;</span>
+    <span class="nt">&lt;p/&gt;</span>
+  <span class="nt">&lt;/body&gt;</span>
+<span class="nt">&lt;/html&gt;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="entity-handling">
+<h2><a class="toc-backref" href="#id3">Entity handling</a><a class="headerlink" href="#entity-handling" title="Permalink to this headline">¶</a></h2>
+<p>By default, the BeautifulSoup parser also replaces the entities it
+finds by their character equivalent.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tag_soup</span> <span class="o">=</span> <span class="s">&#39;&lt;body&gt;&amp;copy;&amp;euro;&amp;#45;&amp;#245;&amp;#445;&lt;p&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span> <span class="o">=</span> <span class="n">fromstring</span><span class="p">(</span><span class="n">tag_soup</span><span class="p">)</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;.//body&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span><span class="o">.</span><span class="n">text</span>
+<span class="go">u&#39;\xa9\u20ac-\xf5\u01bd&#39;</span>
+</pre></div>
+</div>
+<p>If you want them back on the way out, you can just serialise with the
+default encoding, which is &#8216;US-ASCII&#8217;.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tostring</span><span class="p">(</span><span class="n">body</span><span class="p">)</span>
+<span class="go">&#39;&lt;body&gt;&amp;#169;&amp;#8364;-&amp;#245;&amp;#445;&lt;p/&gt;&lt;/body&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tostring</span><span class="p">(</span><span class="n">body</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">)</span>
+<span class="go">&#39;&lt;body&gt;&amp;#169;&amp;#8364;-&amp;#245;&amp;#445;&lt;p&gt;&lt;/p&gt;&lt;/body&gt;&#39;</span>
+</pre></div>
+</div>
+<p>Any other encoding will output the respective byte sequences.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tostring</span><span class="p">(</span><span class="n">body</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s">&quot;utf-8&quot;</span><span class="p">)</span>
+<span class="go">&#39;&lt;body&gt;\xc2\xa9\xe2\x82\xac-\xc3\xb5\xc6\xbd&lt;p/&gt;&lt;/body&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tostring</span><span class="p">(</span><span class="n">body</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s">&quot;utf-8&quot;</span><span class="p">)</span>
+<span class="go">&#39;&lt;body&gt;\xc2\xa9\xe2\x82\xac-\xc3\xb5\xc6\xbd&lt;p&gt;&lt;/p&gt;&lt;/body&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tostring</span><span class="p">(</span><span class="n">body</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">)</span>
+<span class="go">u&#39;&lt;body&gt;\xa9\u20ac-\xf5\u01bd&lt;p/&gt;&lt;/body&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tostring</span><span class="p">(</span><span class="n">body</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">)</span>
+<span class="go">u&#39;&lt;body&gt;\xa9\u20ac-\xf5\u01bd&lt;p&gt;&lt;/p&gt;&lt;/body&gt;&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="using-soupparser-as-a-fallback">
+<h2><a class="toc-backref" href="#id4">Using soupparser as a fallback</a><a class="headerlink" href="#using-soupparser-as-a-fallback" title="Permalink to this headline">¶</a></h2>
+<p>The downside of using this parser is that it is <a class="reference external" href="http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/">much slower</a> than
+the HTML parser of lxml.  So if performance matters, you might want to
+consider using <tt class="docutils literal"><span class="pre">soupparser</span></tt> only as a fallback for certain cases.</p>
+<p>One common problem of lxml&#8217;s parser is that it might not get the
+encoding right in cases where the document contains a <tt class="docutils literal"><span class="pre">&lt;meta&gt;</span></tt> tag
+at the wrong place.  In this case, you can exploit the fact that lxml
+serialises much faster than most other HTML libraries for Python.
+Just serialise the document to unicode and if that gives you an
+exception, re-parse it with BeautifulSoup to see if that works
+better.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tag_soup</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;meta http-equiv=&quot;Content-Type&quot;</span>
+<span class="gp">... </span><span class="s">      content=&quot;text/html;charset=utf-8&quot; /&gt;</span>
+<span class="gp">... </span><span class="s">&lt;html&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;head&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;title&gt;Hello W</span><span class="se">\xc3\xb6</span><span class="s">rld!&lt;/title&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/head&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;body&gt;Hi all&lt;/body&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/html&gt;&#39;&#39;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">lxml.html</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">lxml.html.soupparser</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">tag_soup</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">try</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="n">ignore</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">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">)</span>
+<span class="gp">... </span><span class="k">except</span> <span class="ne">UnicodeDecodeError</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="n">root</span> <span class="o">=</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">soupparser</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">tag_soup</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="using-only-the-encoding-detection">
+<h2><a class="toc-backref" href="#id5">Using only the encoding detection</a><a class="headerlink" href="#using-only-the-encoding-detection" title="Permalink to this headline">¶</a></h2>
+<p>If you prefer a &#8216;real&#8217; (and fast) HTML parser instead of the regular
+expression based one in BeautifulSoup, you can still benefit from
+BeautifulSoup&#8217;s <a class="reference external" href="http://www.crummy.com/software/BeautifulSoup/documentation.html#Beautiful%20Soup%20Gives%20You%20Unicode%2C%20Dammit">support for encoding detection</a> in the
+<tt class="docutils literal"><span class="pre">UnicodeDammit</span></tt> class.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">BeautifulSoup</span> <span class="kn">import</span> <span class="n">UnicodeDammit</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">decode_html</span><span class="p">(</span><span class="n">html_string</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="n">converted</span> <span class="o">=</span> <span class="n">UnicodeDammit</span><span class="p">(</span><span class="n">html_string</span><span class="p">,</span> <span class="n">isHTML</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="k">if</span> <span class="ow">not</span> <span class="n">converted</span><span class="o">.</span><span class="n">unicode</span><span class="p">:</span>
+<span class="gp">... </span>        <span class="k">raise</span> <span class="ne">UnicodeDecodeError</span><span class="p">(</span>
+<span class="gp">... </span>            <span class="s">&quot;Failed to detect encoding, tried [</span><span class="si">%s</span><span class="s">]&quot;</span><span class="p">,</span>
+<span class="gp">... </span>            <span class="s">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">converted</span><span class="o">.</span><span class="n">triedEncodings</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="c"># print converted.originalEncoding</span>
+<span class="gp">... </span>    <span class="k">return</span> <span class="n">converted</span><span class="o">.</span><span class="n">unicode</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">decode_html</span><span class="p">(</span><span class="n">tag_soup</span><span class="p">))</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">BeautifulSoup Parser</a><ul>
+<li><a class="reference internal" href="#parsing-with-the-soupparser">Parsing with the soupparser</a></li>
+<li><a class="reference internal" href="#entity-handling">Entity handling</a></li>
+<li><a class="reference internal" href="#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li>
+<li><a class="reference internal" href="#using-only-the-encoding-detection">Using only the encoding detection</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/elementsoup.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/extensions.html b/doc/sphinx/extensions.html
new file mode 100644 (file)
index 0000000..f8f0b78
--- /dev/null
@@ -0,0 +1,620 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Python extensions for XPath and XSLT &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="python-extensions-for-xpath-and-xslt">
+<h1><a class="toc-backref" href="#id1">Python extensions for XPath and XSLT</a><a class="headerlink" href="#python-extensions-for-xpath-and-xslt" title="Permalink to this headline">¶</a></h1>
+<p>This document describes how to use Python extension functions in XPath
+and XSLT like this:</p>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;xsl:value-of</span> <span class="na">select=</span><span class="s">&quot;f:myPythonFunction(.//sometag)&quot;</span> <span class="nt">/&gt;</span>
+</pre></div>
+</div>
+<p>and extension elements in XSLT as in the following example:</p>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;xsl:template</span> <span class="na">match=</span><span class="s">&quot;*&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;my:python-extension&gt;</span>
+        <span class="nt">&lt;some-content</span> <span class="nt">/&gt;</span>
+    <span class="nt">&lt;/my:python-extension&gt;</span>
+<span class="nt">&lt;/xsl:template&gt;</span>
+</pre></div>
+</div>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#python-extensions-for-xpath-and-xslt" id="id1">Python extensions for XPath and XSLT</a><ul>
+<li><a class="reference internal" href="#xpath-extension-functions" id="id2">XPath Extension functions</a><ul>
+<li><a class="reference internal" href="#the-functionnamespace" id="id3">The FunctionNamespace</a></li>
+<li><a class="reference internal" href="#global-prefix-assignment" id="id4">Global prefix assignment</a></li>
+<li><a class="reference internal" href="#the-xpath-context" id="id5">The XPath context</a></li>
+<li><a class="reference internal" href="#evaluators-and-xslt" id="id6">Evaluators and XSLT</a></li>
+<li><a class="reference internal" href="#evaluator-local-extensions" id="id7">Evaluator-local extensions</a></li>
+<li><a class="reference internal" href="#what-to-return-from-a-function" id="id8">What to return from a function</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#xslt-extension-elements" id="id9">XSLT extension elements</a><ul>
+<li><a class="reference internal" href="#declaring-extension-elements" id="id10">Declaring extension elements</a></li>
+<li><a class="reference internal" href="#applying-xsl-templates" id="id11">Applying XSL templates</a></li>
+<li><a class="reference internal" href="#working-with-read-only-elements" id="id12">Working with read-only elements</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="xpath-extension-functions">
+<h2><a class="toc-backref" href="#id2">XPath Extension functions</a><a class="headerlink" href="#xpath-extension-functions" title="Permalink to this headline">¶</a></h2>
+<p>Here is how an extension function looks like.  As the first argument,
+it always receives a context object (see below).  The other arguments
+are provided by the respective call in the XPath expression, one in
+the following examples.  Any number of arguments is allowed:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">hello</span><span class="p">(</span><span class="n">dummy</span><span class="p">,</span> <span class="n">a</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">return</span> <span class="s">&quot;Hello </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">a</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">ola</span><span class="p">(</span><span class="n">dummy</span><span class="p">,</span> <span class="n">a</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">return</span> <span class="s">&quot;Ola </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">a</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">loadsofargs</span><span class="p">(</span><span class="n">dummy</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">return</span> <span class="s">&quot;Got </span><span class="si">%d</span><span class="s"> arguments.&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
+</pre></div>
+</div>
+<div class="section" id="the-functionnamespace">
+<h3><a class="toc-backref" href="#id3">The FunctionNamespace</a><a class="headerlink" href="#the-functionnamespace" title="Permalink to this headline">¶</a></h3>
+<p>In order to use a function in XPath or XSLT, it needs to have a
+(namespaced) name by which it can be called during evaluation.  This
+is done using the FunctionNamespace class.  For simplicity, we choose
+the empty namespace (None):</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&#39;hello&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">hello</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&#39;countargs&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">loadsofargs</span>
+</pre></div>
+</div>
+<p>This registers the function <cite>hello</cite> with the name <cite>hello</cite> in the default
+namespace (None), and the function <cite>loadsofargs</cite> with the name <cite>countargs</cite>.
+Now we&#8217;re going to create a document that we can run XPath expressions
+against:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;b&gt;Haegar&lt;/b&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Done. Now we can have XPath expressions call our new function:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;hello(&#39;world&#39;)&quot;</span><span class="p">))</span>
+<span class="go">Hello world</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;hello(local-name(*))&#39;</span><span class="p">))</span>
+<span class="go">Hello b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;hello(string(b))&#39;</span><span class="p">))</span>
+<span class="go">Hello Haegar</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;countargs(., b, ./*)&#39;</span><span class="p">))</span>
+<span class="go">Got 3 arguments.</span>
+</pre></div>
+</div>
+<p>Note how we call both a Python function (<cite>hello</cite>) and an XPath built-in
+function (<cite>string</cite>) in exactly the same way.  Normally, however, you would
+want to separate the two in different namespaces.  The FunctionNamespace class
+allows you to do this:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="s">&#39;http://mydomain.org/myfunctions&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&#39;hello&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">hello</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">prefixmap</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;f&#39;</span> <span class="p">:</span> <span class="s">&#39;http://mydomain.org/myfunctions&#39;</span><span class="p">}</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;f:hello(local-name(*))&#39;</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="n">prefixmap</span><span class="p">))</span>
+<span class="go">Hello b</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="global-prefix-assignment">
+<h3><a class="toc-backref" href="#id4">Global prefix assignment</a><a class="headerlink" href="#global-prefix-assignment" title="Permalink to this headline">¶</a></h3>
+<p>In the last example, you had to specify a prefix for the function namespace.
+If you always use the same prefix for a function namespace, you can also
+register it with the namespace:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="s">&#39;http://mydomain.org/myother/functions&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="s">&#39;es&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&#39;hello&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">ola</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;es:hello(local-name(*))&#39;</span><span class="p">))</span>
+<span class="go">Ola b</span>
+</pre></div>
+</div>
+<p>This is a global assignment, so take care not to assign the same prefix to
+more than one namespace.  The resulting behaviour in that case is completely
+undefined.  It is always a good idea to consistently use the same meaningful
+prefix for each namespace throughout your application.</p>
+<p>The prefix assignment only works with functions and FunctionNamespace objects,
+not with the general Namespace object that registers element classes.  The
+reasoning is that elements in lxml do not care about prefixes anyway, so it
+would rather complicate things than be of any help.</p>
+</div>
+<div class="section" id="the-xpath-context">
+<h3><a class="toc-backref" href="#id5">The XPath context</a><a class="headerlink" href="#the-xpath-context" title="Permalink to this headline">¶</a></h3>
+<p>Functions get a context object as first parameter.  In lxml 1.x, this value
+was None, but since lxml 2.0 it provides two properties: <tt class="docutils literal"><span class="pre">eval_context</span></tt> and
+<tt class="docutils literal"><span class="pre">context_node</span></tt>.  The context node is the Element where the current function
+is called:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">print_tag</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">nodes</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">context_node</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="p">[</span> <span class="n">n</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">nodes</span> <span class="p">]))</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="s">&#39;http://mydomain.org/printtag&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="s">&quot;pt&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&quot;print_tag&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">print_tag</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ignore</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;//*[pt:print_tag(.//*)]&quot;</span><span class="p">)</span>
+<span class="go">a: [&#39;b&#39;]</span>
+<span class="go">b: []</span>
+</pre></div>
+</div>
+<p>The <tt class="docutils literal"><span class="pre">eval_context</span></tt> is a dictionary that is local to the evaluation.  It
+allows functions to keep state:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">print_context</span><span class="p">(</span><span class="n">context</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="n">context</span><span class="o">.</span><span class="n">eval_context</span><span class="p">[</span><span class="n">context</span><span class="o">.</span><span class="n">context_node</span><span class="o">.</span><span class="n">tag</span><span class="p">]</span> <span class="o">=</span> <span class="s">&quot;done&quot;</span>
+<span class="gp">... </span>    <span class="n">entries</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">eval_context</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
+<span class="gp">... </span>    <span class="n">entries</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="n">entries</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&quot;print_context&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">print_context</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ignore</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;//*[pt:print_context()]&quot;</span><span class="p">)</span>
+<span class="go">[(&#39;a&#39;, &#39;done&#39;)]</span>
+<span class="go">[(&#39;a&#39;, &#39;done&#39;), (&#39;b&#39;, &#39;done&#39;)]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="evaluators-and-xslt">
+<h3><a class="toc-backref" href="#id6">Evaluators and XSLT</a><a class="headerlink" href="#evaluators-and-xslt" title="Permalink to this headline">¶</a></h3>
+<p>Extension functions work for all ways of evaluating XPath expressions and for
+XSL transformations:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<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">&#39;es:hello(local-name(/a))&#39;</span><span class="p">))</span>
+<span class="go">Ola a</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespaces</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;f&#39;</span> <span class="p">:</span> <span class="s">&#39;http://mydomain.org/myfunctions&#39;</span><span class="p">}</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="n">namespaces</span><span class="p">)</span>
+<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">&#39;f:hello(local-name(/a))&#39;</span><span class="p">))</span>
+<span class="go">Hello a</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xslt</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span>
+<span class="gp">... </span><span class="s">  &lt;stylesheet version=&quot;1.0&quot;</span>
+<span class="gp">... </span><span class="s">         xmlns=&quot;http://www.w3.org/1999/XSL/Transform&quot;</span>
+<span class="gp">... </span><span class="s">         xmlns:es=&quot;http://mydomain.org/myother/functions&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;output method=&quot;text&quot; encoding=&quot;ASCII&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;template match=&quot;/&quot;&gt;</span>
+<span class="gp">... </span><span class="s">      &lt;value-of select=&quot;es:hello(string(//b))&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/template&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/stylesheet&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">))</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">xslt</span><span class="p">(</span><span class="n">doc</span><span class="p">))</span>
+<span class="go">Ola Haegar</span>
+</pre></div>
+</div>
+<p>It is also possible to register namespaces with a single evaluator after its
+creation.  While the following example involves no functions, the idea should
+still be clear:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a xmlns=&quot;http://mydomain.org/myfunctions&quot; /&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns_doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">ns_doc</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span><span class="p">(</span><span class="s">&#39;/a&#39;</span><span class="p">)</span>
+<span class="go">[]</span>
+</pre></div>
+</div>
+<p>This returns nothing, as we did not ask for the right namespace.  When we
+register the namespace with the evaluator, however, we can access it via a
+prefix:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">e</span><span class="o">.</span><span class="n">register_namespace</span><span class="p">(</span><span class="s">&#39;foo&#39;</span><span class="p">,</span> <span class="s">&#39;http://mydomain.org/myfunctions&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span><span class="p">(</span><span class="s">&#39;/foo:a&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;{http://mydomain.org/myfunctions}a&#39;</span>
+</pre></div>
+</div>
+<p>Note that this prefix mapping is only known to this evaluator, as opposed to
+the global mapping of the FunctionNamespace objects:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">e2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">ns_doc</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e2</span><span class="p">(</span><span class="s">&#39;/foo:a&#39;</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+<span class="c">...</span>
+<span class="gr">lxml.etree.XPathEvalError</span>: <span class="n">Undefined namespace prefix</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="evaluator-local-extensions">
+<h3><a class="toc-backref" href="#id7">Evaluator-local extensions</a><a class="headerlink" href="#evaluator-local-extensions" title="Permalink to this headline">¶</a></h3>
+<p>Apart from the global registration of extension functions, there is also a way
+of making extensions known to a single Evaluator or XSLT.  All evaluators and
+the XSLT object accept a keyword argument <tt class="docutils literal"><span class="pre">extensions</span></tt> in their constructor.
+The value is a dictionary mapping (namespace, name) tuples to functions:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">extensions</span> <span class="o">=</span> <span class="p">{(</span><span class="s">&#39;local-ns&#39;</span><span class="p">,</span> <span class="s">&#39;local-hello&#39;</span><span class="p">)</span> <span class="p">:</span> <span class="n">hello</span><span class="p">}</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespaces</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;l&#39;</span> <span class="p">:</span> <span class="s">&#39;local-ns&#39;</span><span class="p">}</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="n">namespaces</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
+<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">&#39;l:local-hello(string(b))&#39;</span><span class="p">))</span>
+<span class="go">Hello Haegar</span>
+</pre></div>
+</div>
+<p>For larger numbers of extension functions, you can define classes or modules
+and use the <tt class="docutils literal"><span class="pre">Extension</span></tt> helper:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyExt</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">function1</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="s">&#39;1&#39;</span><span class="o">+</span><span class="n">arg</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">function2</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="s">&#39;2&#39;</span><span class="o">+</span><span class="n">arg</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">function3</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="s">&#39;3&#39;</span><span class="o">+</span><span class="n">arg</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ext_module</span> <span class="o">=</span> <span class="n">MyExt</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">functions</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;function1&#39;</span><span class="p">,</span> <span class="s">&#39;function2&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span> <span class="n">ext_module</span><span class="p">,</span> <span class="n">functions</span><span class="p">,</span> <span class="n">ns</span><span class="o">=</span><span class="s">&#39;local-ns&#39;</span> <span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="n">namespaces</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
+<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">&#39;l:function1(string(b))&#39;</span><span class="p">))</span>
+<span class="go">1Haegar</span>
+</pre></div>
+</div>
+<p>The optional second argument to <tt class="docutils literal"><span class="pre">Extension</span></tt> can either be 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="xref docutils literal"><span class="pre">None</span></tt>
+(explicitly passed) to take all available functions under their
+original name (if their name does not start with &#8216;_&#8217;).</p>
+<p>The additional <tt class="docutils literal"><span class="pre">ns</span></tt> keyword argument takes a namespace URI or
+<tt class="xref docutils literal"><span class="pre">None</span></tt> (also if left out) for the default namespace.  The following
+examples will therefore all do the same thing:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">functions</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;function1&#39;</span><span class="p">,</span> <span class="s">&#39;function2&#39;</span><span class="p">,</span> <span class="s">&#39;function3&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span> <span class="n">ext_module</span><span class="p">,</span> <span class="n">functions</span> <span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
+<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">&#39;function1(function2(function3(string(b))))&#39;</span><span class="p">))</span>
+<span class="go">123Haegar</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span> <span class="n">ext_module</span><span class="p">,</span> <span class="n">functions</span><span class="p">,</span> <span class="n">ns</span><span class="o">=</span><span class="bp">None</span> <span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
+<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">&#39;function1(function2(function3(string(b))))&#39;</span><span class="p">))</span>
+<span class="go">123Haegar</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span><span class="n">ext_module</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
+<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">&#39;function1(function2(function3(string(b))))&#39;</span><span class="p">))</span>
+<span class="go">123Haegar</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">functions</span> <span class="o">=</span> <span class="p">{</span>
+<span class="gp">... </span>    <span class="s">&#39;function1&#39;</span> <span class="p">:</span> <span class="s">&#39;function1&#39;</span><span class="p">,</span>
+<span class="gp">... </span>    <span class="s">&#39;function2&#39;</span> <span class="p">:</span> <span class="s">&#39;function2&#39;</span><span class="p">,</span>
+<span class="gp">... </span>    <span class="s">&#39;function3&#39;</span> <span class="p">:</span> <span class="s">&#39;function3&#39;</span>
+<span class="gp">... </span>    <span class="p">}</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">extensions</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span><span class="n">ext_module</span><span class="p">,</span> <span class="n">functions</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="n">extensions</span><span class="p">)</span>
+<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">&#39;function1(function2(function3(string(b))))&#39;</span><span class="p">))</span>
+<span class="go">123Haegar</span>
+</pre></div>
+</div>
+<p>For convenience, you can also pass a sequence of extensions:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">extensions1</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span><span class="n">ext_module</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">extensions2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Extension</span><span class="p">(</span><span class="n">ext_module</span><span class="p">,</span> <span class="n">ns</span><span class="o">=</span><span class="s">&#39;local-ns&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">extensions</span><span class="o">=</span><span class="p">[</span><span class="n">extensions1</span><span class="p">,</span> <span class="n">extensions2</span><span class="p">],</span>
+<span class="gp">... </span>                         <span class="n">namespaces</span><span class="o">=</span><span class="n">namespaces</span><span class="p">)</span>
+<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">&#39;function1(l:function2(function3(string(b))))&#39;</span><span class="p">))</span>
+<span class="go">123Haegar</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="what-to-return-from-a-function">
+<h3><a class="toc-backref" href="#id8">What to return from a function</a><a class="headerlink" href="#what-to-return-from-a-function" title="Permalink to this headline">¶</a></h3>
+<p>Extension functions can return any data type for which there is an XPath
+equivalent (see the documentation on <cite>XPath return values</cite>).  This includes
+numbers, boolean values, elements and lists of elements.  Note that integers
+will also be returned as floats:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">returnsFloat</span><span class="p">(</span><span class="n">_</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">return</span> <span class="mf">1.7</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">returnsInteger</span><span class="p">(</span><span class="n">_</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">return</span> <span class="mi">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">returnsBool</span><span class="p">(</span><span class="n">_</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">return</span> <span class="bp">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">returnFirstNode</span><span class="p">(</span><span class="n">_</span><span class="p">,</span> <span class="n">nodes</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="k">return</span> <span class="n">nodes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">FunctionNamespace</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&#39;float&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">returnsFloat</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&#39;int&#39;</span><span class="p">]</span>   <span class="o">=</span> <span class="n">returnsInteger</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&#39;bool&#39;</span><span class="p">]</span>  <span class="o">=</span> <span class="n">returnsBool</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&#39;first&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">returnFirstNode</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span><span class="p">(</span><span class="s">&quot;float()&quot;</span><span class="p">)</span>
+<span class="go">1.7</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span><span class="p">(</span><span class="s">&quot;int()&quot;</span><span class="p">)</span>
+<span class="go">1.0</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">int</span><span class="p">(</span> <span class="n">e</span><span class="p">(</span><span class="s">&quot;int()&quot;</span><span class="p">)</span> <span class="p">)</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span><span class="p">(</span><span class="s">&quot;bool()&quot;</span><span class="p">)</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span><span class="p">(</span><span class="s">&quot;count(first(//b))&quot;</span><span class="p">)</span>
+<span class="go">1.0</span>
+</pre></div>
+</div>
+<p>As the last example shows, you can pass the results of functions back into
+the XPath expression.  Elements and sequences of elements are treated as
+XPath node-sets:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">returnsNodeSet</span><span class="p">(</span><span class="n">_</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="n">results1</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&#39;results1&#39;</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">results1</span><span class="p">,</span> <span class="s">&#39;result&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Alpha&quot;</span>
+<span class="gp">... </span>    <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">results1</span><span class="p">,</span> <span class="s">&#39;result&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Beta&quot;</span>
+<span class="gp">...</span>
+<span class="gp">... </span>    <span class="n">results2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&#39;results2&#39;</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">results2</span><span class="p">,</span> <span class="s">&#39;result&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Gamma&quot;</span>
+<span class="gp">... </span>    <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">results2</span><span class="p">,</span> <span class="s">&#39;result&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Delta&quot;</span>
+<span class="gp">...</span>
+<span class="gp">... </span>    <span class="n">results3</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">results2</span><span class="p">,</span> <span class="s">&#39;subresult&#39;</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="k">return</span> <span class="p">[</span><span class="n">results1</span><span class="p">,</span> <span class="n">results2</span><span class="p">,</span> <span class="n">results3</span><span class="p">]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">[</span><span class="s">&#39;new-node-set&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">returnsNodeSet</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">e</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span> <span class="o">=</span> <span class="n">e</span><span class="p">(</span><span class="s">&quot;new-node-set()/result&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span> <span class="n">t</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">r</span> <span class="p">])</span>
+<span class="go">[&#39;Alpha&#39;, &#39;Beta&#39;, &#39;Gamma&#39;, &#39;Delta&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span> <span class="o">=</span> <span class="n">e</span><span class="p">(</span><span class="s">&quot;new-node-set()&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span> <span class="n">t</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">r</span> <span class="p">])</span>
+<span class="go">[&#39;results1&#39;, &#39;results2&#39;, &#39;subresult&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span> <span class="nb">len</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">r</span> <span class="p">])</span>
+<span class="go">[2, 3, 0]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;Alpha&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+<span class="go">b&#39;&lt;results1&gt;&lt;result&gt;Alpha&lt;/result&gt;&lt;result&gt;Beta&lt;/result&gt;&lt;/results1&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+<span class="go">b&#39;&lt;results2&gt;&lt;result&gt;Gamma&lt;/result&gt;&lt;result&gt;Delta&lt;/result&gt;&lt;subresult/&gt;&lt;/results2&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+<span class="go">b&#39;&lt;subresult/&gt;&#39;</span>
+</pre></div>
+</div>
+<p>The current implementation deep-copies newly created elements in node-sets.
+Only the elements and their children are passed on, no outlying parents or
+tail texts will be available in the result.  This also means that in the above
+example, the <cite>subresult</cite> elements in <cite>results2</cite> and <cite>results3</cite> are no longer
+identical within the node-set, they belong to independent trees:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">,</span> <span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="go">subresult - subresult</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
+<span class="go">False</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">results2</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">r</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">())</span>
+<span class="go">None</span>
+</pre></div>
+</div>
+<p>This is an implementation detail that you should be aware of, but you should
+avoid relying on it in your code.  Note that elements taken from the source
+document (the most common case) do not suffer from this restriction.  They
+will always be passed unchanged.</p>
+</div>
+</div>
+<div class="section" id="xslt-extension-elements">
+<h2><a class="toc-backref" href="#id9">XSLT extension elements</a><a class="headerlink" href="#xslt-extension-elements" title="Permalink to this headline">¶</a></h2>
+<p>Just like the XPath extension functions described above, lxml supports
+custom extension <em>elements</em> in XSLT.  This means, you can write XSLT
+code like this:</p>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;xsl:template</span> <span class="na">match=</span><span class="s">&quot;*&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;my:python-extension&gt;</span>
+        <span class="nt">&lt;some-content</span> <span class="nt">/&gt;</span>
+    <span class="nt">&lt;/my:python-extension&gt;</span>
+<span class="nt">&lt;/xsl:template&gt;</span>
+</pre></div>
+</div>
+<p>And then you can implement the element in Python like this:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyExtElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">XSLTExtension</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">self_node</span><span class="p">,</span> <span class="n">input_node</span><span class="p">,</span> <span class="n">output_parent</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;Hello from XSLT!&quot;</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="n">output_parent</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;I did it!&quot;</span>
+<span class="gp">... </span>        <span class="c"># just copy own content input to output</span>
+<span class="gp">... </span>        <span class="n">output_parent</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> <span class="nb">list</span><span class="p">(</span><span class="n">self_node</span><span class="p">)</span> <span class="p">)</span>
+</pre></div>
+</div>
+<p>The arguments passed to the <tt class="docutils literal"><span class="pre">.execute()</span></tt> method  are</p>
+<dl class="docutils">
+<dt>context</dt>
+<dd>The opaque evaluation context.  You need this when calling back
+into the XSLT processor.</dd>
+<dt>self_node</dt>
+<dd>A read-only Element object that represents the extension element
+in the stylesheet.</dd>
+<dt>input_node</dt>
+<dd>The current context Element in the input document (also read-only).</dd>
+<dt>output_parent</dt>
+<dd>The current insertion point in the output document.  You can
+append elements or set the text value (not the tail).  Apart from
+that, the Element is read-only.</dd>
+</dl>
+<div class="section" id="declaring-extension-elements">
+<h3><a class="toc-backref" href="#id10">Declaring extension elements</a><a class="headerlink" href="#declaring-extension-elements" title="Permalink to this headline">¶</a></h3>
+<p>In XSLT, extension elements can be used like any other XSLT element,
+except that they must be declared as extensions using the standard
+XSLT <tt class="docutils literal"><span class="pre">extension-element-prefixes</span></tt> option:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xslt_ext_tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span>
+<span class="gp">... </span><span class="s">&lt;xsl:stylesheet version=&quot;1.0&quot;</span>
+<span class="gp">... </span><span class="s">    xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;</span>
+<span class="gp">... </span><span class="s">    xmlns:my=&quot;testns&quot;</span>
+<span class="gp">... </span><span class="s">    extension-element-prefixes=&quot;my&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:template match=&quot;/&quot;&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;foo&gt;&lt;my:ext&gt;&lt;child&gt;XYZ&lt;/child&gt;&lt;/my:ext&gt;&lt;/foo&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/xsl:template&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:template match=&quot;child&quot;&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;CHILD&gt;--xyz--&lt;/CHILD&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/xsl:template&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/xsl:stylesheet&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>To register the extension, add its namespace and name to the extension
+mapping of the XSLT object:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">my_extension</span> <span class="o">=</span> <span class="n">MyExtElement</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">extensions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">(</span><span class="s">&#39;testns&#39;</span><span class="p">,</span> <span class="s">&#39;ext&#39;</span><span class="p">)</span> <span class="p">:</span> <span class="n">my_extension</span> <span class="p">}</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">xslt_ext_tree</span><span class="p">,</span> <span class="n">extensions</span> <span class="o">=</span> <span class="n">extensions</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Note how we pass an instance here, not the class of the extension.
+Now we can run the transformation and see how our extension is
+called:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;dummy/&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="go">Hello from XSLT!</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;I did it!&lt;child&gt;XYZ&lt;/child&gt;&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="applying-xsl-templates">
+<h3><a class="toc-backref" href="#id11">Applying XSL templates</a><a class="headerlink" href="#applying-xsl-templates" title="Permalink to this headline">¶</a></h3>
+<p>XSLT extensions are a very powerful feature that allows you to
+interact directly with the XSLT processor.  You have full read-only
+access to the input document and the stylesheet, and you can even call
+back into the XSLT processor to process templates.  Here is an example
+that passes an Element into the <tt class="docutils literal"><span class="pre">.apply_templates()</span></tt> method of the
+<tt class="docutils literal"><span class="pre">XSLTExtension</span></tt> instance:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyExtElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">XSLTExtension</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">self_node</span><span class="p">,</span> <span class="n">input_node</span><span class="p">,</span> <span class="n">output_parent</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">child</span> <span class="o">=</span> <span class="n">self_node</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+<span class="gp">... </span>        <span class="n">results</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">apply_templates</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">child</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="n">output_parent</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">my_extension</span> <span class="o">=</span> <span class="n">MyExtElement</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">extensions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">(</span><span class="s">&#39;testns&#39;</span><span class="p">,</span> <span class="s">&#39;ext&#39;</span><span class="p">)</span> <span class="p">:</span> <span class="n">my_extension</span> <span class="p">}</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">xslt_ext_tree</span><span class="p">,</span> <span class="n">extensions</span> <span class="o">=</span> <span class="n">extensions</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;dummy/&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;&lt;CHILD&gt;--xyz--&lt;/CHILD&gt;&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+<p>Note how we applied the templates to a child of the extension element
+itself, i.e. to an element inside the stylesheet instead of an element
+of the input document.</p>
+</div>
+<div class="section" id="working-with-read-only-elements">
+<h3><a class="toc-backref" href="#id12">Working with read-only elements</a><a class="headerlink" href="#working-with-read-only-elements" title="Permalink to this headline">¶</a></h3>
+<p>There is one important thing to keep in mind: all Elements that the
+<tt class="docutils literal"><span class="pre">execute()</span></tt> method gets to deal with are read-only Elements, so you
+cannot modify them.  They also will not easily work in the API.  For
+example, you cannot pass them to the <tt class="docutils literal"><span class="pre">tostring()</span></tt> function or wrap
+them in an <tt class="docutils literal"><span class="pre">ElementTree</span></tt>.</p>
+<p>What you can do, however, is to deepcopy them to make them normal
+Elements, and then modify them using the normal etree API.  So this
+will work:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">deepcopy</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyExtElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">XSLTExtension</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">self_node</span><span class="p">,</span> <span class="n">input_node</span><span class="p">,</span> <span class="n">output_parent</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">child</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">self_node</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+<span class="gp">... </span>        <span class="n">child</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;NEW TEXT&quot;</span>
+<span class="gp">... </span>        <span class="n">output_parent</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">my_extension</span> <span class="o">=</span> <span class="n">MyExtElement</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">extensions</span> <span class="o">=</span> <span class="p">{</span> <span class="p">(</span><span class="s">&#39;testns&#39;</span><span class="p">,</span> <span class="s">&#39;ext&#39;</span><span class="p">)</span> <span class="p">:</span> <span class="n">my_extension</span> <span class="p">}</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">xslt_ext_tree</span><span class="p">,</span> <span class="n">extensions</span> <span class="o">=</span> <span class="n">extensions</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;dummy/&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;&lt;child&gt;NEW TEXT&lt;/child&gt;&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Python extensions for XPath and XSLT</a><ul>
+<li><a class="reference internal" href="#xpath-extension-functions">XPath Extension functions</a><ul>
+<li><a class="reference internal" href="#the-functionnamespace">The FunctionNamespace</a></li>
+<li><a class="reference internal" href="#global-prefix-assignment">Global prefix assignment</a></li>
+<li><a class="reference internal" href="#the-xpath-context">The XPath context</a></li>
+<li><a class="reference internal" href="#evaluators-and-xslt">Evaluators and XSLT</a></li>
+<li><a class="reference internal" href="#evaluator-local-extensions">Evaluator-local extensions</a></li>
+<li><a class="reference internal" href="#what-to-return-from-a-function">What to return from a function</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#xslt-extension-elements">XSLT extension elements</a><ul>
+<li><a class="reference internal" href="#declaring-extension-elements">Declaring extension elements</a></li>
+<li><a class="reference internal" href="#applying-xsl-templates">Applying XSL templates</a></li>
+<li><a class="reference internal" href="#working-with-read-only-elements">Working with read-only elements</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/extensions.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/genindex.html b/doc/sphinx/genindex.html
new file mode 100644 (file)
index 0000000..7da6556
--- /dev/null
@@ -0,0 +1,121 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Index &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="#" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+
+   <h1 id="index">Index</h1>
+
+   <div class="genindex-jumpbox">
+   <a href="#C"><strong>C</strong></a> | <a href="#E"><strong>E</strong></a> | <a href="#I"><strong>I</strong></a> | <a href="#P"><strong>P</strong></a> 
+   </div>
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+    <dt><a href="s5/lxml-ep2008.html#center">center (built-in class)</a>, <a href="s5/lxml-ep2008.html#center">[1]</a></dt>
+</dl></td>
+</tr></table>
+
+<h2 id="E">E</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+    <dt><a href="main.html#eyecatcher">eyecatcher (built-in class)</a></dt>
+</dl></td>
+</tr></table>
+
+<h2 id="I">I</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+    <dt><a href="s5/lxml-ep2008.html#incremental">incremental (built-in class)</a>, <a href="s5/lxml-ep2008.html#incremental">[1]</a>, <a href="s5/lxml-ep2008.html#incremental">[2]</a>, <a href="s5/lxml-ep2008.html#incremental">[3]</a>, <a href="s5/lxml-ep2008.html#incremental">[4]</a></dt>
+</dl></td>
+</tr></table>
+
+<h2 id="P">P</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+  <td style="width: 33%" valign="top"><dl>
+    <dt><a href="main.html#pagequote">pagequote (built-in class)</a></dt>
+</dl></td>
+</tr></table>
+
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+
+   
+
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="#" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/html/api/api-objects.html b/doc/sphinx/html/api/api-objects.html
new file mode 100644 (file)
index 0000000..7ffbe0b
--- /dev/null
@@ -0,0 +1,7373 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>&lt;no title&gt; &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../../',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../../_static/jquery.js"></script>
+    <script type="text/javascript" src="../../_static/underscore.js"></script>
+    <script type="text/javascript" src="../../_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="../../index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="../../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <p>lxml    lxml-module.html
+lxml.__package__        lxml-module.html#__package__
+lxml.ElementInclude     lxml.ElementInclude-module.html
+lxml.ElementInclude.include     lxml.ElementInclude-module.html#include
+lxml.ElementInclude.XINCLUDE_INCLUDE    lxml.ElementInclude-module.html#XINCLUDE_INCLUDE
+lxml.ElementInclude.XINCLUDE_FALLBACK   lxml.ElementInclude-module.html#XINCLUDE_FALLBACK
+lxml.ElementInclude._include    lxml.ElementInclude-module.html#_include
+lxml.ElementInclude.__package__ lxml.ElementInclude-module.html#__package__
+lxml.ElementInclude._lxml_default_loader        lxml.ElementInclude-module.html#_lxml_default_loader
+lxml.ElementInclude.XINCLUDE    lxml.ElementInclude-module.html#XINCLUDE
+lxml.ElementInclude._wrap_et_loader     lxml.ElementInclude-module.html#_wrap_et_loader
+lxml.ElementInclude.default_loader      lxml.ElementInclude-module.html#default_loader
+lxml.builder    lxml.builder-module.html
+lxml.builder.E  lxml.builder-module.html#E
+lxml.builder.__package__        lxml.builder-module.html#__package__
+lxml.builder.callable   lxml.builder-module.html#callable
+lxml.cssselect  lxml.cssselect-module.html
+lxml.cssselect._el_re   lxml.cssselect-module.html#_el_re
+lxml.cssselect.parse_attrib     lxml.cssselect-module.html#parse_attrib
+lxml.cssselect.parse_selector_group     lxml.cssselect-module.html#parse_selector_group
+lxml.cssselect.css_to_xpath     lxml.cssselect-module.html#css_to_xpath
+lxml.cssselect.parse_series     lxml.cssselect-module.html#parse_series
+lxml.cssselect.xpath_literal    lxml.cssselect-module.html#xpath_literal
+lxml.cssselect.__package__      lxml.cssselect-module.html#__package__
+lxml.cssselect.tokenize lxml.cssselect-module.html#tokenize
+lxml.cssselect._illegal_symbol  lxml.cssselect-module.html#_illegal_symbol
+lxml.cssselect.unescape_string_literal  lxml.cssselect-module.html#unescape_string_literal
+lxml.cssselect.parse_simple_selector    lxml.cssselect-module.html#parse_simple_selector
+lxml.cssselect._match_count_number      lxml.cssselect-module.html#_match_count_number
+lxml.cssselect.ns       lxml.cssselect-module.html#ns
+lxml.cssselect._id_re   lxml.cssselect-module.html#_id_re
+lxml.cssselect._match_whitespace        lxml.cssselect-module.html#_match_whitespace
+lxml.cssselect.is_int   lxml.cssselect-module.html#is_int
+lxml.cssselect.split_at_string_escapes  lxml.cssselect-module.html#split_at_string_escapes
+lxml.cssselect._replace_comments        lxml.cssselect-module.html#_replace_comments
+lxml.cssselect.tokenize_escaped_string  lxml.cssselect-module.html#tokenize_escaped_string
+lxml.cssselect._make_lower_case lxml.cssselect-module.html#_make_lower_case
+lxml.cssselect._class_re        lxml.cssselect-module.html#_class_re
+lxml.cssselect.split_at_single_quotes   lxml.cssselect-module.html#split_at_single_quotes
+lxml.cssselect.tokenize_symbol  lxml.cssselect-module.html#tokenize_symbol
+lxml.cssselect.parse    lxml.cssselect-module.html#parse
+lxml.cssselect.parse_selector   lxml.cssselect-module.html#parse_selector
+lxml.doctestcompare     lxml.doctestcompare-module.html
+lxml.doctestcompare._norm_whitespace_re lxml.doctestcompare-module.html#_norm_whitespace_re
+lxml.doctestcompare.norm_whitespace     lxml.doctestcompare-module.html#norm_whitespace
+lxml.doctestcompare.PARSE_XML   lxml.doctestcompare-module.html#PARSE_XML
+lxml.doctestcompare._IS_PYTHON_3        lxml.doctestcompare-module.html#_IS_PYTHON_3
+lxml.doctestcompare._find_doctest_frame lxml.doctestcompare-module.html#_find_doctest_frame
+lxml.doctestcompare.strip       lxml.doctestcompare-module.html#strip
+lxml.doctestcompare._repr_re    lxml.doctestcompare-module.html#_repr_re
+lxml.doctestcompare._html_parser        lxml.doctestcompare-module.html#_html_parser
+lxml.doctestcompare.NOPARSE_MARKUP      lxml.doctestcompare-module.html#NOPARSE_MARKUP
+lxml.doctestcompare.__package__ lxml.doctestcompare-module.html#__package__
+lxml.doctestcompare.html_fromstring     lxml.doctestcompare-module.html#html_fromstring
+lxml.doctestcompare.temp_install        lxml.doctestcompare-module.html#temp_install
+lxml.doctestcompare.__test__    lxml.doctestcompare-module.html#__test__
+lxml.doctestcompare.install     lxml.doctestcompare-module.html#install
+lxml.doctestcompare.PARSE_HTML  lxml.doctestcompare-module.html#PARSE_HTML
+lxml.etree      lxml.etree-module.html
+lxml.etree.XPathEvaluator       lxml.etree-module.html#XPathEvaluator
+lxml.etree.XMLID        lxml.etree-module.html#XMLID
+lxml.etree.LIBXSLT_VERSION      lxml.etree-module.html#LIBXSLT_VERSION
+lxml.etree.XMLDTDID     lxml.etree-module.html#XMLDTDID
+lxml.etree.ElementTree  lxml.etree-module.html#ElementTree
+lxml.etree.cleanup_namespaces   lxml.etree-module.html#cleanup_namespaces
+lxml.etree.set_default_parser   lxml.etree-module.html#set_default_parser
+lxml.etree.parseid      lxml.etree-module.html#parseid
+lxml.etree.tostring     lxml.etree-module.html#tostring
+lxml.etree.iselement    lxml.etree-module.html#iselement
+lxml.etree.FunctionNamespace    lxml.etree-module.html#FunctionNamespace
+lxml.etree.strip_attributes     lxml.etree-module.html#strip_attributes
+lxml.etree.Entity       lxml.etree-module.html#Entity
+lxml.etree.__package__  lxml.etree-module.html#__package__
+lxml.etree.strip_elements       lxml.etree-module.html#strip_elements
+lxml.etree.HTML lxml.etree-module.html#HTML
+lxml.etree.PI   lxml.etree-module.html#PI
+lxml.etree.Extension    lxml.etree-module.html#Extension
+lxml.etree.DEBUG        lxml.etree-module.html#DEBUG
+lxml.etree.Comment      lxml.etree-module.html#Comment
+lxml.etree.ProcessingInstruction        lxml.etree-module.html#ProcessingInstruction
+lxml.etree.LXML_VERSION lxml.etree-module.html#LXML_VERSION
+lxml.etree.LIBXML_COMPILED_VERSION      lxml.etree-module.html#LIBXML_COMPILED_VERSION
+lxml.etree.strip_tags   lxml.etree-module.html#strip_tags
+lxml.etree.tounicode    lxml.etree-module.html#tounicode
+lxml.etree.LIBXSLT_COMPILED_VERSION     lxml.etree-module.html#LIBXSLT_COMPILED_VERSION
+lxml.etree.dump lxml.etree-module.html#dump
+lxml.etree.__pyx_capi__ lxml.etree-module.html#__pyx_capi__
+lxml.etree.XML  lxml.etree-module.html#XML
+lxml.etree.use_global_python_log        lxml.etree-module.html#use_global_python_log
+lxml.etree.LIBXML_VERSION       lxml.etree-module.html#LIBXML_VERSION
+lxml.etree.tostringlist lxml.etree-module.html#tostringlist
+lxml.etree.SubElement   lxml.etree-module.html#SubElement
+lxml.etree.get_default_parser   lxml.etree-module.html#get_default_parser
+lxml.etree.register_namespace   lxml.etree-module.html#register_namespace
+lxml.etree.parse        lxml.etree-module.html#parse
+lxml.etree.set_element_class_lookup     lxml.etree-module.html#set_element_class_lookup
+lxml.etree.clear_error_log      lxml.etree-module.html#clear_error_log
+lxml.etree.fromstringlist       lxml.etree-module.html#fromstringlist
+lxml.etree.Element      lxml.etree-module.html#Element
+lxml.etree.fromstring   lxml.etree-module.html#fromstring
+lxml.etree.__test__     lxml.etree-module.html#__test__
+lxml.html       lxml.html-module.html
+lxml.html._css_import_re        lxml.html-module.html#_css_import_re
+lxml.html._css_url_re   lxml.html-module.html#_css_url_re
+lxml.html.parse lxml.html-module.html#parse
+lxml.html._nons lxml.html-module.html#_nons
+lxml.html._forms_xpath  lxml.html-module.html#_forms_xpath
+lxml.html._contains_block_level_tag     lxml.html-module.html#_contains_block_level_tag
+lxml.html._element_name lxml.html-module.html#_element_name
+lxml.html._archive_re   lxml.html-module.html#_archive_re
+lxml.html.iterlinks     lxml.html-module.html#iterlinks
+lxml.html.__package__   lxml.html-module.html#__package__
+lxml.html._collect_string_content       lxml.html-module.html#_collect_string_content
+lxml.html.submit_form   lxml.html-module.html#submit_form
+lxml.html.xhtml_parser  lxml.html-module.html#xhtml_parser
+lxml.html.XHTML_NAMESPACE       lxml.html-module.html#XHTML_NAMESPACE
+lxml.html._id_xpath     lxml.html-module.html#_id_xpath
+lxml.html.make_links_absolute   lxml.html-module.html#make_links_absolute
+lxml.html.resolve_base_href     lxml.html-module.html#resolve_base_href
+lxml.html.__bytes_replace_meta_content_type     lxml.html-module.html#__bytes_replace_meta_content_type
+lxml.html.rewrite_links lxml.html-module.html#rewrite_links
+lxml.html.fragment_fromstring   lxml.html-module.html#fragment_fromstring
+lxml.html.html_to_xhtml lxml.html-module.html#html_to_xhtml
+lxml.html._unquote_match        lxml.html-module.html#_unquote_match
+lxml.html.fragments_fromstring  lxml.html-module.html#fragments_fromstring
+lxml.html.__str_replace_meta_content_type       lxml.html-module.html#__str_replace_meta_content_type
+lxml.html._options_xpath        lxml.html-module.html#_options_xpath
+lxml.html.document_fromstring   lxml.html-module.html#document_fromstring
+lxml.html.Element       lxml.html-module.html#Element
+lxml.html.__fix_docstring       lxml.html-module.html#__fix_docstring
+lxml.html._class_xpath  lxml.html-module.html#_class_xpath
+lxml.html._rel_links_xpath      lxml.html-module.html#_rel_links_xpath
+lxml.html.tostring      lxml.html-module.html#tostring
+lxml.html.find_class    lxml.html-module.html#find_class
+lxml.html.find_rel_links        lxml.html-module.html#find_rel_links
+lxml.html.html_parser   lxml.html-module.html#html_parser
+lxml.html.open_in_browser       lxml.html-module.html#open_in_browser
+lxml.html.fromstring    lxml.html-module.html#fromstring
+lxml.html._label_xpath  lxml.html-module.html#_label_xpath
+lxml.html._transform_result     lxml.html-module.html#_transform_result
+lxml.html.open_http_urllib      lxml.html-module.html#open_http_urllib
+lxml.html.xhtml_to_html lxml.html-module.html#xhtml_to_html
+lxml.html.ElementSoup   lxml.html.ElementSoup-module.html
+lxml.html.ElementSoup.parse     lxml.html.ElementSoup-module.html#parse
+lxml.html.ElementSoup._parse    lxml.html.soupparser-module.html#parse
+lxml.html.ElementSoup.convert_tree      lxml.html.ElementSoup-module.html#convert_tree
+lxml.html.ElementSoup.__doc__   lxml.html.ElementSoup-module.html#__doc__
+lxml.html.ElementSoup.__package__       lxml.html.ElementSoup-module.html#__package__
+lxml.html.builder       lxml.html.builder-module.html
+lxml.html.builder.BLOCKQUOTE    lxml.html.builder-module.html#BLOCKQUOTE
+lxml.html.builder.OBJECT        lxml.html.builder-module.html#OBJECT
+lxml.html.builder.LINK  lxml.html.builder-module.html#LINK
+lxml.html.builder.BR    lxml.html.builder-module.html#BR
+lxml.html.builder.OPTGROUP      lxml.html.builder-module.html#OPTGROUP
+lxml.html.builder.__package__   lxml.html.builder-module.html#__package__
+lxml.html.builder.SUB   lxml.html.builder-module.html#SUB
+lxml.html.builder.PRE   lxml.html.builder-module.html#PRE
+lxml.html.builder.FRAME lxml.html.builder-module.html#FRAME
+lxml.html.builder.BODY  lxml.html.builder-module.html#BODY
+lxml.html.builder.TH    lxml.html.builder-module.html#TH
+lxml.html.builder.P     lxml.html.builder-module.html#P
+lxml.html.builder.BASE  lxml.html.builder-module.html#BASE
+lxml.html.builder.TFOOT lxml.html.builder-module.html#TFOOT
+lxml.html.builder.VAR   lxml.html.builder-module.html#VAR
+lxml.html.builder.MAP   lxml.html.builder-module.html#MAP
+lxml.html.builder.OL    lxml.html.builder-module.html#OL
+lxml.html.builder.TEXTAREA      lxml.html.builder-module.html#TEXTAREA
+lxml.html.builder.ACRONYM       lxml.html.builder-module.html#ACRONYM
+lxml.html.builder.MENU  lxml.html.builder-module.html#MENU
+lxml.html.builder.DT    lxml.html.builder-module.html#DT
+lxml.html.builder.ADDRESS       lxml.html.builder-module.html#ADDRESS
+lxml.html.builder.CODE  lxml.html.builder-module.html#CODE
+lxml.html.builder.HR    lxml.html.builder-module.html#HR
+lxml.html.builder.ISINDEX       lxml.html.builder-module.html#ISINDEX
+lxml.html.builder.HEAD  lxml.html.builder-module.html#HEAD
+lxml.html.builder.LABEL lxml.html.builder-module.html#LABEL
+lxml.html.builder.META  lxml.html.builder-module.html#META
+lxml.html.builder.DEL   lxml.html.builder-module.html#DEL
+lxml.html.builder.FONT  lxml.html.builder-module.html#FONT
+lxml.html.builder.SELECT        lxml.html.builder-module.html#SELECT
+lxml.html.builder.NOFRAMES      lxml.html.builder-module.html#NOFRAMES
+lxml.html.builder.CENTER        lxml.html.builder-module.html#CENTER
+lxml.html.builder.KBD   lxml.html.builder-module.html#KBD
+lxml.html.builder.HTML  lxml.html.builder-module.html#HTML
+lxml.html.builder.EM    lxml.html.builder-module.html#EM
+lxml.html.builder.FRAMESET      lxml.html.builder-module.html#FRAMESET
+lxml.html.builder.FIELDSET      lxml.html.builder-module.html#FIELDSET
+lxml.html.builder.FOR   lxml.html.builder-module.html#FOR
+lxml.html.builder.BASEFONT      lxml.html.builder-module.html#BASEFONT
+lxml.html.builder.BDO   lxml.html.builder-module.html#BDO
+lxml.html.builder.PARAM lxml.html.builder-module.html#PARAM
+lxml.html.builder.S     lxml.html.builder-module.html#S
+lxml.html.builder.INPUT lxml.html.builder-module.html#INPUT
+lxml.html.builder.H2    lxml.html.builder-module.html#H2
+lxml.html.builder.H3    lxml.html.builder-module.html#H3
+lxml.html.builder.BUTTON        lxml.html.builder-module.html#BUTTON
+lxml.html.builder.SCRIPT        lxml.html.builder-module.html#SCRIPT
+lxml.html.builder.H6    lxml.html.builder-module.html#H6
+lxml.html.builder.H4    lxml.html.builder-module.html#H4
+lxml.html.builder.INS   lxml.html.builder-module.html#INS
+lxml.html.builder.UL    lxml.html.builder-module.html#UL
+lxml.html.builder.STRIKE        lxml.html.builder-module.html#STRIKE
+lxml.html.builder.OPTION        lxml.html.builder-module.html#OPTION
+lxml.html.builder.TITLE lxml.html.builder-module.html#TITLE
+lxml.html.builder.SUP   lxml.html.builder-module.html#SUP
+lxml.html.builder.SMALL lxml.html.builder-module.html#SMALL
+lxml.html.builder.STRONG        lxml.html.builder-module.html#STRONG
+lxml.html.builder.COL   lxml.html.builder-module.html#COL
+lxml.html.builder.AREA  lxml.html.builder-module.html#AREA
+lxml.html.builder.APPLET        lxml.html.builder-module.html#APPLET
+lxml.html.builder.TABLE lxml.html.builder-module.html#TABLE
+lxml.html.builder.B     lxml.html.builder-module.html#B
+lxml.html.builder.IMG   lxml.html.builder-module.html#IMG
+lxml.html.builder.DFN   lxml.html.builder-module.html#DFN
+lxml.html.builder.SPAN  lxml.html.builder-module.html#SPAN
+lxml.html.builder.DL    lxml.html.builder-module.html#DL
+lxml.html.builder.H1    lxml.html.builder-module.html#H1
+lxml.html.builder.DD    lxml.html.builder-module.html#DD
+lxml.html.builder.TBODY lxml.html.builder-module.html#TBODY
+lxml.html.builder.DIV   lxml.html.builder-module.html#DIV
+lxml.html.builder.H5    lxml.html.builder-module.html#H5
+lxml.html.builder.LEGEND        lxml.html.builder-module.html#LEGEND
+lxml.html.builder.DIR   lxml.html.builder-module.html#DIR
+lxml.html.builder.NOSCRIPT      lxml.html.builder-module.html#NOSCRIPT
+lxml.html.builder.COLGROUP      lxml.html.builder-module.html#COLGROUP
+lxml.html.builder.BIG   lxml.html.builder-module.html#BIG
+lxml.html.builder.TT    lxml.html.builder-module.html#TT
+lxml.html.builder.TR    lxml.html.builder-module.html#TR
+lxml.html.builder.LI    lxml.html.builder-module.html#LI
+lxml.html.builder.IFRAME        lxml.html.builder-module.html#IFRAME
+lxml.html.builder.TD    lxml.html.builder-module.html#TD
+lxml.html.builder.CLASS lxml.html.builder-module.html#CLASS
+lxml.html.builder.A     lxml.html.builder-module.html#A
+lxml.html.builder.STYLE lxml.html.builder-module.html#STYLE
+lxml.html.builder.E     lxml.html.builder-module.html#E
+lxml.html.builder.FORM  lxml.html.builder-module.html#FORM
+lxml.html.builder.I     lxml.html.builder-module.html#I
+lxml.html.builder.Q     lxml.html.builder-module.html#Q
+lxml.html.builder.CAPTION       lxml.html.builder-module.html#CAPTION
+lxml.html.builder.U     lxml.html.builder-module.html#U
+lxml.html.builder.ABBR  lxml.html.builder-module.html#ABBR
+lxml.html.builder.THEAD lxml.html.builder-module.html#THEAD
+lxml.html.builder.SAMP  lxml.html.builder-module.html#SAMP
+lxml.html.builder.CITE  lxml.html.builder-module.html#CITE
+lxml.html.clean lxml.html.clean-module.html
+lxml.html.clean._css_import_re  lxml.html.clean-module.html#_css_import_re
+lxml.html.clean.word_break_html lxml.html.clean-module.html#word_break_html
+lxml.html.clean._link_regexes   lxml.html.clean-module.html#_link_regexes
+lxml.html.clean._substitute_whitespace  lxml.html.clean-module.html#_substitute_whitespace
+lxml.html.clean._nons   lxml.html-module.html#_nons
+lxml.html.clean._find_styled_elements   lxml.html.clean-module.html#_find_styled_elements
+lxml.html.clean._break_text     lxml.html.clean-module.html#_break_text
+lxml.html.clean._avoid_classes  lxml.html.clean-module.html#_avoid_classes
+lxml.html.clean._javascript_scheme_re   lxml.html.clean-module.html#_javascript_scheme_re
+lxml.html.clean.__package__     lxml.html.clean-module.html#__package__
+lxml.html.clean._avoid_elements lxml.html.clean-module.html#_avoid_elements
+lxml.html.clean._find_external_links    lxml.html.clean-module.html#_find_external_links
+lxml.html.clean._insert_break   lxml.html.clean-module.html#_insert_break
+lxml.html.clean._transform_result       lxml.html-module.html#_transform_result
+lxml.html.clean.autolink        lxml.html.clean-module.html#autolink
+lxml.html.clean._conditional_comment_re lxml.html.clean-module.html#_conditional_comment_re
+lxml.html.clean._link_text      lxml.html.clean-module.html#_link_text
+lxml.html.clean._avoid_hosts    lxml.html.clean-module.html#_avoid_hosts
+lxml.html.clean.autolink_html   lxml.html.clean-module.html#autolink_html
+lxml.html.clean.tostring        lxml.html-module.html#tostring
+lxml.html.clean.clean_html      lxml.html.clean-module.html#clean_html
+lxml.html.clean._avoid_word_break_classes       lxml.html.clean-module.html#_avoid_word_break_classes
+lxml.html.clean._css_javascript_re      lxml.html.clean-module.html#_css_javascript_re
+lxml.html.clean.fromstring      lxml.html-module.html#fromstring
+lxml.html.clean.word_break      lxml.html.clean-module.html#word_break
+lxml.html.clean._break_prefer_re        lxml.html.clean-module.html#_break_prefer_re
+lxml.html.clean.clean   lxml.html.clean-module.html#clean
+lxml.html.clean._avoid_word_break_elements      lxml.html.clean-module.html#_avoid_word_break_elements
+lxml.html.defs  lxml.html.defs-module.html
+lxml.html.defs.block_tags       lxml.html.defs-module.html#block_tags
+lxml.html.defs.link_attrs       lxml.html.defs-module.html#link_attrs
+lxml.html.defs.tags     lxml.html.defs-module.html#tags
+lxml.html.defs.font_style_tags  lxml.html.defs-module.html#font_style_tags
+lxml.html.defs.event_attrs      lxml.html.defs-module.html#event_attrs
+lxml.html.defs.safe_attrs       lxml.html.defs-module.html#safe_attrs
+lxml.html.defs.table_tags       lxml.html.defs-module.html#table_tags
+lxml.html.defs.__package__      lxml.html.defs-module.html#__package__
+lxml.html.defs.top_level_tags   lxml.html.defs-module.html#top_level_tags
+lxml.html.defs.form_tags        lxml.html.defs-module.html#form_tags
+lxml.html.defs.phrase_tags      lxml.html.defs-module.html#phrase_tags
+lxml.html.defs.deprecated_tags  lxml.html.defs-module.html#deprecated_tags
+lxml.html.defs.head_tags        lxml.html.defs-module.html#head_tags
+lxml.html.defs.list_tags        lxml.html.defs-module.html#list_tags
+lxml.html.defs.special_inline_tags      lxml.html.defs-module.html#special_inline_tags
+lxml.html.defs.empty_tags       lxml.html.defs-module.html#empty_tags
+lxml.html.defs.general_block_tags       lxml.html.defs-module.html#general_block_tags
+lxml.html.defs.frame_tags       lxml.html.defs-module.html#frame_tags
+lxml.html.defs.nonstandard_tags lxml.html.defs-module.html#nonstandard_tags
+lxml.html.diff  lxml.html.diff-module.html
+lxml.html.diff._move_el_inside_block    lxml.html.diff-module.html#_move_el_inside_block
+lxml.html.diff.compress_merge_back      lxml.html.diff-module.html#compress_merge_back
+lxml.html.diff.serialize_html_fragment  lxml.html.diff-module.html#serialize_html_fragment
+lxml.html.diff.split_delete     lxml.html.diff-module.html#split_delete
+lxml.html.diff.split_unbalanced lxml.html.diff-module.html#split_unbalanced
+lxml.html.diff.is_word  lxml.html.diff-module.html#is_word
+lxml.html.diff._contains_block_level_tag        lxml.html.diff-module.html#_contains_block_level_tag
+lxml.html.diff.empty_tags       lxml.html.diff-module.html#empty_tags
+lxml.html.diff.is_start_tag     lxml.html.diff-module.html#is_start_tag
+lxml.html.diff.end_tag  lxml.html.diff-module.html#end_tag
+lxml.html.diff.fixup_chunks     lxml.html.diff-module.html#fixup_chunks
+lxml.html.diff.html_annotate    lxml.html.diff-module.html#html_annotate
+lxml.html.diff.cleanup_delete   lxml.html.diff-module.html#cleanup_delete
+lxml.html.diff.htmldiff lxml.html.diff-module.html#htmldiff
+lxml.html.diff._fixup_ins_del_tags      lxml.html.diff-module.html#_fixup_ins_del_tags
+lxml.html.diff.htmldiff_tokens  lxml.html.diff-module.html#htmldiff_tokens
+lxml.html.diff.expand_tokens    lxml.html.diff-module.html#expand_tokens
+lxml.html.diff.__package__      lxml.html.diff-module.html#__package__
+lxml.html.diff.block_level_tags lxml.html.diff-module.html#block_level_tags
+lxml.html.diff.compress_tokens  lxml.html.diff-module.html#compress_tokens
+lxml.html.diff.html_annotate_merge_annotations  lxml.html.diff-module.html#html_annotate_merge_annotations
+lxml.html.diff._merge_element_contents  lxml.html.diff-module.html#_merge_element_contents
+lxml.html.diff.split_words      lxml.html.diff-module.html#split_words
+lxml.html.diff.block_level_container_tags       lxml.html.diff-module.html#block_level_container_tags
+lxml.html.diff.flatten_el       lxml.html.diff-module.html#flatten_el
+lxml.html.diff.markup_serialize_tokens  lxml.html.diff-module.html#markup_serialize_tokens
+lxml.html.diff._body_re lxml.html.diff-module.html#_body_re
+lxml.html.diff.locate_unbalanced_start  lxml.html.diff-module.html#locate_unbalanced_start
+lxml.html.diff.fragment_fromstring      lxml.html-module.html#fragment_fromstring
+lxml.html.diff.fixup_ins_del_tags       lxml.html.diff-module.html#fixup_ins_del_tags
+lxml.html.diff.default_markup   lxml.html.diff-module.html#default_markup
+lxml.html.diff.tokenize lxml.html.diff-module.html#tokenize
+lxml.html.diff.cleanup_html     lxml.html.diff-module.html#cleanup_html
+lxml.html.diff.tokenize_annotated       lxml.html.diff-module.html#tokenize_annotated
+lxml.html.diff.parse_html       lxml.html.diff-module.html#parse_html
+lxml.html.diff.merge_insert     lxml.html.diff-module.html#merge_insert
+lxml.html.diff.merge_delete     lxml.html.diff-module.html#merge_delete
+lxml.html.diff._ins_del_re      lxml.html.diff-module.html#_ins_del_re
+lxml.html.diff.locate_unbalanced_end    lxml.html.diff-module.html#locate_unbalanced_end
+lxml.html.diff.start_tag        lxml.html.diff-module.html#start_tag
+lxml.html.diff._end_body_re     lxml.html.diff-module.html#_end_body_re
+lxml.html.diff.is_end_tag       lxml.html.diff-module.html#is_end_tag
+lxml.html.diff.copy_annotations lxml.html.diff-module.html#copy_annotations
+lxml.html.diff.end_whitespace_re        lxml.html.diff-module.html#end_whitespace_re
+lxml.html.diff.start_whitespace_re      lxml.html.diff-module.html#start_whitespace_re
+lxml.html.formfill      lxml.html.formfill-module.html
+lxml.html.formfill._fill_single lxml.html.formfill-module.html#_fill_single
+lxml.html.formfill._input_xpath lxml.html.formfill-module.html#_input_xpath
+lxml.html.formfill._nons        lxml.html-module.html#_nons
+lxml.html.formfill._insert_error        lxml.html.formfill-module.html#_insert_error
+lxml.html.formfill._fill_form   lxml.html.formfill-module.html#_fill_form
+lxml.html.formfill._check       lxml.html.formfill-module.html#_check
+lxml.html.formfill._takes_multiple      lxml.html.formfill-module.html#_takes_multiple
+lxml.html.formfill.__package__  lxml.html.formfill-module.html#__package__
+lxml.html.formfill.insert_errors_html   lxml.html.formfill-module.html#insert_errors_html
+lxml.html.formfill._form_name_xpath     lxml.html.formfill-module.html#_form_name_xpath
+lxml.html.formfill._name_xpath  lxml.html.formfill-module.html#_name_xpath
+lxml.html.formfill.fill_form_html       lxml.html.formfill-module.html#fill_form_html
+lxml.html.formfill._add_class   lxml.html.formfill-module.html#_add_class
+lxml.html.formfill._transform_result    lxml.html-module.html#_transform_result
+lxml.html.formfill.default_error_creator        lxml.html.formfill-module.html#default_error_creator
+lxml.html.formfill._find_elements_for_name      lxml.html.formfill-module.html#_find_elements_for_name
+lxml.html.formfill._label_for_xpath     lxml.html.formfill-module.html#_label_for_xpath
+lxml.html.formfill._fill_multiple       lxml.html.formfill-module.html#_fill_multiple
+lxml.html.formfill._select      lxml.html.formfill-module.html#_select
+lxml.html.formfill.fill_form    lxml.html.formfill-module.html#fill_form
+lxml.html.formfill.insert_errors        lxml.html.formfill-module.html#insert_errors
+lxml.html.formfill._find_form_ids       lxml.html.formfill-module.html#_find_form_ids
+lxml.html.formfill.fromstring   lxml.html-module.html#fromstring
+lxml.html.formfill._tag lxml.html.formfill-module.html#_tag
+lxml.html.formfill._find_form   lxml.html.formfill-module.html#_find_form
+lxml.html.formfill.tostring     lxml.html-module.html#tostring
+lxml.html.html5parser   lxml.html.html5parser-module.html
+lxml.html.html5parser.fragment_fromstring       lxml.html.html5parser-module.html#fragment_fromstring
+lxml.html.html5parser.xhtml_parser      lxml.html.html5parser-module.html#xhtml_parser
+lxml.html.html5parser.fragments_fromstring      lxml.html.html5parser-module.html#fragments_fromstring
+lxml.html.html5parser.__package__       lxml.html.html5parser-module.html#__package__
+lxml.html.html5parser.parse     lxml.html.html5parser-module.html#parse
+lxml.html.html5parser.html_parser       lxml.html.html5parser-module.html#html_parser
+lxml.html.html5parser.document_fromstring       lxml.html.html5parser-module.html#document_fromstring
+lxml.html.html5parser._find_tag lxml.html.html5parser-module.html#_find_tag
+lxml.html.html5parser.fromstring        lxml.html.html5parser-module.html#fromstring
+lxml.html.html5parser._contains_block_level_tag lxml.html-module.html#_contains_block_level_tag
+lxml.html.soupparser    lxml.html.soupparser-module.html
+lxml.html.soupparser._convert_tree      lxml.html.soupparser-module.html#_convert_tree
+lxml.html.soupparser._convert_children  lxml.html.soupparser-module.html#_convert_children
+lxml.html.soupparser.__package__        lxml.html.soupparser-module.html#__package__
+lxml.html.soupparser.parse      lxml.html.soupparser-module.html#parse
+lxml.html.soupparser.convert_tree       lxml.html.soupparser-module.html#convert_tree
+lxml.html.soupparser.__doc__    lxml.html.soupparser-module.html#__doc__
+lxml.html.soupparser.fromstring lxml.html.soupparser-module.html#fromstring
+lxml.html.soupparser.unescape   lxml.html.soupparser-module.html#unescape
+lxml.html.soupparser._parse     lxml.html.soupparser-module.html#_parse
+lxml.html.soupparser._append_text       lxml.html.soupparser-module.html#_append_text
+lxml.html.soupparser.handle_entities    lxml.html.soupparser-module.html#handle_entities
+lxml.html.usedoctest    lxml.html.usedoctest-module.html
+lxml.isoschematron      lxml.isoschematron-module.html
+lxml.isoschematron.SVRL_NS      lxml.isoschematron-module.html#SVRL_NS
+lxml.isoschematron.iso_svrl_for_xslt1   lxml.isoschematron-module.html#iso_svrl_for_xslt1
+lxml.isoschematron._xml_schema_root     lxml.isoschematron-module.html#_xml_schema_root
+lxml.isoschematron._stylesheet_param_dict       lxml.isoschematron-module.html#_stylesheet_param_dict
+lxml.isoschematron.svrl_validation_errors       lxml.isoschematron-module.html#svrl_validation_errors
+lxml.isoschematron.iso_dsdl_include     lxml.isoschematron-module.html#iso_dsdl_include
+lxml.isoschematron.extract_rng  lxml.isoschematron-module.html#extract_rng
+lxml.isoschematron._resources_dir       lxml.isoschematron-module.html#_resources_dir
+lxml.isoschematron.__package__  lxml.isoschematron-module.html#__package__
+lxml.isoschematron.SCHEMATRON_NS        lxml.isoschematron-module.html#SCHEMATRON_NS
+lxml.isoschematron._schematron_root     lxml.isoschematron-module.html#_schematron_root
+lxml.isoschematron.extract_xsd  lxml.isoschematron-module.html#extract_xsd
+lxml.isoschematron.RELAXNG_NS   lxml.isoschematron-module.html#RELAXNG_NS
+lxml.isoschematron.XML_SCHEMA_NS        lxml.isoschematron-module.html#XML_SCHEMA_NS
+lxml.isoschematron.schematron_schema_valid      lxml.isoschematron-module.html#schematron_schema_valid
+lxml.isoschematron.stylesheet_params    lxml.isoschematron-module.html#stylesheet_params
+lxml.isoschematron.iso_abstract_expand  lxml.isoschematron-module.html#iso_abstract_expand
+lxml.objectify  lxml.objectify-module.html
+lxml.objectify.enable_recursive_str     lxml.objectify-module.html#enable_recursive_str
+lxml.objectify.dump     lxml.objectify-module.html#dump
+lxml.objectify.__parseBool      lxml.objectify-module.html#__parseBool
+lxml.objectify.annotate lxml.objectify-module.html#annotate
+lxml.objectify.set_default_parser       lxml.objectify-module.html#set_default_parser
+lxml.objectify.pyannotate       lxml.objectify-module.html#pyannotate
+lxml.objectify.getRegisteredTypes       lxml.objectify-module.html#getRegisteredTypes
+lxml.objectify.xsiannotate      lxml.objectify-module.html#xsiannotate
+lxml.objectify.PYTYPE_ATTRIBUTE lxml.objectify-module.html#PYTYPE_ATTRIBUTE
+lxml.objectify.__package__      lxml.objectify-module.html#__package__
+lxml.objectify.pytypename       lxml.objectify-module.html#pytypename
+lxml.objectify.makeparser       lxml.objectify-module.html#makeparser
+lxml.objectify.XML      lxml.objectify-module.html#XML
+lxml.objectify.deannotate       lxml.objectify-module.html#deannotate
+lxml.objectify.E        lxml.objectify-module.html#E
+lxml.objectify.Element  lxml.objectify-module.html#Element
+lxml.objectify.__test__ lxml.objectify-module.html#__test__
+lxml.objectify.__unpickleElementTree    lxml.objectify-module.html#__unpickleElementTree
+lxml.objectify.__lower_bool     lxml.objectify-module.html#__lower_bool
+lxml.objectify.parse    lxml.objectify-module.html#parse
+lxml.objectify.set_pytype_attribute_tag lxml.objectify-module.html#set_pytype_attribute_tag
+lxml.objectify.__checkBool      lxml.objectify-module.html#__checkBool
+lxml.objectify.fromstring       lxml.objectify-module.html#fromstring
+lxml.objectify.DataElement      lxml.objectify-module.html#DataElement
+lxml.pyclasslookup      lxml.pyclasslookup-module.html
+lxml.pyclasslookup.__package__  lxml.pyclasslookup-module.html#__package__
+lxml.sax        lxml.sax-module.html
+lxml.sax.Comment        lxml.etree-module.html#Comment
+lxml.sax.ProcessingInstruction  lxml.etree-module.html#PI
+lxml.sax.SubElement     lxml.etree-module.html#SubElement
+lxml.sax.__package__    lxml.sax-module.html#__package__
+lxml.sax.saxify lxml.sax-module.html#saxify
+lxml.sax._getNsTag      lxml.sax-module.html#_getNsTag
+lxml.sax.ElementTree    lxml.etree-module.html#ElementTree
+lxml.tests      lxml.tests-module.html
+lxml.tests.__package__  lxml.tests-module.html#__package__
+lxml.tests.common_imports       lxml.tests.common_imports-module.html
+lxml.tests.common_imports.make_doctest  lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.common_imports._str  lxml.tests.common_imports-module.html#_str
+lxml.tests.common_imports._bytes        lxml.tests.common_imports-module.html#_bytes
+lxml.tests.common_imports.canonicalize  lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.common_imports._fix_unicode  lxml.tests.common_imports-module.html#_fix_unicode
+lxml.tests.common_imports.write_to_file lxml.tests.common_imports-module.html#write_to_file
+lxml.tests.common_imports.__package__   lxml.tests.common_imports-module.html#__package__
+lxml.tests.common_imports.filter_by_version     lxml.tests.common_imports-module.html#filter_by_version
+lxml.tests.common_imports._get_caller_relative_path     lxml.tests.common_imports-module.html#_get_caller_relative_path
+lxml.tests.common_imports.unentitify    lxml.tests.common_imports-module.html#unentitify
+lxml.tests.common_imports.doctest_parser        lxml.tests.common_imports-module.html#doctest_parser
+lxml.tests.common_imports._fix_bytes    lxml.tests.common_imports-module.html#_fix_bytes
+lxml.tests.common_imports._fix_exceptions       lxml.tests.common_imports-module.html#_fix_exceptions
+lxml.tests.common_imports.make_version_tuple    lxml.tests.common_imports-module.html#make_version_tuple
+lxml.tests.common_imports.ET_VERSION    lxml.tests.common_imports-module.html#ET_VERSION
+lxml.tests.common_imports.read_file     lxml.tests.common_imports-module.html#read_file
+lxml.tests.common_imports.fileInTestDir lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.common_imports.CET_VERSION   lxml.tests.common_imports-module.html#CET_VERSION
+lxml.tests.common_imports._fix_traceback        lxml.tests.common_imports-module.html#_fix_traceback
+lxml.tests.common_imports.readFileInTestDir     lxml.tests.common_imports-module.html#readFileInTestDir
+lxml.tests.test_classlookup     lxml.tests.test_classlookup-module.html
+lxml.tests.test_classlookup.xml_str     lxml.tests.test_classlookup-module.html#xml_str
+lxml.tests.test_classlookup.this_dir    lxml.tests.test_classlookup-module.html#this_dir
+lxml.tests.test_classlookup.fileInTestDir       lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_classlookup._str        lxml.tests.common_imports-module.html#_str
+lxml.tests.test_classlookup.__package__ lxml.tests.test_classlookup-module.html#__package__
+lxml.tests.test_classlookup._bytes      lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_classlookup.test_suite  lxml.tests.test_classlookup-module.html#test_suite
+lxml.tests.test_classlookup.canonicalize        lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_css     lxml.tests.test_css-module.html
+lxml.tests.test_css.doc_fn      lxml.tests.test_css-module.html#doc_fn
+lxml.tests.test_css.make_doctest        lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_css.__package__ lxml.tests.test_css-module.html#__package__
+lxml.tests.test_css.test_suite  lxml.tests.test_css-module.html#test_suite
+lxml.tests.test_css.unique      lxml.tests.test_css-module.html#unique
+lxml.tests.test_dtd     lxml.tests.test_dtd-module.html
+lxml.tests.test_dtd.make_doctest        lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_dtd.fileInTestDir       lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_dtd.__package__ lxml.tests.test_dtd-module.html#__package__
+lxml.tests.test_dtd._bytes      lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_dtd.test_suite  lxml.tests.test_dtd-module.html#test_suite
+lxml.tests.test_dtd.this_dir    lxml.tests.test_dtd-module.html#this_dir
+lxml.tests.test_elementtree     lxml.tests.test_elementtree-module.html
+lxml.tests.test_elementtree._str        lxml.tests.common_imports-module.html#_str
+lxml.tests.test_elementtree.canonicalize        lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_elementtree._bytes      lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_elementtree.__package__ lxml.tests.test_elementtree-module.html#__package__
+lxml.tests.test_elementtree.filter_by_version   lxml.tests.common_imports-module.html#filter_by_version
+lxml.tests.test_elementtree.this_dir    lxml.tests.test_elementtree-module.html#this_dir
+lxml.tests.test_elementtree.reversed    lxml.tests.test_elementtree-module.html#reversed
+lxml.tests.test_elementtree.cElementTree        lxml.tests.test_elementtree-module.html#cElementTree
+lxml.tests.test_elementtree.fileInTestDir       lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_elementtree.test_suite  lxml.tests.test_elementtree-module.html#test_suite
+lxml.tests.test_errors  lxml.tests.test_errors-module.html
+lxml.tests.test_errors.__package__      lxml.tests.test_errors-module.html#__package__
+lxml.tests.test_errors.test_suite       lxml.tests.test_errors-module.html#test_suite
+lxml.tests.test_errors.this_dir lxml.tests.test_errors-module.html#this_dir
+lxml.tests.test_etree   lxml.tests.test_etree-module.html
+lxml.tests.test_etree.make_doctest      lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_etree._str      lxml.tests.common_imports-module.html#_str
+lxml.tests.test_etree._bytes    lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_etree.canonicalize      lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_etree.__package__       lxml.tests.test_etree-module.html#__package__
+lxml.tests.test_etree.this_dir  lxml.tests.test_etree-module.html#this_dir
+lxml.tests.test_etree.sorted    lxml.tests.common_imports-module.html#sorted
+lxml.tests.test_etree.fileInTestDir     lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_etree.test_suite        lxml.tests.test_etree-module.html#test_suite
+lxml.tests.test_etree.read_file lxml.tests.common_imports-module.html#read_file
+lxml.tests.test_htmlparser      lxml.tests.test_htmlparser-module.html
+lxml.tests.test_htmlparser._str lxml.tests.common_imports-module.html#_str
+lxml.tests.test_htmlparser.fileInTestDir        lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_htmlparser.__package__  lxml.tests.test_htmlparser-module.html#__package__
+lxml.tests.test_htmlparser.write_to_file        lxml.tests.common_imports-module.html#write_to_file
+lxml.tests.test_htmlparser._bytes       lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_htmlparser.test_suite   lxml.tests.test_htmlparser-module.html#test_suite
+lxml.tests.test_htmlparser.this_dir     lxml.tests.test_htmlparser-module.html#this_dir
+lxml.tests.test_io      lxml.tests.test_io-module.html
+lxml.tests.test_io._str lxml.tests.common_imports-module.html#_str
+lxml.tests.test_io._bytes       lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_io.read_file    lxml.tests.common_imports-module.html#read_file
+lxml.tests.test_io.this_dir     lxml.tests.test_io-module.html#this_dir
+lxml.tests.test_io.__package__  lxml.tests.test_io-module.html#__package__
+lxml.tests.test_io.write_to_file        lxml.tests.common_imports-module.html#write_to_file
+lxml.tests.test_io.fileInTestDir        lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_io.test_suite   lxml.tests.test_io-module.html#test_suite
+lxml.tests.test_isoschematron   lxml.tests.test_isoschematron-module.html
+lxml.tests.test_isoschematron.make_doctest      lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_isoschematron.fileInTestDir     lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_isoschematron.__package__       lxml.tests.test_isoschematron-module.html#__package__
+lxml.tests.test_isoschematron.test_suite        lxml.tests.test_isoschematron-module.html#test_suite
+lxml.tests.test_isoschematron.this_dir  lxml.tests.test_isoschematron-module.html#this_dir
+lxml.tests.test_nsclasses       lxml.tests.test_nsclasses-module.html
+lxml.tests.test_nsclasses.make_doctest  lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_nsclasses.__package__   lxml.tests.test_nsclasses-module.html#__package__
+lxml.tests.test_nsclasses._bytes        lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_nsclasses.test_suite    lxml.tests.test_nsclasses-module.html#test_suite
+lxml.tests.test_nsclasses.this_dir      lxml.tests.test_nsclasses-module.html#this_dir
+lxml.tests.test_objectify       lxml.tests.test_objectify-module.html
+lxml.tests.test_objectify.xsitype2objclass      lxml.tests.test_objectify-module.html#xsitype2objclass
+lxml.tests.test_objectify.make_doctest  lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_objectify._str  lxml.tests.common_imports-module.html#_str
+lxml.tests.test_objectify._bytes        lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_objectify.PYTYPE_NAMESPACE      lxml.tests.test_objectify-module.html#PYTYPE_NAMESPACE
+lxml.tests.test_objectify.canonicalize  lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_objectify.pytype2objclass       lxml.tests.test_objectify-module.html#pytype2objclass
+lxml.tests.test_objectify.xml_str       lxml.tests.test_objectify-module.html#xml_str
+lxml.tests.test_objectify.DEFAULT_NSMAP lxml.tests.test_objectify-module.html#DEFAULT_NSMAP
+lxml.tests.test_objectify.XML_SCHEMA_NS lxml.tests.test_objectify-module.html#XML_SCHEMA_NS
+lxml.tests.test_objectify.TREE_PYTYPE   lxml.tests.test_objectify-module.html#TREE_PYTYPE
+lxml.tests.test_objectify.__package__   lxml.tests.test_objectify-module.html#__package__
+lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_TYPE_ATTR lxml.tests.test_objectify-module.html#XML_SCHEMA_INSTANCE_TYPE_ATTR
+lxml.tests.test_objectify.XML_SCHEMA_NIL_ATTR   lxml.tests.test_objectify-module.html#XML_SCHEMA_NIL_ATTR
+lxml.tests.test_objectify.this_dir      lxml.tests.test_objectify-module.html#this_dir
+lxml.tests.test_objectify.XML_SCHEMA_INSTANCE_NS        lxml.tests.test_objectify-module.html#XML_SCHEMA_INSTANCE_NS
+lxml.tests.test_objectify.objectclass2xsitype   lxml.tests.test_objectify-module.html#objectclass2xsitype
+lxml.tests.test_objectify.v     lxml.tests.test_objectify-module.html#v
+lxml.tests.test_objectify.objectclass2pytype    lxml.tests.test_objectify-module.html#objectclass2pytype
+lxml.tests.test_objectify.fileInTestDir lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_objectify.test_suite    lxml.tests.test_objectify-module.html#test_suite
+lxml.tests.test_pyclasslookup   lxml.tests.test_pyclasslookup-module.html
+lxml.tests.test_pyclasslookup.xml_str   lxml.tests.test_pyclasslookup-module.html#xml_str
+lxml.tests.test_pyclasslookup.this_dir  lxml.tests.test_pyclasslookup-module.html#this_dir
+lxml.tests.test_pyclasslookup.fileInTestDir     lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_pyclasslookup.__package__       lxml.tests.test_pyclasslookup-module.html#__package__
+lxml.tests.test_pyclasslookup._bytes    lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_pyclasslookup.test_suite        lxml.tests.test_pyclasslookup-module.html#test_suite
+lxml.tests.test_pyclasslookup.canonicalize      lxml.tests.common_imports-module.html#canonicalize
+lxml.tests.test_relaxng lxml.tests.test_relaxng-module.html
+lxml.tests.test_relaxng.make_doctest    lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_relaxng.fileInTestDir   lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_relaxng.__package__     lxml.tests.test_relaxng-module.html#__package__
+lxml.tests.test_relaxng._bytes  lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_relaxng.test_suite      lxml.tests.test_relaxng-module.html#test_suite
+lxml.tests.test_relaxng.this_dir        lxml.tests.test_relaxng-module.html#this_dir
+lxml.tests.test_sax     lxml.tests.test_sax-module.html
+lxml.tests.test_sax.make_doctest        lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_sax.__package__ lxml.tests.test_sax-module.html#__package__
+lxml.tests.test_sax._bytes      lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_sax.test_suite  lxml.tests.test_sax-module.html#test_suite
+lxml.tests.test_sax.this_dir    lxml.tests.test_sax-module.html#this_dir
+lxml.tests.test_schematron      lxml.tests.test_schematron-module.html
+lxml.tests.test_schematron.make_doctest lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_schematron.fileInTestDir        lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_schematron.__package__  lxml.tests.test_schematron-module.html#__package__
+lxml.tests.test_schematron.test_suite   lxml.tests.test_schematron-module.html#test_suite
+lxml.tests.test_schematron.this_dir     lxml.tests.test_schematron-module.html#this_dir
+lxml.tests.test_threading       lxml.tests.test_threading-module.html
+lxml.tests.test_threading.__package__   lxml.tests.test_threading-module.html#__package__
+lxml.tests.test_threading._bytes        lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_threading.test_suite    lxml.tests.test_threading-module.html#test_suite
+lxml.tests.test_threading.this_dir      lxml.tests.test_threading-module.html#this_dir
+lxml.tests.test_unicode lxml.tests.test_unicode-module.html
+lxml.tests.test_unicode.uxml    lxml.tests.test_unicode-module.html#uxml
+lxml.tests.test_unicode.klingon lxml.tests.test_unicode-module.html#klingon
+lxml.tests.test_unicode.invalid_tag     lxml.tests.test_unicode-module.html#invalid_tag
+lxml.tests.test_unicode._str    lxml.tests.common_imports-module.html#_str
+lxml.tests.test_unicode.__package__     lxml.tests.test_unicode-module.html#__package__
+lxml.tests.test_unicode._bytes  lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_unicode.test_suite      lxml.tests.test_unicode-module.html#test_suite
+lxml.tests.test_unicode.this_dir        lxml.tests.test_unicode-module.html#this_dir
+lxml.tests.test_unicode.uni     lxml.tests.test_unicode-module.html#uni
+lxml.tests.test_unicode.ascii_uni       lxml.tests.test_unicode-module.html#ascii_uni
+lxml.tests.test_xmlschema       lxml.tests.test_xmlschema-module.html
+lxml.tests.test_xmlschema.make_doctest  lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_xmlschema.fileInTestDir lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_xmlschema.__package__   lxml.tests.test_xmlschema-module.html#__package__
+lxml.tests.test_xmlschema.test_suite    lxml.tests.test_xmlschema-module.html#test_suite
+lxml.tests.test_xmlschema.this_dir      lxml.tests.test_xmlschema-module.html#this_dir
+lxml.tests.test_xpathevaluator  lxml.tests.test_xpathevaluator-module.html
+lxml.tests.test_xpathevaluator.argsTest1        lxml.tests.test_xpathevaluator-module.html#argsTest1
+lxml.tests.test_xpathevaluator.argsTest2        lxml.tests.test_xpathevaluator-module.html#argsTest2
+lxml.tests.test_xpathevaluator.make_doctest     lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_xpathevaluator.tag      lxml.tests.test_xpathevaluator-module.html#tag
+lxml.tests.test_xpathevaluator.stringTest       lxml.tests.test_xpathevaluator-module.html#stringTest
+lxml.tests.test_xpathevaluator._bytes   lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_xpathevaluator.booleanTest      lxml.tests.test_xpathevaluator-module.html#booleanTest
+lxml.tests.test_xpathevaluator.this_dir lxml.tests.test_xpathevaluator-module.html#this_dir
+lxml.tests.test_xpathevaluator.setTest  lxml.tests.test_xpathevaluator-module.html#setTest
+lxml.tests.test_xpathevaluator.resultTypesTest2 lxml.tests.test_xpathevaluator-module.html#resultTypesTest2
+lxml.tests.test_xpathevaluator.SAMPLE_XML       lxml.tests.test_xpathevaluator-module.html#SAMPLE_XML
+lxml.tests.test_xpathevaluator.__package__      lxml.tests.test_xpathevaluator-module.html#__package__
+lxml.tests.test_xpathevaluator.test_suite       lxml.tests.test_xpathevaluator-module.html#test_suite
+lxml.tests.test_xpathevaluator.floatTest        lxml.tests.test_xpathevaluator-module.html#floatTest
+lxml.tests.test_xpathevaluator.stringListTest   lxml.tests.test_xpathevaluator-module.html#stringListTest
+lxml.tests.test_xpathevaluator.xpath    lxml.tests.test_xpathevaluator-module.html#xpath
+lxml.tests.test_xpathevaluator.tag_or_value     lxml.tests.test_xpathevaluator-module.html#tag_or_value
+lxml.tests.test_xpathevaluator.resultTypesTest  lxml.tests.test_xpathevaluator-module.html#resultTypesTest
+lxml.tests.test_xpathevaluator.extension        lxml.tests.test_xpathevaluator-module.html#extension
+lxml.tests.test_xpathevaluator.uri      lxml.tests.test_xpathevaluator-module.html#uri
+lxml.tests.test_xpathevaluator.setTest2 lxml.tests.test_xpathevaluator-module.html#setTest2
+lxml.tests.test_xslt    lxml.tests.test_xslt-module.html
+lxml.tests.test_xslt.make_doctest       lxml.tests.common_imports-module.html#make_doctest
+lxml.tests.test_xslt._str       lxml.tests.common_imports-module.html#_str
+lxml.tests.test_xslt._bytes     lxml.tests.common_imports-module.html#_bytes
+lxml.tests.test_xslt.this_dir   lxml.tests.test_xslt-module.html#this_dir
+lxml.tests.test_xslt.__package__        lxml.tests.test_xslt-module.html#__package__
+lxml.tests.test_xslt.is_python3 lxml.tests.test_xslt-module.html#is_python3
+lxml.tests.test_xslt.fileInTestDir      lxml.tests.common_imports-module.html#fileInTestDir
+lxml.tests.test_xslt.test_suite lxml.tests.test_xslt-module.html#test_suite
+lxml.usedoctest lxml.usedoctest-module.html
+xml.etree.ElementTree   xml.etree.ElementTree-module.html
+xml.etree.ElementTree.XMLID     xml.etree.ElementTree-module.html#XMLID
+xml.etree.ElementTree.fixtag    xml.etree.ElementTree-module.html#fixtag
+xml.etree.ElementTree.dump      xml.etree.ElementTree-module.html#dump
+xml.etree.ElementTree.parse     xml.etree.ElementTree-module.html#parse
+xml.etree.ElementTree._encode   xml.etree.ElementTree-module.html#_encode
+xml.etree.ElementTree._namespace_map    xml.etree.ElementTree-module.html#_namespace_map
+xml.etree.ElementTree._encode_entity    xml.etree.ElementTree-module.html#_encode_entity
+xml.etree.ElementTree.__package__       xml.etree.ElementTree-module.html#__package__
+xml.etree.ElementTree.PI        xml.etree.ElementTree-module.html#PI
+xml.etree.ElementTree.XML       xml.etree.ElementTree-module.html#XML
+xml.etree.ElementTree._raise_serialization_error        xml.etree.ElementTree-module.html#_raise_serialization_error
+xml.etree.ElementTree._escape_cdata     xml.etree.ElementTree-module.html#_escape_cdata
+xml.etree.ElementTree._escape_map       xml.etree.ElementTree-module.html#_escape_map
+xml.etree.ElementTree._escape_attrib    xml.etree.ElementTree-module.html#_escape_attrib
+xml.etree.ElementTree.Element   xml.etree.ElementTree-module.html#Element
+xml.etree.ElementTree.VERSION   xml.etree.ElementTree-module.html#VERSION
+xml.etree.ElementTree.tostring  xml.etree.ElementTree-module.html#tostring
+xml.etree.ElementTree.iselement xml.etree.ElementTree-module.html#iselement
+xml.etree.ElementTree._escape   xml.etree.ElementTree-module.html#_escape
+xml.etree.ElementTree.Comment   xml.etree.ElementTree-module.html#Comment
+xml.etree.ElementTree.ProcessingInstruction     xml.etree.ElementTree-module.html#ProcessingInstruction
+xml.etree.ElementTree.fromstring        xml.etree.ElementTree-module.html#fromstring
+xml.etree.ElementTree.SubElement        xml.etree.ElementTree-module.html#SubElement
+exceptions.AssertionError       exceptions.AssertionError-class.html
+exceptions.AssertionError.__init__      exceptions.AssertionError-class.html#__init__
+exceptions.AssertionError.__new__       exceptions.AssertionError-class.html#__new__
+lxml.ElementInclude.FatalIncludeError   lxml.ElementInclude.FatalIncludeError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.builder.ElementMaker       lxml.builder.ElementMaker-class.html
+lxml.builder.ElementMaker.__getattr__   lxml.builder.ElementMaker-class.html#__getattr__
+lxml.builder.ElementMaker.__call__      lxml.builder.ElementMaker-class.html#__call__
+lxml.builder.ElementMaker.__init__      lxml.builder.ElementMaker-class.html#__init__
+lxml.cssselect.Attrib   lxml.cssselect.Attrib-class.html
+lxml.cssselect.Attrib.xpath     lxml.cssselect.Attrib-class.html#xpath
+lxml.cssselect.Attrib._xpath_attrib     lxml.cssselect.Attrib-class.html#_xpath_attrib
+lxml.cssselect.Attrib.__repr__  lxml.cssselect.Attrib-class.html#__repr__
+lxml.cssselect.Attrib.__init__  lxml.cssselect.Attrib-class.html#__init__
+lxml.cssselect.Attrib._format_attrib    lxml.cssselect.Attrib-class.html#_format_attrib
+lxml.cssselect.CSSSelector      lxml.cssselect.CSSSelector-class.html
+lxml.etree.XPath.__new__        lxml.etree.XPath-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log        lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.cssselect.CSSSelector.__repr__     lxml.cssselect.CSSSelector-class.html#__repr__
+lxml.etree.XPath.__call__       lxml.etree.XPath-class.html#__call__
+lxml.etree.XPath.path   lxml.etree.XPath-class.html#path
+lxml.cssselect.CSSSelector.__init__     lxml.cssselect.CSSSelector-class.html#__init__
+lxml.cssselect.Class    lxml.cssselect.Class-class.html
+lxml.cssselect.Class.xpath      lxml.cssselect.Class-class.html#xpath
+lxml.cssselect.Class.__repr__   lxml.cssselect.Class-class.html#__repr__
+lxml.cssselect.Class.__init__   lxml.cssselect.Class-class.html#__init__
+lxml.cssselect.CombinedSelector lxml.cssselect.CombinedSelector-class.html
+lxml.cssselect.CombinedSelector.xpath   lxml.cssselect.CombinedSelector-class.html#xpath
+lxml.cssselect.CombinedSelector._xpath_descendant       lxml.cssselect.CombinedSelector-class.html#_xpath_descendant
+lxml.cssselect.CombinedSelector._xpath_indirect_adjacent        lxml.cssselect.CombinedSelector-class.html#_xpath_indirect_adjacent
+lxml.cssselect.CombinedSelector._xpath_child    lxml.cssselect.CombinedSelector-class.html#_xpath_child
+lxml.cssselect.CombinedSelector.__repr__        lxml.cssselect.CombinedSelector-class.html#__repr__
+lxml.cssselect.CombinedSelector._xpath_direct_adjacent  lxml.cssselect.CombinedSelector-class.html#_xpath_direct_adjacent
+lxml.cssselect.CombinedSelector._method_mapping lxml.cssselect.CombinedSelector-class.html#_method_mapping
+lxml.cssselect.CombinedSelector.__init__        lxml.cssselect.CombinedSelector-class.html#__init__
+lxml.cssselect.Element  lxml.cssselect.Element-class.html
+lxml.cssselect.Element.xpath    lxml.cssselect.Element-class.html#xpath
+lxml.cssselect.Element._format_element  lxml.cssselect.Element-class.html#_format_element
+lxml.cssselect.Element.__repr__ lxml.cssselect.Element-class.html#__repr__
+lxml.cssselect.Element.__init__ lxml.cssselect.Element-class.html#__init__
+lxml.cssselect.ExpressionError  lxml.cssselect.ExpressionError-class.html
+lxml.cssselect.Function lxml.cssselect.Function-class.html
+lxml.cssselect.Function._xpath_nth_last_child   lxml.cssselect.Function-class.html#_xpath_nth_last_child
+lxml.cssselect.Function.unsupported     lxml.cssselect.Function-class.html#unsupported
+lxml.cssselect.Function._xpath_nth_last_of_type lxml.cssselect.Function-class.html#_xpath_nth_last_of_type
+lxml.cssselect.Function.__init__        lxml.cssselect.Function-class.html#__init__
+lxml.cssselect.Function._xpath_nth_of_type      lxml.cssselect.Function-class.html#_xpath_nth_of_type
+lxml.cssselect.Function.xpath   lxml.cssselect.Function-class.html#xpath
+lxml.cssselect.Function._xpath_not      lxml.cssselect.Function-class.html#_xpath_not
+lxml.cssselect.Function._xpath_nth_child        lxml.cssselect.Function-class.html#_xpath_nth_child
+lxml.cssselect.Function._xpath_contains lxml.cssselect.Function-class.html#_xpath_contains
+lxml.cssselect.Function.__repr__        lxml.cssselect.Function-class.html#__repr__
+lxml.cssselect.Hash     lxml.cssselect.Hash-class.html
+lxml.cssselect.Hash.xpath       lxml.cssselect.Hash-class.html#xpath
+lxml.cssselect.Hash.__repr__    lxml.cssselect.Hash-class.html#__repr__
+lxml.cssselect.Hash.__init__    lxml.cssselect.Hash-class.html#__init__
+lxml.cssselect.Or       lxml.cssselect.Or-class.html
+lxml.cssselect.Or.xpath lxml.cssselect.Or-class.html#xpath
+lxml.cssselect.Or.__repr__      lxml.cssselect.Or-class.html#__repr__
+lxml.cssselect.Or.__init__      lxml.cssselect.Or-class.html#__init__
+lxml.cssselect.Pseudo   lxml.cssselect.Pseudo-class.html
+lxml.cssselect.Pseudo.unsupported       lxml.cssselect.Pseudo-class.html#unsupported
+lxml.cssselect.Pseudo._xpath_first_child        lxml.cssselect.Pseudo-class.html#_xpath_first_child
+lxml.cssselect.Pseudo._xpath_checked    lxml.cssselect.Pseudo-class.html#_xpath_checked
+lxml.cssselect.Pseudo.__init__  lxml.cssselect.Pseudo-class.html#__init__
+lxml.cssselect.Pseudo._xpath_first_of_type      lxml.cssselect.Pseudo-class.html#_xpath_first_of_type
+lxml.cssselect.Pseudo._xpath_only_child lxml.cssselect.Pseudo-class.html#_xpath_only_child
+lxml.cssselect.Pseudo._xpath_empty      lxml.cssselect.Pseudo-class.html#_xpath_empty
+lxml.cssselect.Pseudo._xpath_root       lxml.cssselect.Pseudo-class.html#_xpath_root
+lxml.cssselect.Pseudo.xpath     lxml.cssselect.Pseudo-class.html#xpath
+lxml.cssselect.Pseudo._xpath_only_of_type       lxml.cssselect.Pseudo-class.html#_xpath_only_of_type
+lxml.cssselect.Pseudo.__repr__  lxml.cssselect.Pseudo-class.html#__repr__
+lxml.cssselect.Pseudo._xpath_last_of_type       lxml.cssselect.Pseudo-class.html#_xpath_last_of_type
+lxml.cssselect.Pseudo._xpath_last_child lxml.cssselect.Pseudo-class.html#_xpath_last_child
+lxml.cssselect.SelectorSyntaxError      lxml.cssselect.SelectorSyntaxError-class.html
+lxml.cssselect.String   lxml.cssselect.String-class.html
+lxml.cssselect._UniToken.__new__        lxml.cssselect._UniToken-class.html#__new__
+lxml.cssselect._UniToken.__repr__       lxml.cssselect._UniToken-class.html#__repr__
+lxml.cssselect.Symbol   lxml.cssselect.Symbol-class.html
+lxml.cssselect._UniToken.__new__        lxml.cssselect._UniToken-class.html#__new__
+lxml.cssselect._UniToken.__repr__       lxml.cssselect._UniToken-class.html#__repr__
+lxml.cssselect.Token    lxml.cssselect.Token-class.html
+lxml.cssselect._UniToken.__new__        lxml.cssselect._UniToken-class.html#__new__
+lxml.cssselect._UniToken.__repr__       lxml.cssselect._UniToken-class.html#__repr__
+lxml.cssselect.TokenStream      lxml.cssselect.TokenStream-class.html
+lxml.cssselect.TokenStream.peek lxml.cssselect.TokenStream-class.html#peek
+lxml.cssselect.TokenStream.next lxml.cssselect.TokenStream-class.html#next
+lxml.cssselect.TokenStream.__iter__     lxml.cssselect.TokenStream-class.html#__iter__
+lxml.cssselect.TokenStream.__init__     lxml.cssselect.TokenStream-class.html#__init__
+lxml.cssselect.XPathExpr        lxml.cssselect.XPathExpr-class.html
+lxml.cssselect.XPathExpr.add_star_prefix        lxml.cssselect.XPathExpr-class.html#add_star_prefix
+lxml.cssselect.XPathExpr.join   lxml.cssselect.XPathExpr-class.html#join
+lxml.cssselect.XPathExpr.add_path       lxml.cssselect.XPathExpr-class.html#add_path
+lxml.cssselect.XPathExpr.__str__        lxml.cssselect.XPathExpr-class.html#__str__
+lxml.cssselect.XPathExpr.add_name_test  lxml.cssselect.XPathExpr-class.html#add_name_test
+lxml.cssselect.XPathExpr.__repr__       lxml.cssselect.XPathExpr-class.html#__repr__
+lxml.cssselect.XPathExpr.add_condition  lxml.cssselect.XPathExpr-class.html#add_condition
+lxml.cssselect.XPathExpr.add_prefix     lxml.cssselect.XPathExpr-class.html#add_prefix
+lxml.cssselect.XPathExpr.__init__       lxml.cssselect.XPathExpr-class.html#__init__
+lxml.cssselect.XPathExprOr      lxml.cssselect.XPathExprOr-class.html
+lxml.cssselect.XPathExpr.add_star_prefix        lxml.cssselect.XPathExpr-class.html#add_star_prefix
+lxml.cssselect.XPathExpr.join   lxml.cssselect.XPathExpr-class.html#join
+lxml.cssselect.XPathExpr.add_path       lxml.cssselect.XPathExpr-class.html#add_path
+lxml.cssselect.XPathExprOr.__str__      lxml.cssselect.XPathExprOr-class.html#__str__
+lxml.cssselect.XPathExpr.add_name_test  lxml.cssselect.XPathExpr-class.html#add_name_test
+lxml.cssselect.XPathExpr.__repr__       lxml.cssselect.XPathExpr-class.html#__repr__
+lxml.cssselect.XPathExpr.add_condition  lxml.cssselect.XPathExpr-class.html#add_condition
+lxml.cssselect.XPathExpr.add_prefix     lxml.cssselect.XPathExpr-class.html#add_prefix
+lxml.cssselect.XPathExprOr.__init__     lxml.cssselect.XPathExprOr-class.html#__init__
+lxml.cssselect._UniToken        lxml.cssselect._UniToken-class.html
+lxml.cssselect._UniToken.__new__        lxml.cssselect._UniToken-class.html#__new__
+lxml.cssselect._UniToken.__repr__       lxml.cssselect._UniToken-class.html#__repr__
+lxml.doctestcompare.LHTMLOutputChecker  lxml.doctestcompare.LHTMLOutputChecker-class.html
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_end_tag      lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_end_tag
+lxml.doctestcompare.LXMLOutputChecker.text_compare      lxml.doctestcompare.LXMLOutputChecker-class.html#text_compare
+lxml.doctestcompare.LHTMLOutputChecker.get_default_parser       lxml.doctestcompare.LHTMLOutputChecker-class.html#get_default_parser
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_tag  lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_tag
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_text lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_text
+lxml.doctestcompare.LXMLOutputChecker.get_parser        lxml.doctestcompare.LXMLOutputChecker-class.html#get_parser
+lxml.doctestcompare.LXMLOutputChecker.collect_diff      lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff
+lxml.doctestcompare.LXMLOutputChecker.html_empty_tag    lxml.doctestcompare.LXMLOutputChecker-class.html#html_empty_tag
+lxml.doctestcompare.LXMLOutputChecker._looks_like_markup        lxml.doctestcompare.LXMLOutputChecker-class.html#_looks_like_markup
+lxml.doctestcompare.LXMLOutputChecker.format_tag        lxml.doctestcompare.LXMLOutputChecker-class.html#format_tag
+lxml.doctestcompare.LXMLOutputChecker.check_output      lxml.doctestcompare.LXMLOutputChecker-class.html#check_output
+lxml.doctestcompare.LXMLOutputChecker.compare_docs      lxml.doctestcompare.LXMLOutputChecker-class.html#compare_docs
+lxml.doctestcompare.LXMLOutputChecker.format_doc        lxml.doctestcompare.LXMLOutputChecker-class.html#format_doc
+lxml.doctestcompare.LXMLOutputChecker.output_difference lxml.doctestcompare.LXMLOutputChecker-class.html#output_difference
+lxml.doctestcompare.LXMLOutputChecker.format_end_tag    lxml.doctestcompare.LXMLOutputChecker-class.html#format_end_tag
+lxml.doctestcompare.LXMLOutputChecker.format_text       lxml.doctestcompare.LXMLOutputChecker-class.html#format_text
+lxml.doctestcompare.LXMLOutputChecker.empty_tags        lxml.doctestcompare.LXMLOutputChecker-class.html#empty_tags
+lxml.doctestcompare.LXMLOutputChecker.tag_compare       lxml.doctestcompare.LXMLOutputChecker-class.html#tag_compare
+lxml.doctestcompare.LXMLOutputChecker   lxml.doctestcompare.LXMLOutputChecker-class.html
+lxml.doctestcompare.LXMLOutputChecker.text_compare      lxml.doctestcompare.LXMLOutputChecker-class.html#text_compare
+lxml.doctestcompare.LXMLOutputChecker._looks_like_markup        lxml.doctestcompare.LXMLOutputChecker-class.html#_looks_like_markup
+lxml.doctestcompare.LXMLOutputChecker.empty_tags        lxml.doctestcompare.LXMLOutputChecker-class.html#empty_tags
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_tag  lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_tag
+lxml.doctestcompare.LXMLOutputChecker.compare_docs      lxml.doctestcompare.LXMLOutputChecker-class.html#compare_docs
+lxml.doctestcompare.LXMLOutputChecker.get_parser        lxml.doctestcompare.LXMLOutputChecker-class.html#get_parser
+lxml.doctestcompare.LXMLOutputChecker.html_empty_tag    lxml.doctestcompare.LXMLOutputChecker-class.html#html_empty_tag
+lxml.doctestcompare.LXMLOutputChecker.get_default_parser        lxml.doctestcompare.LXMLOutputChecker-class.html#get_default_parser
+lxml.doctestcompare.LXMLOutputChecker.format_tag        lxml.doctestcompare.LXMLOutputChecker-class.html#format_tag
+lxml.doctestcompare.LXMLOutputChecker.check_output      lxml.doctestcompare.LXMLOutputChecker-class.html#check_output
+lxml.doctestcompare.LXMLOutputChecker.collect_diff      lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff
+lxml.doctestcompare.LXMLOutputChecker.tag_compare       lxml.doctestcompare.LXMLOutputChecker-class.html#tag_compare
+lxml.doctestcompare.LXMLOutputChecker.format_doc        lxml.doctestcompare.LXMLOutputChecker-class.html#format_doc
+lxml.doctestcompare.LXMLOutputChecker.output_difference lxml.doctestcompare.LXMLOutputChecker-class.html#output_difference
+lxml.doctestcompare.LXMLOutputChecker.format_end_tag    lxml.doctestcompare.LXMLOutputChecker-class.html#format_end_tag
+lxml.doctestcompare.LXMLOutputChecker.format_text       lxml.doctestcompare.LXMLOutputChecker-class.html#format_text
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_end_tag      lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_end_tag
+lxml.doctestcompare.LXMLOutputChecker.collect_diff_text lxml.doctestcompare.LXMLOutputChecker-class.html#collect_diff_text
+lxml.doctestcompare._RestoreChecker     lxml.doctestcompare._RestoreChecker-class.html
+lxml.doctestcompare._RestoreChecker.uninstall_dt_self   lxml.doctestcompare._RestoreChecker-class.html#uninstall_dt_self
+lxml.doctestcompare._RestoreChecker.install_clone       lxml.doctestcompare._RestoreChecker-class.html#install_clone
+lxml.doctestcompare._RestoreChecker.uninstall_module    lxml.doctestcompare._RestoreChecker-class.html#uninstall_module
+lxml.doctestcompare._RestoreChecker.uninstall_clone     lxml.doctestcompare._RestoreChecker-class.html#uninstall_clone
+lxml.doctestcompare._RestoreChecker.install_dt_self     lxml.doctestcompare._RestoreChecker-class.html#install_dt_self
+lxml.doctestcompare._RestoreChecker.__call__    lxml.doctestcompare._RestoreChecker-class.html#__call__
+lxml.doctestcompare._RestoreChecker.call_super  lxml.doctestcompare._RestoreChecker-class.html#call_super
+lxml.doctestcompare._RestoreChecker.__init__    lxml.doctestcompare._RestoreChecker-class.html#__init__
+lxml.etree.AncestorsIterator    lxml.etree.AncestorsIterator-class.html
+lxml.etree.AncestorsIterator.__new__    lxml.etree.AncestorsIterator-class.html#__new__
+lxml.etree._ElementIterator.__next__    lxml.etree._ElementIterator-class.html#__next__
+lxml.etree._ElementIterator.next        lxml.etree._ElementIterator-class.html#next
+lxml.etree._ElementIterator.__iter__    lxml.etree._ElementIterator-class.html#__iter__
+lxml.etree.AttributeBasedElementClassLookup     lxml.etree.AttributeBasedElementClassLookup-class.html
+lxml.etree.AttributeBasedElementClassLookup.__new__     lxml.etree.AttributeBasedElementClassLookup-class.html#__new__
+lxml.etree.FallbackElementClassLookup.fallback  lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback      lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.AttributeBasedElementClassLookup.__init__    lxml.etree.AttributeBasedElementClassLookup-class.html#__init__
+lxml.etree.C14NError    lxml.etree.C14NError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.CDATA        lxml.etree.CDATA-class.html
+lxml.etree.CDATA.__new__        lxml.etree.CDATA-class.html#__new__
+lxml.etree.CDATA.__init__       lxml.etree.CDATA-class.html#__init__
+lxml.etree.CommentBase  lxml.etree.CommentBase-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text    lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Comment.tag lxml.etree._Comment-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree.CommentBase.__new__  lxml.etree.CommentBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.CommentBase.__init__ lxml.etree.CommentBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Comment.__repr__    lxml.etree._Comment-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree.CustomElementClassLookup     lxml.etree.CustomElementClassLookup-class.html
+lxml.etree.CustomElementClassLookup.__new__     lxml.etree.CustomElementClassLookup-class.html#__new__
+lxml.etree.CustomElementClassLookup.lookup      lxml.etree.CustomElementClassLookup-class.html#lookup
+lxml.etree.FallbackElementClassLookup.fallback  lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback      lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.FallbackElementClassLookup.__init__  lxml.etree.FallbackElementClassLookup-class.html#__init__
+lxml.etree.DTD  lxml.etree.DTD-class.html
+lxml.etree.DTD.__new__  lxml.etree.DTD-class.html#__new__
+lxml.etree._Validator._clear_error_log  lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid       lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message       lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log lxml.etree._Validator-class.html#error_log
+lxml.etree.DTD.__call__ lxml.etree.DTD-class.html#__call__
+lxml.etree._Validator.assert_   lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate  lxml.etree._Validator-class.html#validate
+lxml.etree.DTD.__init__ lxml.etree.DTD-class.html#__init__
+lxml.etree.DTDError     lxml.etree.DTDError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.DTDParseError        lxml.etree.DTDParseError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.DTDValidateError     lxml.etree.DTDValidateError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.DocInfo      lxml.etree.DocInfo-class.html
+lxml.etree.DocInfo.xml_version  lxml.etree.DocInfo-class.html#xml_version
+lxml.etree.DocInfo.public_id    lxml.etree.DocInfo-class.html#public_id
+lxml.etree.DocInfo.encoding     lxml.etree.DocInfo-class.html#encoding
+lxml.etree.DocInfo.externalDTD  lxml.etree.DocInfo-class.html#externalDTD
+lxml.etree.DocInfo.system_url   lxml.etree.DocInfo-class.html#system_url
+lxml.etree.DocInfo.__new__      lxml.etree.DocInfo-class.html#__new__
+lxml.etree.DocInfo.internalDTD  lxml.etree.DocInfo-class.html#internalDTD
+lxml.etree.DocInfo.URL  lxml.etree.DocInfo-class.html#URL
+lxml.etree.DocInfo.standalone   lxml.etree.DocInfo-class.html#standalone
+lxml.etree.DocInfo.root_name    lxml.etree.DocInfo-class.html#root_name
+lxml.etree.DocInfo.doctype      lxml.etree.DocInfo-class.html#doctype
+lxml.etree.DocumentInvalid      lxml.etree.DocumentInvalid-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.ETCompatXMLParser    lxml.etree.ETCompatXMLParser-class.html
+lxml.etree._FeedParser.feed     lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close    lxml.etree._FeedParser-class.html#close
+lxml.etree.ETCompatXMLParser.__init__   lxml.etree.ETCompatXMLParser-class.html#__init__
+lxml.etree.ETCompatXMLParser.__new__    lxml.etree.ETCompatXMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup    lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version  lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement      lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy     lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers        lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target   lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log        lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log   lxml.etree._FeedParser-class.html#feed_error_log
+lxml.etree.ETXPath      lxml.etree.ETXPath-class.html
+lxml.etree.ETXPath.__new__      lxml.etree.ETXPath-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log        lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree.XPath.__repr__       lxml.etree.XPath-class.html#__repr__
+lxml.etree.XPath.__call__       lxml.etree.XPath-class.html#__call__
+lxml.etree.XPath.path   lxml.etree.XPath-class.html#path
+lxml.etree.ETXPath.__init__     lxml.etree.ETXPath-class.html#__init__
+lxml.etree.ElementBase  lxml.etree.ElementBase-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree.ElementChildIterator lxml.etree.ElementChildIterator-class.html
+lxml.etree.ElementChildIterator.__new__ lxml.etree.ElementChildIterator-class.html#__new__
+lxml.etree._ElementIterator.__next__    lxml.etree._ElementIterator-class.html#__next__
+lxml.etree._ElementIterator.next        lxml.etree._ElementIterator-class.html#next
+lxml.etree._ElementIterator.__iter__    lxml.etree._ElementIterator-class.html#__iter__
+lxml.etree.ElementClassLookup   lxml.etree.ElementClassLookup-class.html
+lxml.etree.ElementClassLookup.__new__   lxml.etree.ElementClassLookup-class.html#__new__
+lxml.etree.ElementDefaultClassLookup    lxml.etree.ElementDefaultClassLookup-class.html
+lxml.etree.ElementDefaultClassLookup.entity_class       lxml.etree.ElementDefaultClassLookup-class.html#entity_class
+lxml.etree.ElementDefaultClassLookup.__new__    lxml.etree.ElementDefaultClassLookup-class.html#__new__
+lxml.etree.ElementDefaultClassLookup.element_class      lxml.etree.ElementDefaultClassLookup-class.html#element_class
+lxml.etree.ElementDefaultClassLookup.pi_class   lxml.etree.ElementDefaultClassLookup-class.html#pi_class
+lxml.etree.ElementDefaultClassLookup.comment_class      lxml.etree.ElementDefaultClassLookup-class.html#comment_class
+lxml.etree.ElementDefaultClassLookup.__init__   lxml.etree.ElementDefaultClassLookup-class.html#__init__
+lxml.etree.ElementDepthFirstIterator    lxml.etree.ElementDepthFirstIterator-class.html
+lxml.etree.ElementDepthFirstIterator.__new__    lxml.etree.ElementDepthFirstIterator-class.html#__new__
+lxml.etree.ElementDepthFirstIterator.__next__   lxml.etree.ElementDepthFirstIterator-class.html#__next__
+lxml.etree.ElementDepthFirstIterator.next       lxml.etree.ElementDepthFirstIterator-class.html#next
+lxml.etree.ElementDepthFirstIterator.__iter__   lxml.etree.ElementDepthFirstIterator-class.html#__iter__
+lxml.etree.ElementNamespaceClassLookup  lxml.etree.ElementNamespaceClassLookup-class.html
+lxml.etree.ElementNamespaceClassLookup.__new__  lxml.etree.ElementNamespaceClassLookup-class.html#__new__
+lxml.etree.ElementNamespaceClassLookup.get_namespace    lxml.etree.ElementNamespaceClassLookup-class.html#get_namespace
+lxml.etree.FallbackElementClassLookup.fallback  lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback      lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.ElementNamespaceClassLookup.__init__ lxml.etree.ElementNamespaceClassLookup-class.html#__init__
+lxml.etree.ElementTextIterator  lxml.etree.ElementTextIterator-class.html
+lxml.etree.ElementTextIterator.__new__  lxml.etree.ElementTextIterator-class.html#__new__
+lxml.etree.ElementTextIterator.__next__ lxml.etree.ElementTextIterator-class.html#__next__
+lxml.etree.ElementTextIterator.next     lxml.etree.ElementTextIterator-class.html#next
+lxml.etree.ElementTextIterator.__iter__ lxml.etree.ElementTextIterator-class.html#__iter__
+lxml.etree.EntityBase   lxml.etree.EntityBase-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Entity.text lxml.etree._Entity-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Entity.tag  lxml.etree._Entity-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree.EntityBase.__new__   lxml.etree.EntityBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.EntityBase.__init__  lxml.etree.EntityBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Entity.name lxml.etree._Entity-class.html#name
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Entity.__repr__     lxml.etree._Entity-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree.Error        lxml.etree.Error-class.html
+lxml.etree.ErrorDomains lxml.etree.ErrorDomains-class.html
+lxml.etree.ErrorDomains.HTTP    lxml.etree.ErrorDomains-class.html#HTTP
+lxml.etree.ErrorDomains.SCHEMATRONV     lxml.etree.ErrorDomains-class.html#SCHEMATRONV
+lxml.etree.ErrorDomains.DTD     lxml.etree.ErrorDomains-class.html#DTD
+lxml.etree.ErrorDomains.VALID   lxml.etree.ErrorDomains-class.html#VALID
+lxml.etree.ErrorDomains.I18N    lxml.etree.ErrorDomains-class.html#I18N
+lxml.etree.ErrorDomains._getName        lxml.etree.ErrorDomains-class.html#_getName
+lxml.etree.ErrorDomains.C14N    lxml.etree.ErrorDomains-class.html#C14N
+lxml.etree.ErrorDomains.NONE    lxml.etree.ErrorDomains-class.html#NONE
+lxml.etree.ErrorDomains.DATATYPE        lxml.etree.ErrorDomains-class.html#DATATYPE
+lxml.etree.ErrorDomains.XINCLUDE        lxml.etree.ErrorDomains-class.html#XINCLUDE
+lxml.etree.ErrorDomains.HTML    lxml.etree.ErrorDomains-class.html#HTML
+lxml.etree.ErrorDomains.CHECK   lxml.etree.ErrorDomains-class.html#CHECK
+lxml.etree.ErrorDomains.FTP     lxml.etree.ErrorDomains-class.html#FTP
+lxml.etree.ErrorDomains._names  lxml.etree.ErrorDomains-class.html#_names
+lxml.etree.ErrorDomains.XSLT    lxml.etree.ErrorDomains-class.html#XSLT
+lxml.etree.ErrorDomains.PARSER  lxml.etree.ErrorDomains-class.html#PARSER
+lxml.etree.ErrorDomains.NAMESPACE       lxml.etree.ErrorDomains-class.html#NAMESPACE
+lxml.etree.ErrorDomains.MODULE  lxml.etree.ErrorDomains-class.html#MODULE
+lxml.etree.ErrorDomains.IO      lxml.etree.ErrorDomains-class.html#IO
+lxml.etree.ErrorDomains.REGEXP  lxml.etree.ErrorDomains-class.html#REGEXP
+lxml.etree.ErrorDomains.XPATH   lxml.etree.ErrorDomains-class.html#XPATH
+lxml.etree.ErrorDomains.RELAXNGV        lxml.etree.ErrorDomains-class.html#RELAXNGV
+lxml.etree.ErrorDomains.RELAXNGP        lxml.etree.ErrorDomains-class.html#RELAXNGP
+lxml.etree.ErrorDomains.WRITER  lxml.etree.ErrorDomains-class.html#WRITER
+lxml.etree.ErrorDomains.TREE    lxml.etree.ErrorDomains-class.html#TREE
+lxml.etree.ErrorDomains.SCHEMASP        lxml.etree.ErrorDomains-class.html#SCHEMASP
+lxml.etree.ErrorDomains.CATALOG lxml.etree.ErrorDomains-class.html#CATALOG
+lxml.etree.ErrorDomains.SCHEMASV        lxml.etree.ErrorDomains-class.html#SCHEMASV
+lxml.etree.ErrorDomains.MEMORY  lxml.etree.ErrorDomains-class.html#MEMORY
+lxml.etree.ErrorDomains.OUTPUT  lxml.etree.ErrorDomains-class.html#OUTPUT
+lxml.etree.ErrorDomains.XPOINTER        lxml.etree.ErrorDomains-class.html#XPOINTER
+lxml.etree.ErrorLevels  lxml.etree.ErrorLevels-class.html
+lxml.etree.ErrorLevels.NONE     lxml.etree.ErrorLevels-class.html#NONE
+lxml.etree.ErrorLevels._names   lxml.etree.ErrorLevels-class.html#_names
+lxml.etree.ErrorLevels.WARNING  lxml.etree.ErrorLevels-class.html#WARNING
+lxml.etree.ErrorLevels.ERROR    lxml.etree.ErrorLevels-class.html#ERROR
+lxml.etree.ErrorLevels.FATAL    lxml.etree.ErrorLevels-class.html#FATAL
+lxml.etree.ErrorLevels._getName lxml.etree.ErrorLevels-class.html#_getName
+lxml.etree.ErrorTypes   lxml.etree.ErrorTypes-class.html
+lxml.etree.ErrorTypes.I18N_CONV_FAILED  lxml.etree.ErrorTypes-class.html#I18N_CONV_FAILED
+lxml.etree.ErrorTypes.SCHEMAP_ATTRFORMDEFAULT_VALUE     lxml.etree.ErrorTypes-class.html#SCHEMAP_ATTRFORMDEFAULT_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_NOTATION        lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_NOTATION
+lxml.etree.ErrorTypes.RNGP_EXCEPT_MULTIPLE      lxml.etree.ErrorTypes-class.html#RNGP_EXCEPT_MULTIPLE
+lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT_2        lxml.etree.ErrorTypes-class.html#SCHEMAP_AU_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.IO_EINVAL lxml.etree.ErrorTypes-class.html#IO_EINVAL
+lxml.etree.ErrorTypes.ERR_VERSION_MISMATCH      lxml.etree.ErrorTypes-class.html#ERR_VERSION_MISMATCH
+lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_STARTED       lxml.etree.ErrorTypes-class.html#ERR_ELEMCONTENT_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAP_TYPE_AND_SUBTYPE  lxml.etree.ErrorTypes-class.html#SCHEMAP_TYPE_AND_SUBTYPE
+lxml.etree.ErrorTypes.FTP_URL_SYNTAX    lxml.etree.ErrorTypes-class.html#FTP_URL_SYNTAX
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP   lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_USE  lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ATTR_USE
+lxml.etree.ErrorTypes.CHECK_WRONG_PREV  lxml.etree.ErrorTypes-class.html#CHECK_WRONG_PREV
+lxml.etree.ErrorTypes.CHECK_NS_SCOPE    lxml.etree.ErrorTypes-class.html#CHECK_NS_SCOPE
+lxml.etree.ErrorTypes.CHECK_NOT_NS_DECL lxml.etree.ErrorTypes-class.html#CHECK_NOT_NS_DECL
+lxml.etree.ErrorTypes.XINCLUDE_XPTR_RESULT      lxml.etree.ErrorTypes-class.html#XINCLUDE_XPTR_RESULT
+lxml.etree.ErrorTypes.ERR_PEREF_IN_EPILOG       lxml.etree.ErrorTypes-class.html#ERR_PEREF_IN_EPILOG
+lxml.etree.ErrorTypes.IO_EMLINK lxml.etree.ErrorTypes-class.html#IO_EMLINK
+lxml.etree.ErrorTypes.RNGP_PARAM_NAME_MISSING   lxml.etree.ErrorTypes-class.html#RNGP_PARAM_NAME_MISSING
+lxml.etree.ErrorTypes.WAR_NS_URI_RELATIVE       lxml.etree.ErrorTypes-class.html#WAR_NS_URI_RELATIVE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_2   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ELEMENT_2_2
+lxml.etree.ErrorTypes.IO_ENFILE lxml.etree.ErrorTypes-class.html#IO_ENFILE
+lxml.etree.ErrorTypes.SCHEMATRONV_ASSERT        lxml.etree.ErrorTypes-class.html#SCHEMATRONV_ASSERT
+lxml.etree.ErrorTypes.FTP_ACCNT lxml.etree.ErrorTypes-class.html#FTP_ACCNT
+lxml.etree.ErrorTypes.RNGP_PAT_START_GROUP      lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_GROUP
+lxml.etree.ErrorTypes.SCHEMAV_MISSING   lxml.etree.ErrorTypes-class.html#SCHEMAV_MISSING
+lxml.etree.ErrorTypes.MODULE_OPEN       lxml.etree.ErrorTypes-class.html#MODULE_OPEN
+lxml.etree.ErrorTypes.XPATH_INVALID_OPERAND     lxml.etree.ErrorTypes-class.html#XPATH_INVALID_OPERAND
+lxml.etree.ErrorTypes.CHECK_FOUND_NOTATION      lxml.etree.ErrorTypes-class.html#CHECK_FOUND_NOTATION
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_1_1
+lxml.etree.ErrorTypes.ERR_UNPARSED_ENTITY       lxml.etree.ErrorTypes-class.html#ERR_UNPARSED_ENTITY
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_NOTATION_CHILD    lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_NOTATION_CHILD
+lxml.etree.ErrorTypes.CHECK_OUTSIDE_DICT        lxml.etree.ErrorTypes-class.html#CHECK_OUTSIDE_DICT
+lxml.etree.ErrorTypes.SCHEMAV_NOTEMPTY  lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTEMPTY
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_GROUP        lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_GROUP
+lxml.etree.ErrorTypes.ERR_PEREF_SEMICOL_MISSING lxml.etree.ErrorTypes-class.html#ERR_PEREF_SEMICOL_MISSING
+lxml.etree.ErrorTypes.DTD_LOAD_ERROR    lxml.etree.ErrorTypes-class.html#DTD_LOAD_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_BOOLEAN   lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_BOOLEAN
+lxml.etree.ErrorTypes.DTD_NOT_STANDALONE        lxml.etree.ErrorTypes-class.html#DTD_NOT_STANDALONE
+lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_3        lxml.etree.ErrorTypes-class.html#SCHEMAP_ST_PROPS_CORRECT_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_1   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ATTRIBUTE_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_3   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ATTRIBUTE_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_2   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ATTRIBUTE_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ATTRIBUTE_4   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ATTRIBUTE_4
+lxml.etree.ErrorTypes.C14N_INVALID_NODE lxml.etree.ErrorTypes-class.html#C14N_INVALID_NODE
+lxml.etree.ErrorTypes.XPATH_START_LITERAL_ERROR lxml.etree.ErrorTypes-class.html#XPATH_START_LITERAL_ERROR
+lxml.etree.ErrorTypes.RNGP_TEXT_HAS_CHILD       lxml.etree.ErrorTypes-class.html#RNGP_TEXT_HAS_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_WILDCARD      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_WILDCARD
+lxml.etree.ErrorTypes.XPATH_UNDEF_VARIABLE_ERROR        lxml.etree.ErrorTypes-class.html#XPATH_UNDEF_VARIABLE_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_MISSING  lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ATTR_MISSING
+lxml.etree.ErrorTypes.SCHEMAP_INTERNAL  lxml.etree.ErrorTypes-class.html#SCHEMAP_INTERNAL
+lxml.etree.ErrorTypes.RNGP_EXCEPT_MISSING       lxml.etree.ErrorTypes-class.html#RNGP_EXCEPT_MISSING
+lxml.etree.ErrorTypes.TREE_INVALID_HEX  lxml.etree.ErrorTypes-class.html#TREE_INVALID_HEX
+lxml.etree.ErrorTypes.RNGP_DEFINE_CREATE_FAILED lxml.etree.ErrorTypes-class.html#RNGP_DEFINE_CREATE_FAILED
+lxml.etree.ErrorTypes.XPATH_ENCODING_ERROR      lxml.etree.ErrorTypes-class.html#XPATH_ENCODING_ERROR
+lxml.etree.ErrorTypes.SCHEMAV_CVC_IDC   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_IDC
+lxml.etree.ErrorTypes.CHECK_NO_ELEM     lxml.etree.ErrorTypes-class.html#CHECK_NO_ELEM
+lxml.etree.ErrorTypes.IO_EXDEV  lxml.etree.ErrorTypes-class.html#IO_EXDEV
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_TYPE      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_TYPE
+lxml.etree.ErrorTypes.ERR_LT_IN_ATTRIBUTE       lxml.etree.ErrorTypes-class.html#ERR_LT_IN_ATTRIBUTE
+lxml.etree.ErrorTypes.SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE      lxml.etree.ErrorTypes-class.html#SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE
+lxml.etree.ErrorTypes.IO_EMFILE lxml.etree.ErrorTypes-class.html#IO_EMFILE
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_2     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_3_2_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_2_1     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_3_2_1
+lxml.etree.ErrorTypes.XINCLUDE_XPTR_FAILED      lxml.etree.ErrorTypes-class.html#XINCLUDE_XPTR_FAILED
+lxml.etree.ErrorTypes.ERR_MISPLACED_CDATA_END   lxml.etree.ErrorTypes-class.html#ERR_MISPLACED_CDATA_END
+lxml.etree.ErrorTypes.RNGP_ELEMENT_NO_CONTENT   lxml.etree.ErrorTypes-class.html#RNGP_ELEMENT_NO_CONTENT
+lxml.etree.ErrorTypes.IO_ENOENT lxml.etree.ErrorTypes-class.html#IO_ENOENT
+lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_NOOP       lxml.etree.ErrorTypes-class.html#RNGP_ATTRIBUTE_NOOP
+lxml.etree.ErrorTypes.SCHEMAP_SRC_REDEFINE      lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_REDEFINE
+lxml.etree.ErrorTypes.ERR_CHARREF_IN_PROLOG     lxml.etree.ErrorTypes-class.html#ERR_CHARREF_IN_PROLOG
+lxml.etree.ErrorTypes.RNGP_REF_NAME_INVALID     lxml.etree.ErrorTypes-class.html#RNGP_REF_NAME_INVALID
+lxml.etree.ErrorTypes.ERR_NOTATION_PROCESSING   lxml.etree.ErrorTypes-class.html#ERR_NOTATION_PROCESSING
+lxml.etree.ErrorTypes.RNGP_INCLUDE_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_INCLUDE_EMPTY
+lxml.etree.ErrorTypes.RNGP_INCLUDE_RECURSE      lxml.etree.ErrorTypes-class.html#RNGP_INCLUDE_RECURSE
+lxml.etree.ErrorTypes.SCHEMAP_ELEM_NONAME_NOREF lxml.etree.ErrorTypes-class.html#SCHEMAP_ELEM_NONAME_NOREF
+lxml.etree.ErrorTypes.RNGP_EMPTY_CONTENT        lxml.etree.ErrorTypes-class.html#RNGP_EMPTY_CONTENT
+lxml.etree.ErrorTypes.XPTR_EVAL_FAILED  lxml.etree.ErrorTypes-class.html#XPTR_EVAL_FAILED
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_1      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_2_1
+lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_POSITION       lxml.etree.ErrorTypes-class.html#XPATH_INVALID_CTXT_POSITION
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_3      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_2_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_4      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_2_4
+lxml.etree.ErrorTypes.ERR_INTERNAL_ERROR        lxml.etree.ErrorTypes-class.html#ERR_INTERNAL_ERROR
+lxml.etree.ErrorTypes.ERR_DOCTYPE_NOT_FINISHED  lxml.etree.ErrorTypes-class.html#ERR_DOCTYPE_NOT_FINISHED
+lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_ANYNAME    lxml.etree.ErrorTypes-class.html#RNGP_PAT_NSNAME_EXCEPT_ANYNAME
+lxml.etree.ErrorTypes.RNGP_EMPTY_NOT_EMPTY      lxml.etree.ErrorTypes-class.html#RNGP_EMPTY_NOT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAP_NO_XMLNS  lxml.etree.ErrorTypes-class.html#SCHEMAP_NO_XMLNS
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_ATTR        lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_ATTR
+lxml.etree.ErrorTypes.ERR_NO_DTD        lxml.etree.ErrorTypes-class.html#ERR_NO_DTD
+lxml.etree.ErrorTypes.ERR_ENTITY_LOOP   lxml.etree.ErrorTypes-class.html#ERR_ENTITY_LOOP
+lxml.etree.ErrorTypes.IO_EINTR  lxml.etree.ErrorTypes-class.html#IO_EINTR
+lxml.etree.ErrorTypes.ERR_MISSING_ENCODING      lxml.etree.ErrorTypes-class.html#ERR_MISSING_ENCODING
+lxml.etree.ErrorTypes.DTD_STANDALONE_WHITE_SPACE        lxml.etree.ErrorTypes-class.html#DTD_STANDALONE_WHITE_SPACE
+lxml.etree.ErrorTypes.DTD_ENTITY_TYPE   lxml.etree.ErrorTypes-class.html#DTD_ENTITY_TYPE
+lxml.etree.ErrorTypes.IO_ENOTEMPTY      lxml.etree.ErrorTypes-class.html#IO_ENOTEMPTY
+lxml.etree.ErrorTypes.RNGP_REF_NO_NAME  lxml.etree.ErrorTypes-class.html#RNGP_REF_NO_NAME
+lxml.etree.ErrorTypes.XINCLUDE_MULTIPLE_ROOT    lxml.etree.ErrorTypes-class.html#XINCLUDE_MULTIPLE_ROOT
+lxml.etree.ErrorTypes.SCHEMAV_NOTYPE    lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTYPE
+lxml.etree.ErrorTypes.RNGP_ELEMENT_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_ELEMENT_EMPTY
+lxml.etree.ErrorTypes.IO_ECANCELED      lxml.etree.ErrorTypes-class.html#IO_ECANCELED
+lxml.etree.ErrorTypes.RNGP_EXCEPT_NO_CONTENT    lxml.etree.ErrorTypes-class.html#RNGP_EXCEPT_NO_CONTENT
+lxml.etree.ErrorTypes.WAR_NS_COLUMN     lxml.etree.ErrorTypes-class.html#WAR_NS_COLUMN
+lxml.etree.ErrorTypes.IO_ENOTSOCK       lxml.etree.ErrorTypes-class.html#IO_ENOTSOCK
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_1     lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_DERIVED_OK_2_1
+lxml.etree.ErrorTypes.ERR_URI_FRAGMENT  lxml.etree.ErrorTypes-class.html#ERR_URI_FRAGMENT
+lxml.etree.ErrorTypes.SCHEMAV_NOTNILLABLE       lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTNILLABLE
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_TEXT        lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_TEXT
+lxml.etree.ErrorTypes.SCHEMAV_UNDECLAREDELEM    lxml.etree.ErrorTypes-class.html#SCHEMAV_UNDECLAREDELEM
+lxml.etree.ErrorTypes.SCHEMAP_AG_PROPS_CORRECT  lxml.etree.ErrorTypes-class.html#SCHEMAP_AG_PROPS_CORRECT
+lxml.etree.ErrorTypes.IO_ENOMEM lxml.etree.ErrorTypes-class.html#IO_ENOMEM
+lxml.etree.ErrorTypes.ERR_NOTATION_NOT_STARTED  lxml.etree.ErrorTypes-class.html#ERR_NOTATION_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ELEM_CHILD        lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ELEM_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_1       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_4_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_3       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_4_3
+lxml.etree.ErrorTypes.DTD_NO_DOC        lxml.etree.ErrorTypes-class.html#DTD_NO_DOC
+lxml.etree.ErrorTypes.RNGP_TYPE_NOT_FOUND       lxml.etree.ErrorTypes-class.html#RNGP_TYPE_NOT_FOUND
+lxml.etree.ErrorTypes.DTD_NO_ROOT       lxml.etree.ErrorTypes-class.html#DTD_NO_ROOT
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTRGRP_CHILD     lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ATTRGRP_CHILD
+lxml.etree.ErrorTypes.IO_EACCES lxml.etree.ErrorTypes-class.html#IO_EACCES
+lxml.etree.ErrorTypes._names    lxml.etree.ErrorTypes-class.html#_names
+lxml.etree.ErrorTypes.SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES      lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES
+lxml.etree.ErrorTypes.ERR_RESERVED_XML_NAME     lxml.etree.ErrorTypes-class.html#ERR_RESERVED_XML_NAME
+lxml.etree.ErrorTypes.RNGP_TEXT_EXPECTED        lxml.etree.ErrorTypes-class.html#RNGP_TEXT_EXPECTED
+lxml.etree.ErrorTypes.RNGP_CHOICE_EMPTY lxml.etree.ErrorTypes-class.html#RNGP_CHOICE_EMPTY
+lxml.etree.ErrorTypes.ERR_TAG_NOT_FINISHED      lxml.etree.ErrorTypes-class.html#ERR_TAG_NOT_FINISHED
+lxml.etree.ErrorTypes.CHECK_FOUND_TEXT  lxml.etree.ErrorTypes-class.html#CHECK_FOUND_TEXT
+lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_NAME    lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_NO_NAME
+lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_GROUP_ATTR       lxml.etree.ErrorTypes-class.html#RNGP_PAT_ONEMORE_GROUP_ATTR
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ENUMERATION_VALID     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ENUMERATION_VALID
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_RESTRICTION_CHILD lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_RESTRICTION_CHILD
+lxml.etree.ErrorTypes.DTD_ELEM_REDEFINED        lxml.etree.ErrorTypes-class.html#DTD_ELEM_REDEFINED
+lxml.etree.ErrorTypes.RNGP_MISSING_HREF lxml.etree.ErrorTypes-class.html#RNGP_MISSING_HREF
+lxml.etree.ErrorTypes.IO_ERANGE lxml.etree.ErrorTypes-class.html#IO_ERANGE
+lxml.etree.ErrorTypes.HTTP_UNKNOWN_HOST lxml.etree.ErrorTypes-class.html#HTTP_UNKNOWN_HOST
+lxml.etree.ErrorTypes.RNGP_PAT_START_ATTR       lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_ATTR
+lxml.etree.ErrorTypes.SCHEMAP_NOTATION_NO_NAME  lxml.etree.ErrorTypes-class.html#SCHEMAP_NOTATION_NO_NAME
+lxml.etree.ErrorTypes.NS_ERR_COLON      lxml.etree.ErrorTypes-class.html#NS_ERR_COLON
+lxml.etree.ErrorTypes.ERR_PEREF_IN_INT_SUBSET   lxml.etree.ErrorTypes-class.html#ERR_PEREF_IN_INT_SUBSET
+lxml.etree.ErrorTypes.RNGP_VALUE_EMPTY  lxml.etree.ErrorTypes-class.html#RNGP_VALUE_EMPTY
+lxml.etree.ErrorTypes.WAR_UNKNOWN_VERSION       lxml.etree.ErrorTypes-class.html#WAR_UNKNOWN_VERSION
+lxml.etree.ErrorTypes.SCHEMAV_ISABSTRACT        lxml.etree.ErrorTypes-class.html#SCHEMAV_ISABSTRACT
+lxml.etree.ErrorTypes.IO_EMSGSIZE       lxml.etree.ErrorTypes-class.html#IO_EMSGSIZE
+lxml.etree.ErrorTypes.CATALOG_ENTRY_BROKEN      lxml.etree.ErrorTypes-class.html#CATALOG_ENTRY_BROKEN
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_1_2    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_1_2
+lxml.etree.ErrorTypes.RNGP_CREATE_FAILURE       lxml.etree.ErrorTypes-class.html#RNGP_CREATE_FAILURE
+lxml.etree.ErrorTypes.ERR_NAME_REQUIRED lxml.etree.ErrorTypes-class.html#ERR_NAME_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_NOT_ALLOWED      lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ATTR_NOT_ALLOWED
+lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_FINISHED  lxml.etree.ErrorTypes-class.html#ERR_ATTLIST_NOT_FINISHED
+lxml.etree.ErrorTypes._getName  lxml.etree.ErrorTypes-class.html#_getName
+lxml.etree.ErrorTypes.XPTR_EXTRA_OBJECTS        lxml.etree.ErrorTypes-class.html#XPTR_EXTRA_OBJECTS
+lxml.etree.ErrorTypes.IO_EISCONN        lxml.etree.ErrorTypes-class.html#IO_EISCONN
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_CHOICE_CHILD      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_CHOICE_CHILD
+lxml.etree.ErrorTypes.ERR_PUBID_REQUIRED        lxml.etree.ErrorTypes-class.html#ERR_PUBID_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_NOTHING_TO_PARSE  lxml.etree.ErrorTypes-class.html#SCHEMAP_NOTHING_TO_PARSE
+lxml.etree.ErrorTypes.RNGP_NOTALLOWED_NOT_EMPTY lxml.etree.ErrorTypes-class.html#RNGP_NOTALLOWED_NOT_EMPTY
+lxml.etree.ErrorTypes.RNGP_REF_NOT_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_REF_NOT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAP_DEF_AND_PREFIX    lxml.etree.ErrorTypes-class.html#SCHEMAP_DEF_AND_PREFIX
+lxml.etree.ErrorTypes.ERR_NOTATION_NOT_FINISHED lxml.etree.ErrorTypes-class.html#ERR_NOTATION_NOT_FINISHED
+lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CHILDREN   lxml.etree.ErrorTypes-class.html#RNGP_ATTRIBUTE_CHILDREN
+lxml.etree.ErrorTypes.RNGP_PAT_START_DATA       lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_DATA
+lxml.etree.ErrorTypes.RNGP_ELEMENT_NAME lxml.etree.ErrorTypes-class.html#RNGP_ELEMENT_NAME
+lxml.etree.ErrorTypes.XPATH_UNKNOWN_FUNC_ERROR  lxml.etree.ErrorTypes-class.html#XPATH_UNKNOWN_FUNC_ERROR
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_INTERLEAVE   lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_INTERLEAVE
+lxml.etree.ErrorTypes.ERR_VERSION_MISSING       lxml.etree.ErrorTypes-class.html#ERR_VERSION_MISSING
+lxml.etree.ErrorTypes.RNGP_DEFINE_MISSING       lxml.etree.ErrorTypes-class.html#RNGP_DEFINE_MISSING
+lxml.etree.ErrorTypes.CATALOG_NOT_CATALOG       lxml.etree.ErrorTypes-class.html#CATALOG_NOT_CATALOG
+lxml.etree.ErrorTypes.XINCLUDE_TEXT_DOCUMENT    lxml.etree.ErrorTypes-class.html#XINCLUDE_TEXT_DOCUMENT
+lxml.etree.ErrorTypes.DTD_NO_ELEM_NAME  lxml.etree.ErrorTypes-class.html#DTD_NO_ELEM_NAME
+lxml.etree.ErrorTypes.ERR_UNSUPPORTED_ENCODING  lxml.etree.ErrorTypes-class.html#ERR_UNSUPPORTED_ENCODING
+lxml.etree.ErrorTypes.ERR_ENTITY_NOT_STARTED    lxml.etree.ErrorTypes-class.html#ERR_ENTITY_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAV_ATTRUNKNOWN       lxml.etree.ErrorTypes-class.html#SCHEMAV_ATTRUNKNOWN
+lxml.etree.ErrorTypes.DTD_ELEM_DEFAULT_NAMESPACE        lxml.etree.ErrorTypes-class.html#DTD_ELEM_DEFAULT_NAMESPACE
+lxml.etree.ErrorTypes.IO_EDOM   lxml.etree.ErrorTypes-class.html#IO_EDOM
+lxml.etree.ErrorTypes.ERR_NO_MEMORY     lxml.etree.ErrorTypes-class.html#ERR_NO_MEMORY
+lxml.etree.ErrorTypes.RNGP_GROUP_ATTR_CONFLICT  lxml.etree.ErrorTypes-class.html#RNGP_GROUP_ATTR_CONFLICT
+lxml.etree.ErrorTypes.FTP_EPSV_ANSWER   lxml.etree.ErrorTypes-class.html#FTP_EPSV_ANSWER
+lxml.etree.ErrorTypes.IO_ENOTTY lxml.etree.ErrorTypes-class.html#IO_ENOTTY
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_1  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_1_1
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_1_2  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_1_2
+lxml.etree.ErrorTypes.IO_EFAULT lxml.etree.ErrorTypes-class.html#IO_EFAULT
+lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_1        lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_CT_EXTENDS_1_1
+lxml.etree.ErrorTypes.SCHEMAV_ELEMCONT  lxml.etree.ErrorTypes-class.html#SCHEMAV_ELEMCONT
+lxml.etree.ErrorTypes.IO_ECHILD lxml.etree.ErrorTypes-class.html#IO_ECHILD
+lxml.etree.ErrorTypes.ERR_VALUE_REQUIRED        lxml.etree.ErrorTypes-class.html#ERR_VALUE_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_1   lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_VALID_DEFAULT_2_2_1
+lxml.etree.ErrorTypes.ERR_PCDATA_REQUIRED       lxml.etree.ErrorTypes-class.html#ERR_PCDATA_REQUIRED
+lxml.etree.ErrorTypes.RNGP_PAT_START_TEXT       lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_TEXT
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_1_3_1
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_3_2    lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_1_3_2
+lxml.etree.ErrorTypes.RNGP_INTERLEAVE_CREATE_FAILED     lxml.etree.ErrorTypes-class.html#RNGP_INTERLEAVE_CREATE_FAILED
+lxml.etree.ErrorTypes.CHECK_WRONG_NAME  lxml.etree.ErrorTypes-class.html#CHECK_WRONG_NAME
+lxml.etree.ErrorTypes.XPATH_INVALID_CHAR_ERROR  lxml.etree.ErrorTypes-class.html#XPATH_INVALID_CHAR_ERROR
+lxml.etree.ErrorTypes.DTD_UNKNOWN_ID    lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_ID
+lxml.etree.ErrorTypes.ERR_INVALID_HEX_CHARREF   lxml.etree.ErrorTypes-class.html#ERR_INVALID_HEX_CHARREF
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXLENGTH_VALID       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MAXLENGTH_VALID
+lxml.etree.ErrorTypes.ERR_ENTITY_CHAR_ERROR     lxml.etree.ErrorTypes-class.html#ERR_ENTITY_CHAR_ERROR
+lxml.etree.ErrorTypes.DTD_ID_SUBSET     lxml.etree.ErrorTypes-class.html#DTD_ID_SUBSET
+lxml.etree.ErrorTypes.IO_LOAD_ERROR     lxml.etree.ErrorTypes-class.html#IO_LOAD_ERROR
+lxml.etree.ErrorTypes.ERR_INVALID_ENCODING      lxml.etree.ErrorTypes-class.html#ERR_INVALID_ENCODING
+lxml.etree.ErrorTypes.SCHEMAP_COS_ALL_LIMITED   lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ALL_LIMITED
+lxml.etree.ErrorTypes.IO_EIO    lxml.etree.ErrorTypes-class.html#IO_EIO
+lxml.etree.ErrorTypes.RNGP_DEFINE_NAME_MISSING  lxml.etree.ErrorTypes-class.html#RNGP_DEFINE_NAME_MISSING
+lxml.etree.ErrorTypes.IO_ENOTDIR        lxml.etree.ErrorTypes-class.html#IO_ENOTDIR
+lxml.etree.ErrorTypes.XINCLUDE_TEXT_FRAGMENT    lxml.etree.ErrorTypes-class.html#XINCLUDE_TEXT_FRAGMENT
+lxml.etree.ErrorTypes.SCHEMAP_MISSING_SIMPLETYPE_CHILD  lxml.etree.ErrorTypes-class.html#SCHEMAP_MISSING_SIMPLETYPE_CHILD
+lxml.etree.ErrorTypes.DTD_NOT_PCDATA    lxml.etree.ErrorTypes-class.html#DTD_NOT_PCDATA
+lxml.etree.ErrorTypes.ERR_INVALID_URI   lxml.etree.ErrorTypes-class.html#ERR_INVALID_URI
+lxml.etree.ErrorTypes.SCHEMAV_VALUE     lxml.etree.ErrorTypes-class.html#SCHEMAV_VALUE
+lxml.etree.ErrorTypes.XPATH_INVALID_PREDICATE_ERROR     lxml.etree.ErrorTypes-class.html#XPATH_INVALID_PREDICATE_ERROR
+lxml.etree.ErrorTypes.IO_ENOEXEC        lxml.etree.ErrorTypes-class.html#IO_ENOEXEC
+lxml.etree.ErrorTypes.RNGP_GRAMMAR_NO_START     lxml.etree.ErrorTypes-class.html#RNGP_GRAMMAR_NO_START
+lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_FINISHED  lxml.etree.ErrorTypes-class.html#ERR_XMLDECL_NOT_FINISHED
+lxml.etree.ErrorTypes.RNGP_REF_NO_DEF   lxml.etree.ErrorTypes-class.html#RNGP_REF_NO_DEF
+lxml.etree.ErrorTypes.RNGP_NEED_COMBINE lxml.etree.ErrorTypes-class.html#RNGP_NEED_COMBINE
+lxml.etree.ErrorTypes.ERR_STANDALONE_VALUE      lxml.etree.ErrorTypes-class.html#ERR_STANDALONE_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_NAME lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ATTR_NAME
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_4        lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_4
+lxml.etree.ErrorTypes.IO_ENOSYS lxml.etree.ErrorTypes-class.html#IO_ENOSYS
+lxml.etree.ErrorTypes.SCHEMAP_ELEMFORMDEFAULT_VALUE     lxml.etree.ErrorTypes-class.html#SCHEMAP_ELEMFORMDEFAULT_VALUE
+lxml.etree.ErrorTypes.ERR_STRING_NOT_CLOSED     lxml.etree.ErrorTypes-class.html#ERR_STRING_NOT_CLOSED
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_2        lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_3        lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_AU    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_AU
+lxml.etree.ErrorTypes.RNGP_FORBIDDEN_ATTRIBUTE  lxml.etree.ErrorTypes-class.html#RNGP_FORBIDDEN_ATTRIBUTE
+lxml.etree.ErrorTypes.ERR_PI_NOT_FINISHED       lxml.etree.ErrorTypes-class.html#ERR_PI_NOT_FINISHED
+lxml.etree.ErrorTypes.XPATH_EXPR_ERROR  lxml.etree.ErrorTypes-class.html#XPATH_EXPR_ERROR
+lxml.etree.ErrorTypes.RNGP_NSNAME_NO_NS lxml.etree.ErrorTypes-class.html#RNGP_NSNAME_NO_NS
+lxml.etree.ErrorTypes.NS_ERR_EMPTY      lxml.etree.ErrorTypes-class.html#NS_ERR_EMPTY
+lxml.etree.ErrorTypes.ERR_HYPHEN_IN_COMMENT     lxml.etree.ErrorTypes-class.html#ERR_HYPHEN_IN_COMMENT
+lxml.etree.ErrorTypes.XPATH_NUMBER_ERROR        lxml.etree.ErrorTypes-class.html#XPATH_NUMBER_ERROR
+lxml.etree.ErrorTypes.RNGP_PARENTREF_NOT_EMPTY  lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_NOT_EMPTY
+lxml.etree.ErrorTypes.ERR_PI_NOT_STARTED        lxml.etree.ErrorTypes-class.html#ERR_PI_NOT_STARTED
+lxml.etree.ErrorTypes.RNGP_TYPE_MISSING lxml.etree.ErrorTypes-class.html#RNGP_TYPE_MISSING
+lxml.etree.ErrorTypes.IO_EPERM  lxml.etree.ErrorTypes-class.html#IO_EPERM
+lxml.etree.ErrorTypes.ERR_COMMENT_NOT_FINISHED  lxml.etree.ErrorTypes-class.html#ERR_COMMENT_NOT_FINISHED
+lxml.etree.ErrorTypes.DTD_CONTENT_ERROR lxml.etree.ErrorTypes-class.html#DTD_CONTENT_ERROR
+lxml.etree.ErrorTypes.DTD_NOTATION_VALUE        lxml.etree.ErrorTypes-class.html#DTD_NOTATION_VALUE
+lxml.etree.ErrorTypes.RNGP_URI_NOT_ABSOLUTE     lxml.etree.ErrorTypes-class.html#RNGP_URI_NOT_ABSOLUTE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_3_1
+lxml.etree.ErrorTypes.XPATH_VARIABLE_REF_ERROR  lxml.etree.ErrorTypes-class.html#XPATH_VARIABLE_REF_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_3_2    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_3_2
+lxml.etree.ErrorTypes.RNGP_INTERLEAVE_EMPTY     lxml.etree.ErrorTypes-class.html#RNGP_INTERLEAVE_EMPTY
+lxml.etree.ErrorTypes.C14N_UNKNOW_NODE  lxml.etree.ErrorTypes-class.html#C14N_UNKNOW_NODE
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_MAXOCCURS lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_MAXOCCURS
+lxml.etree.ErrorTypes.SCHEMAV_NOTTOPLEVEL       lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTTOPLEVEL
+lxml.etree.ErrorTypes.SCHEMAP_WILDCARD_INVALID_NS_MEMBER        lxml.etree.ErrorTypes-class.html#SCHEMAP_WILDCARD_INVALID_NS_MEMBER
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_LIST_CHILD        lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_LIST_CHILD
+lxml.etree.ErrorTypes.WAR_LANG_VALUE    lxml.etree.ErrorTypes-class.html#WAR_LANG_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_1     lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_4_1
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_2     lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_4_2
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_4_3     lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_4_3
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PREFIX    lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_PREFIX
+lxml.etree.ErrorTypes.ERR_STRING_NOT_STARTED    lxml.etree.ErrorTypes-class.html#ERR_STRING_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAP_RECURSIVE lxml.etree.ErrorTypes-class.html#SCHEMAP_RECURSIVE
+lxml.etree.ErrorTypes.CHECK_ENTITY_TYPE lxml.etree.ErrorTypes-class.html#CHECK_ENTITY_TYPE
+lxml.etree.ErrorTypes.RNGP_EMPTY_CONSTRUCT      lxml.etree.ErrorTypes-class.html#RNGP_EMPTY_CONSTRUCT
+lxml.etree.ErrorTypes.RNGP_CHOICE_CONTENT       lxml.etree.ErrorTypes-class.html#RNGP_CHOICE_CONTENT
+lxml.etree.ErrorTypes.XINCLUDE_RECURSION        lxml.etree.ErrorTypes-class.html#XINCLUDE_RECURSION
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_INCLUDE_CHILD     lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_INCLUDE_CHILD
+lxml.etree.ErrorTypes.ERR_ENTITY_NOT_FINISHED   lxml.etree.ErrorTypes-class.html#ERR_ENTITY_NOT_FINISHED
+lxml.etree.ErrorTypes.IO_ENAMETOOLONG   lxml.etree.ErrorTypes-class.html#IO_ENAMETOOLONG
+lxml.etree.ErrorTypes.DTD_EMPTY_NOTATION        lxml.etree.ErrorTypes-class.html#DTD_EMPTY_NOTATION
+lxml.etree.ErrorTypes.ERR_EXT_SUBSET_NOT_FINISHED       lxml.etree.ErrorTypes-class.html#ERR_EXT_SUBSET_NOT_FINISHED
+lxml.etree.ErrorTypes.SCHEMAP_REGEXP_INVALID    lxml.etree.ErrorTypes-class.html#SCHEMAP_REGEXP_INVALID
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MINEXCLUSIVE_VALID    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MINEXCLUSIVE_VALID
+lxml.etree.ErrorTypes.RNGP_PREFIX_UNDEFINED     lxml.etree.ErrorTypes-class.html#RNGP_PREFIX_UNDEFINED
+lxml.etree.ErrorTypes.DTD_CONTENT_MODEL lxml.etree.ErrorTypes-class.html#DTD_CONTENT_MODEL
+lxml.etree.ErrorTypes.ERR_ENTITY_PROCESSING     lxml.etree.ErrorTypes-class.html#ERR_ENTITY_PROCESSING
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_TEXT lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_TEXT
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_4   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_4
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_2   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_2
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_1   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_1
+lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NO_URI     lxml.etree.ErrorTypes-class.html#SCHEMAP_INCLUDE_SCHEMA_NO_URI
+lxml.etree.ErrorTypes.CHECK_X   lxml.etree.ErrorTypes-class.html#CHECK_X
+lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_2        lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_CT_EXTENDS_1_2
+lxml.etree.ErrorTypes.SCHEMAP_COS_CT_EXTENDS_1_3        lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_CT_EXTENDS_1_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_3_1       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_3_1
+lxml.etree.ErrorTypes.DTD_CONTENT_NOT_DETERMINIST       lxml.etree.ErrorTypes-class.html#DTD_CONTENT_NOT_DETERMINIST
+lxml.etree.ErrorTypes.SCHEMAV_NOROLLBACK        lxml.etree.ErrorTypes-class.html#SCHEMAV_NOROLLBACK
+lxml.etree.ErrorTypes.ERR_DOCUMENT_END  lxml.etree.ErrorTypes-class.html#ERR_DOCUMENT_END
+lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_EPILOG   lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_IN_EPILOG
+lxml.etree.ErrorTypes.XINCLUDE_INVALID_CHAR     lxml.etree.ErrorTypes-class.html#XINCLUDE_INVALID_CHAR
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_CHILD       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_FACET_CHILD
+lxml.etree.ErrorTypes.RNGP_DEFINE_EMPTY lxml.etree.ErrorTypes-class.html#RNGP_DEFINE_EMPTY
+lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ELEM        lxml.etree.ErrorTypes-class.html#RNGP_PAT_ATTR_ELEM
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_INLINE_COMBINATION   lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ATTR_INLINE_COMBINATION
+lxml.etree.ErrorTypes.RNGP_PAT_START_INTERLEAVE lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_INTERLEAVE
+lxml.etree.ErrorTypes.I18N_EXCESS_HANDLER       lxml.etree.ErrorTypes-class.html#I18N_EXCESS_HANDLER
+lxml.etree.ErrorTypes.IO_ENETUNREACH    lxml.etree.ErrorTypes-class.html#IO_ENETUNREACH
+lxml.etree.ErrorTypes.RNGP_INVALID_VALUE        lxml.etree.ErrorTypes-class.html#RNGP_INVALID_VALUE
+lxml.etree.ErrorTypes.IO_NO_INPUT       lxml.etree.ErrorTypes-class.html#IO_NO_INPUT
+lxml.etree.ErrorTypes.RNGP_PAT_START_LIST       lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_LIST
+lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_1 lxml.etree.ErrorTypes-class.html#SCHEMAP_P_PROPS_CORRECT_1
+lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_STARTED lxml.etree.ErrorTypes-class.html#ERR_ATTRIBUTE_NOT_STARTED
+lxml.etree.ErrorTypes.CHECK_NOT_ATTR    lxml.etree.ErrorTypes-class.html#CHECK_NOT_ATTR
+lxml.etree.ErrorTypes.CHECK_NOT_ENTITY_DECL     lxml.etree.ErrorTypes-class.html#CHECK_NOT_ENTITY_DECL
+lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_PROLOG   lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_IN_PROLOG
+lxml.etree.ErrorTypes.ERR_PEREF_NO_NAME lxml.etree.ErrorTypes-class.html#ERR_PEREF_NO_NAME
+lxml.etree.ErrorTypes.RNGP_FOREIGN_ELEMENT      lxml.etree.ErrorTypes-class.html#RNGP_FOREIGN_ELEMENT
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_2     lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_2_2
+lxml.etree.ErrorTypes.CHECK_NOT_ATTR_DECL       lxml.etree.ErrorTypes-class.html#CHECK_NOT_ATTR_DECL
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_FACET_TYPE        lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_FACET_TYPE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2      lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_2
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_2  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_2
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_3  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_3
+lxml.etree.ErrorTypes.XINCLUDE_HREF_URI lxml.etree.ErrorTypes-class.html#XINCLUDE_HREF_URI
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_1  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_1
+lxml.etree.ErrorTypes.ERR_SEPARATOR_REQUIRED    lxml.etree.ErrorTypes-class.html#ERR_SEPARATOR_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_4  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_4
+lxml.etree.ErrorTypes.FTP_PASV_ANSWER   lxml.etree.ErrorTypes-class.html#FTP_PASV_ANSWER
+lxml.etree.ErrorTypes.SAVE_NO_DOCTYPE   lxml.etree.ErrorTypes-class.html#SAVE_NO_DOCTYPE
+lxml.etree.ErrorTypes.DTD_NO_PREFIX     lxml.etree.ErrorTypes-class.html#DTD_NO_PREFIX
+lxml.etree.ErrorTypes.ERR_MIXED_NOT_STARTED     lxml.etree.ErrorTypes-class.html#ERR_MIXED_NOT_STARTED
+lxml.etree.ErrorTypes.ERR_ENTITYREF_SEMICOL_MISSING     lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_SEMICOL_MISSING
+lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_FINISHED  lxml.etree.ErrorTypes-class.html#ERR_CONDSEC_NOT_FINISHED
+lxml.etree.ErrorTypes.RNGP_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_EMPTY
+lxml.etree.ErrorTypes.RNGP_PARENTREF_NO_PARENT  lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_NO_PARENT
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ELEM lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_ELEM
+lxml.etree.ErrorTypes.WAR_SPACE_VALUE   lxml.etree.ErrorTypes-class.html#WAR_SPACE_VALUE
+lxml.etree.ErrorTypes.ERR_MIXED_NOT_FINISHED    lxml.etree.ErrorTypes-class.html#ERR_MIXED_NOT_FINISHED
+lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_POINTLESS_PROH  lxml.etree.ErrorTypes-class.html#SCHEMAP_WARN_ATTR_POINTLESS_PROH
+lxml.etree.ErrorTypes.RNGP_START_CONTENT        lxml.etree.ErrorTypes-class.html#RNGP_START_CONTENT
+lxml.etree.ErrorTypes.RNGP_DEF_CHOICE_AND_INTERLEAVE    lxml.etree.ErrorTypes-class.html#RNGP_DEF_CHOICE_AND_INTERLEAVE
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXINCLUSIVE_VALID    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MAXINCLUSIVE_VALID
+lxml.etree.ErrorTypes.CATALOG_MISSING_ATTR      lxml.etree.ErrorTypes-class.html#CATALOG_MISSING_ATTR
+lxml.etree.ErrorTypes.SCHEMAV_CONSTRUCT lxml.etree.ErrorTypes-class.html#SCHEMAV_CONSTRUCT
+lxml.etree.ErrorTypes.ERR_ATTRIBUTE_REDEFINED   lxml.etree.ErrorTypes-class.html#ERR_ATTRIBUTE_REDEFINED
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_REF       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_REF
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MAXEXCLUSIVE_VALID    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MAXEXCLUSIVE_VALID
+lxml.etree.ErrorTypes.RNGP_ANYNAME_ATTR_ANCESTOR        lxml.etree.ErrorTypes-class.html#RNGP_ANYNAME_ATTR_ANCESTOR
+lxml.etree.ErrorTypes.DTD_DIFFERENT_PREFIX      lxml.etree.ErrorTypes-class.html#DTD_DIFFERENT_PREFIX
+lxml.etree.ErrorTypes.RNGP_EXTERNAL_REF_FAILURE lxml.etree.ErrorTypes-class.html#RNGP_EXTERNAL_REF_FAILURE
+lxml.etree.ErrorTypes.CATALOG_PREFER_VALUE      lxml.etree.ErrorTypes-class.html#CATALOG_PREFER_VALUE
+lxml.etree.ErrorTypes.XPTR_RESOURCE_ERROR       lxml.etree.ErrorTypes-class.html#XPTR_RESOURCE_ERROR
+lxml.etree.ErrorTypes.DTD_ATTRIBUTE_REDEFINED   lxml.etree.ErrorTypes-class.html#DTD_ATTRIBUTE_REDEFINED
+lxml.etree.ErrorTypes.XPATH_MEMORY_ERROR        lxml.etree.ErrorTypes-class.html#XPATH_MEMORY_ERROR
+lxml.etree.ErrorTypes.IO_EBADMSG        lxml.etree.ErrorTypes-class.html#IO_EBADMSG
+lxml.etree.ErrorTypes.IO_ENCODER        lxml.etree.ErrorTypes-class.html#IO_ENCODER
+lxml.etree.ErrorTypes.RNGP_ELEM_TEXT_CONFLICT   lxml.etree.ErrorTypes-class.html#RNGP_ELEM_TEXT_CONFLICT
+lxml.etree.ErrorTypes.ERR_INVALID_CHARREF       lxml.etree.ErrorTypes-class.html#ERR_INVALID_CHARREF
+lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_1        lxml.etree.ErrorTypes-class.html#SCHEMAP_ST_PROPS_CORRECT_1
+lxml.etree.ErrorTypes.SCHEMAP_ST_PROPS_CORRECT_2        lxml.etree.ErrorTypes-class.html#SCHEMAP_ST_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.ERR_ENTITYREF_IN_DTD      lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_IN_DTD
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ATTR_INVALID_VALUE    lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ATTR_INVALID_VALUE
+lxml.etree.ErrorTypes.RNGP_INVALID_URI  lxml.etree.ErrorTypes-class.html#RNGP_INVALID_URI
+lxml.etree.ErrorTypes.RNGP_XMLNS_NAME   lxml.etree.ErrorTypes-class.html#RNGP_XMLNS_NAME
+lxml.etree.ErrorTypes.IO_ESPIPE lxml.etree.ErrorTypes-class.html#IO_ESPIPE
+lxml.etree.ErrorTypes.CHECK_FOUND_ENTITY        lxml.etree.ErrorTypes-class.html#CHECK_FOUND_ENTITY
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD
+lxml.etree.ErrorTypes.RNGP_GRAMMAR_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_GRAMMAR_EMPTY
+lxml.etree.ErrorTypes.RNGP_REF_CREATE_FAILED    lxml.etree.ErrorTypes-class.html#RNGP_REF_CREATE_FAILED
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1   lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2   lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3   lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3
+lxml.etree.ErrorTypes.ERR_CDATA_NOT_FINISHED    lxml.etree.ErrorTypes-class.html#ERR_CDATA_NOT_FINISHED
+lxml.etree.ErrorTypes.ERR_LTSLASH_REQUIRED      lxml.etree.ErrorTypes-class.html#ERR_LTSLASH_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAV_NOTDETERMINIST    lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTDETERMINIST
+lxml.etree.ErrorTypes.IO_FLUSH  lxml.etree.ErrorTypes-class.html#IO_FLUSH
+lxml.etree.ErrorTypes.ERR_CHARREF_AT_EOF        lxml.etree.ErrorTypes-class.html#ERR_CHARREF_AT_EOF
+lxml.etree.ErrorTypes.HTML_STRUCURE_ERROR       lxml.etree.ErrorTypes-class.html#HTML_STRUCURE_ERROR
+lxml.etree.ErrorTypes.IO_EBADF  lxml.etree.ErrorTypes-class.html#IO_EBADF
+lxml.etree.ErrorTypes.SCHEMAP_ATTR_NONAME_NOREF lxml.etree.ErrorTypes-class.html#SCHEMAP_ATTR_NONAME_NOREF
+lxml.etree.ErrorTypes.SCHEMAP_FAILED_BUILD_IMPORT       lxml.etree.ErrorTypes-class.html#SCHEMAP_FAILED_BUILD_IMPORT
+lxml.etree.ErrorTypes.CHECK_WRONG_PARENT        lxml.etree.ErrorTypes-class.html#CHECK_WRONG_PARENT
+lxml.etree.ErrorTypes.DTD_NOTATION_REDEFINED    lxml.etree.ErrorTypes-class.html#DTD_NOTATION_REDEFINED
+lxml.etree.ErrorTypes.ERR_ATTLIST_NOT_STARTED   lxml.etree.ErrorTypes-class.html#ERR_ATTLIST_NOT_STARTED
+lxml.etree.ErrorTypes.XPATH_UNCLOSED_ERROR      lxml.etree.ErrorTypes-class.html#XPATH_UNCLOSED_ERROR
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_2 lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_2
+lxml.etree.ErrorTypes.RNGP_PAT_NSNAME_EXCEPT_NSNAME     lxml.etree.ErrorTypes-class.html#RNGP_PAT_NSNAME_EXCEPT_NSNAME
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_1 lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_6 lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_6
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_7 lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_7
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_1 lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_2_2_2_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_2_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT_2_2    lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT_2_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_2_2 lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_2_2_2_2
+lxml.etree.ErrorTypes.RNGP_ELEMENT_CONTENT      lxml.etree.ErrorTypes-class.html#RNGP_ELEMENT_CONTENT
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ATTR_CHILD        lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ATTR_CHILD
+lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID_KEYWORD       lxml.etree.ErrorTypes-class.html#ERR_CONDSEC_INVALID_KEYWORD
+lxml.etree.ErrorTypes.RNGP_START_EMPTY  lxml.etree.ErrorTypes-class.html#RNGP_START_EMPTY
+lxml.etree.ErrorTypes.IO_EAGAIN lxml.etree.ErrorTypes-class.html#IO_EAGAIN
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MININCLUSIVE_VALID    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MININCLUSIVE_VALID
+lxml.etree.ErrorTypes.SCHEMAV_ELEMENT_CONTENT   lxml.etree.ErrorTypes-class.html#SCHEMAV_ELEMENT_CONTENT
+lxml.etree.ErrorTypes.XINCLUDE_FRAGMENT_ID      lxml.etree.ErrorTypes-class.html#XINCLUDE_FRAGMENT_ID
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_3_2_5  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_3_2_5
+lxml.etree.ErrorTypes.I18N_NO_NAME      lxml.etree.ErrorTypes-class.html#I18N_NO_NAME
+lxml.etree.ErrorTypes.SCHEMAP_IMPORT_SCHEMA_NOT_URI     lxml.etree.ErrorTypes-class.html#SCHEMAP_IMPORT_SCHEMA_NOT_URI
+lxml.etree.ErrorTypes.NS_ERR_QNAME      lxml.etree.ErrorTypes-class.html#NS_ERR_QNAME
+lxml.etree.ErrorTypes.SCHEMAP_UNION_NOT_EXPRESSIBLE     lxml.etree.ErrorTypes-class.html#SCHEMAP_UNION_NOT_EXPRESSIBLE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_CT_1  lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_CT_1
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_REF lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_REF
+lxml.etree.ErrorTypes.SCHEMAP_IMPORT_REDEFINE_NSNAME    lxml.etree.ErrorTypes-class.html#SCHEMAP_IMPORT_REDEFINE_NSNAME
+lxml.etree.ErrorTypes.SCHEMAV_ATTRINVALID       lxml.etree.ErrorTypes-class.html#SCHEMAV_ATTRINVALID
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ATTR lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_ATTR
+lxml.etree.ErrorTypes.IO_ESRCH  lxml.etree.ErrorTypes-class.html#IO_ESRCH
+lxml.etree.ErrorTypes.DTD_UNKNOWN_ELEM  lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_ELEM
+lxml.etree.ErrorTypes.XINCLUDE_DEPRECATED_NS    lxml.etree.ErrorTypes-class.html#XINCLUDE_DEPRECATED_NS
+lxml.etree.ErrorTypes.ERR_CHARREF_IN_EPILOG     lxml.etree.ErrorTypes-class.html#ERR_CHARREF_IN_EPILOG
+lxml.etree.ErrorTypes.RNGP_UNKNOWN_TYPE_LIB     lxml.etree.ErrorTypes-class.html#RNGP_UNKNOWN_TYPE_LIB
+lxml.etree.ErrorTypes.ERR_NMTOKEN_REQUIRED      lxml.etree.ErrorTypes-class.html#ERR_NMTOKEN_REQUIRED
+lxml.etree.ErrorTypes.DTD_NOT_EMPTY     lxml.etree.ErrorTypes-class.html#DTD_NOT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_2_1      lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_2_1
+lxml.etree.ErrorTypes.ERR_PEREF_IN_PROLOG       lxml.etree.ErrorTypes-class.html#ERR_PEREF_IN_PROLOG
+lxml.etree.ErrorTypes.SCHEMAP_NOT_DETERMINISTIC lxml.etree.ErrorTypes-class.html#SCHEMAP_NOT_DETERMINISTIC
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_6 lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_6
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_5 lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_5
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_4 lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_4
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_3 lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_3
+lxml.etree.ErrorTypes.SCHEMAP_E_PROPS_CORRECT_2 lxml.etree.ErrorTypes-class.html#SCHEMAP_E_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.IO_EROFS  lxml.etree.ErrorTypes-class.html#IO_EROFS
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_ONEMORE      lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_ONEMORE
+lxml.etree.ErrorTypes.SCHEMAP_IMPORT_NAMESPACE_NOT_URI  lxml.etree.ErrorTypes-class.html#SCHEMAP_IMPORT_NAMESPACE_NOT_URI
+lxml.etree.ErrorTypes.SCHEMAP_FAILED_PARSE      lxml.etree.ErrorTypes-class.html#SCHEMAP_FAILED_PARSE
+lxml.etree.ErrorTypes.XPTR_SYNTAX_ERROR lxml.etree.ErrorTypes-class.html#XPTR_SYNTAX_ERROR
+lxml.etree.ErrorTypes.MODULE_CLOSE      lxml.etree.ErrorTypes-class.html#MODULE_CLOSE
+lxml.etree.ErrorTypes.CHECK_NO_PARENT   lxml.etree.ErrorTypes-class.html#CHECK_NO_PARENT
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_GROUP   lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_GROUP
+lxml.etree.ErrorTypes.IO_EEXIST lxml.etree.ErrorTypes-class.html#IO_EEXIST
+lxml.etree.ErrorTypes.REGEXP_COMPILE_ERROR      lxml.etree.ErrorTypes-class.html#REGEXP_COMPILE_ERROR
+lxml.etree.ErrorTypes.CATALOG_RECURSION lxml.etree.ErrorTypes-class.html#CATALOG_RECURSION
+lxml.etree.ErrorTypes.WAR_CATALOG_PI    lxml.etree.ErrorTypes-class.html#WAR_CATALOG_PI
+lxml.etree.ErrorTypes.ERR_ELEMCONTENT_NOT_FINISHED      lxml.etree.ErrorTypes-class.html#ERR_ELEMCONTENT_NOT_FINISHED
+lxml.etree.ErrorTypes.ERR_LT_REQUIRED   lxml.etree.ErrorTypes-class.html#ERR_LT_REQUIRED
+lxml.etree.ErrorTypes.RNGP_PARSE_ERROR  lxml.etree.ErrorTypes-class.html#RNGP_PARSE_ERROR
+lxml.etree.ErrorTypes.RNGP_HREF_ERROR   lxml.etree.ErrorTypes-class.html#RNGP_HREF_ERROR
+lxml.etree.ErrorTypes.RNGP_START_MISSING        lxml.etree.ErrorTypes-class.html#RNGP_START_MISSING
+lxml.etree.ErrorTypes.ERR_EXT_ENTITY_STANDALONE lxml.etree.ErrorTypes-class.html#ERR_EXT_ENTITY_STANDALONE
+lxml.etree.ErrorTypes.ERR_ENTITY_IS_PARAMETER   lxml.etree.ErrorTypes-class.html#ERR_ENTITY_IS_PARAMETER
+lxml.etree.ErrorTypes.RNGP_URI_FRAGMENT lxml.etree.ErrorTypes-class.html#RNGP_URI_FRAGMENT
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_2     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_1_2
+lxml.etree.ErrorTypes.ERR_XMLDECL_NOT_STARTED   lxml.etree.ErrorTypes-class.html#ERR_XMLDECL_NOT_STARTED
+lxml.etree.ErrorTypes.XINCLUDE_NO_HREF  lxml.etree.ErrorTypes-class.html#XINCLUDE_NO_HREF
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_1_1     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_1_1
+lxml.etree.ErrorTypes.CHECK_FOUND_ATTRIBUTE     lxml.etree.ErrorTypes-class.html#CHECK_FOUND_ATTRIBUTE
+lxml.etree.ErrorTypes.SCHEMAP_SIMPLETYPE_NONAME lxml.etree.ErrorTypes-class.html#SCHEMAP_SIMPLETYPE_NONAME
+lxml.etree.ErrorTypes.SCHEMAP_SRC_INCLUDE       lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_INCLUDE
+lxml.etree.ErrorTypes.RNGP_INTERLEAVE_ADD       lxml.etree.ErrorTypes-class.html#RNGP_INTERLEAVE_ADD
+lxml.etree.ErrorTypes.CHECK_NO_HREF     lxml.etree.ErrorTypes-class.html#CHECK_NO_HREF
+lxml.etree.ErrorTypes.RNGP_TYPE_VALUE   lxml.etree.ErrorTypes-class.html#RNGP_TYPE_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_EXTENSION_NO_BASE lxml.etree.ErrorTypes-class.html#SCHEMAP_EXTENSION_NO_BASE
+lxml.etree.ErrorTypes.RNGP_PAT_ANYNAME_EXCEPT_ANYNAME   lxml.etree.ErrorTypes-class.html#RNGP_PAT_ANYNAME_EXCEPT_ANYNAME
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_TYPE    lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_TYPE
+lxml.etree.ErrorTypes.ERR_ENTITYREF_AT_EOF      lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_AT_EOF
+lxml.etree.ErrorTypes.C14N_CREATE_CTXT  lxml.etree.ErrorTypes-class.html#C14N_CREATE_CTXT
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_3  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_3
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_2  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_2
+lxml.etree.ErrorTypes.RNGP_PAT_START_ONEMORE    lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_ONEMORE
+lxml.etree.ErrorTypes.ERR_ENTITY_BOUNDARY       lxml.etree.ErrorTypes-class.html#ERR_ENTITY_BOUNDARY
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_5  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_5
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_4  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_4
+lxml.etree.ErrorTypes.ERR_UNKNOWN_ENCODING      lxml.etree.ErrorTypes-class.html#ERR_UNKNOWN_ENCODING
+lxml.etree.ErrorTypes.HTML_UNKNOWN_TAG  lxml.etree.ErrorTypes-class.html#HTML_UNKNOWN_TAG
+<a href="#id1"><span class="problematic" id="id2">lxml.etree.ErrorTypes.CHECK_</span></a>    lxml.etree.ErrorTypes-class.html#CHECK_
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_REF_AND_SUBTYPE   lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_REF_AND_SUBTYPE
+lxml.etree.ErrorTypes.DTD_INVALID_DEFAULT       lxml.etree.ErrorTypes-class.html#DTD_INVALID_DEFAULT
+lxml.etree.ErrorTypes.C14N_RELATIVE_NAMESPACE   lxml.etree.ErrorTypes-class.html#C14N_RELATIVE_NAMESPACE
+lxml.etree.ErrorTypes.SCHEMAP_FACET_NO_VALUE    lxml.etree.ErrorTypes-class.html#SCHEMAP_FACET_NO_VALUE
+lxml.etree.ErrorTypes.CHECK_NO_DOC      lxml.etree.ErrorTypes-class.html#CHECK_NO_DOC
+lxml.etree.ErrorTypes.IO_EFBIG  lxml.etree.ErrorTypes-class.html#IO_EFBIG
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_WHITE_SPACE       lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_WHITE_SPACE
+lxml.etree.ErrorTypes.RNGP_NSNAME_ATTR_ANCESTOR lxml.etree.ErrorTypes-class.html#RNGP_NSNAME_ATTR_ANCESTOR
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_NOT_ALLOWED      lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ELEM_NOT_ALLOWED
+lxml.etree.ErrorTypes.RNGP_START_CHOICE_AND_INTERLEAVE  lxml.etree.ErrorTypes-class.html#RNGP_START_CHOICE_AND_INTERLEAVE
+lxml.etree.ErrorTypes.DTD_UNKNOWN_NOTATION      lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_NOTATION
+lxml.etree.ErrorTypes.ERR_NS_DECL_ERROR lxml.etree.ErrorTypes-class.html#ERR_NS_DECL_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_GROUP_CHILD       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_GROUP_CHILD
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_LIST        lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_LIST
+lxml.etree.ErrorTypes.CHECK_WRONG_DOC   lxml.etree.ErrorTypes-class.html#CHECK_WRONG_DOC
+lxml.etree.ErrorTypes.ERR_LITERAL_NOT_FINISHED  lxml.etree.ErrorTypes-class.html#ERR_LITERAL_NOT_FINISHED
+lxml.etree.ErrorTypes.CHECK_FOUND_CDATA lxml.etree.ErrorTypes-class.html#CHECK_FOUND_CDATA
+lxml.etree.ErrorTypes.SAVE_UNKNOWN_ENCODING     lxml.etree.ErrorTypes-class.html#SAVE_UNKNOWN_ENCODING
+lxml.etree.ErrorTypes.RNGP_GRAMMAR_MISSING      lxml.etree.ErrorTypes-class.html#RNGP_GRAMMAR_MISSING
+lxml.etree.ErrorTypes.SCHEMAV_NOTSIMPLE lxml.etree.ErrorTypes-class.html#SCHEMAV_NOTSIMPLE
+lxml.etree.ErrorTypes.DTD_ID_REDEFINED  lxml.etree.ErrorTypes-class.html#DTD_ID_REDEFINED
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTR    lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_ATTR
+lxml.etree.ErrorTypes.RNGP_ERROR_TYPE_LIB       lxml.etree.ErrorTypes-class.html#RNGP_ERROR_TYPE_LIB
+lxml.etree.ErrorTypes.CHECK_NAME_NOT_NULL       lxml.etree.ErrorTypes-class.html#CHECK_NAME_NOT_NULL
+lxml.etree.ErrorTypes.IO_UNKNOWN        lxml.etree.ErrorTypes-class.html#IO_UNKNOWN
+lxml.etree.ErrorTypes.HTTP_URL_SYNTAX   lxml.etree.ErrorTypes-class.html#HTTP_URL_SYNTAX
+lxml.etree.ErrorTypes.RNGP_NAME_MISSING lxml.etree.ErrorTypes-class.html#RNGP_NAME_MISSING
+lxml.etree.ErrorTypes.CHECK_WRONG_NEXT  lxml.etree.ErrorTypes-class.html#CHECK_WRONG_NEXT
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD        lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD
+lxml.etree.ErrorTypes.SCHEMAP_NOATTR_NOREF      lxml.etree.ErrorTypes-class.html#SCHEMAP_NOATTR_NOREF
+lxml.etree.ErrorTypes.SAVE_NOT_UTF8     lxml.etree.ErrorTypes-class.html#SAVE_NOT_UTF8
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_2_1  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_2_1
+lxml.etree.ErrorTypes.CHECK_NOT_UTF8    lxml.etree.ErrorTypes-class.html#CHECK_NOT_UTF8
+lxml.etree.ErrorTypes.DTD_NO_DTD        lxml.etree.ErrorTypes-class.html#DTD_NO_DTD
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_INTERLEAVE  lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_INTERLEAVE
+lxml.etree.ErrorTypes.ERR_ENTITY_PE_INTERNAL    lxml.etree.ErrorTypes-class.html#ERR_ENTITY_PE_INTERNAL
+lxml.etree.ErrorTypes.RNGP_INTERLEAVE_NO_CONTENT        lxml.etree.ErrorTypes-class.html#RNGP_INTERLEAVE_NO_CONTENT
+lxml.etree.ErrorTypes.ERR_CONDSEC_INVALID       lxml.etree.ErrorTypes-class.html#ERR_CONDSEC_INVALID
+lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_EMPTY   lxml.etree.ErrorTypes-class.html#RNGP_ELEM_CONTENT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAP_NOROOT    lxml.etree.ErrorTypes-class.html#SCHEMAP_NOROOT
+lxml.etree.ErrorTypes.CHECK_UNKNOWN_NODE        lxml.etree.ErrorTypes-class.html#CHECK_UNKNOWN_NODE
+lxml.etree.ErrorTypes.XINCLUDE_UNKNOWN_ENCODING lxml.etree.ErrorTypes-class.html#XINCLUDE_UNKNOWN_ENCODING
+lxml.etree.ErrorTypes.XPATH_INVALID_TYPE        lxml.etree.ErrorTypes-class.html#XPATH_INVALID_TYPE
+lxml.etree.ErrorTypes.RNGP_PARENTREF_CREATE_FAILED      lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_CREATE_FAILED
+lxml.etree.ErrorTypes.CHECK_NO_PREV     lxml.etree.ErrorTypes-class.html#CHECK_NO_PREV
+lxml.etree.ErrorTypes.XPATH_INVALID_CTXT_SIZE   lxml.etree.ErrorTypes-class.html#XPATH_INVALID_CTXT_SIZE
+lxml.etree.ErrorTypes.RNGP_DATA_CONTENT lxml.etree.ErrorTypes-class.html#RNGP_DATA_CONTENT
+lxml.etree.ErrorTypes.SCHEMAP_S4S_ELEM_MISSING  lxml.etree.ErrorTypes-class.html#SCHEMAP_S4S_ELEM_MISSING
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_BASE_TYPE lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_BASE_TYPE
+lxml.etree.ErrorTypes.XINCLUDE_NO_FALLBACK      lxml.etree.ErrorTypes-class.html#XINCLUDE_NO_FALLBACK
+lxml.etree.ErrorTypes.IO_WRITE  lxml.etree.ErrorTypes-class.html#IO_WRITE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_RESOLVE       lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_RESOLVE
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_1      lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_1
+lxml.etree.ErrorTypes.SCHEMAV_DOCUMENT_ELEMENT_MISSING  lxml.etree.ErrorTypes-class.html#SCHEMAV_DOCUMENT_ELEMENT_MISSING
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_REF  lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_REF
+lxml.etree.ErrorTypes.CHECK_NO_NAME     lxml.etree.ErrorTypes-class.html#CHECK_NO_NAME
+lxml.etree.ErrorTypes.IO_ENOSPC lxml.etree.ErrorTypes-class.html#IO_ENOSPC
+lxml.etree.ErrorTypes.SCHEMAP_AU_PROPS_CORRECT  lxml.etree.ErrorTypes-class.html#SCHEMAP_AU_PROPS_CORRECT
+lxml.etree.ErrorTypes.TREE_NOT_UTF8     lxml.etree.ErrorTypes-class.html#TREE_NOT_UTF8
+lxml.etree.ErrorTypes.RNGP_PAT_LIST_ELEM        lxml.etree.ErrorTypes-class.html#RNGP_PAT_LIST_ELEM
+lxml.etree.ErrorTypes.XPATH_EXPRESSION_OK       lxml.etree.ErrorTypes-class.html#XPATH_EXPRESSION_OK
+lxml.etree.ErrorTypes.XPTR_SUB_RESOURCE_ERROR   lxml.etree.ErrorTypes-class.html#XPTR_SUB_RESOURCE_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_ELEM_DEFAULT_FIXED        lxml.etree.ErrorTypes-class.html#SCHEMAP_ELEM_DEFAULT_FIXED
+lxml.etree.ErrorTypes.WAR_ENTITY_REDEFINED      lxml.etree.ErrorTypes-class.html#WAR_ENTITY_REDEFINED
+lxml.etree.ErrorTypes.DTD_XMLID_VALUE   lxml.etree.ErrorTypes-class.html#DTD_XMLID_VALUE
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_2_2      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_2_2
+lxml.etree.ErrorTypes.RNGP_GRAMMAR_CONTENT      lxml.etree.ErrorTypes-class.html#RNGP_GRAMMAR_CONTENT
+lxml.etree.ErrorTypes.ERR_CHARREF_IN_DTD        lxml.etree.ErrorTypes-class.html#ERR_CHARREF_IN_DTD
+lxml.etree.ErrorTypes.I18N_NO_HANDLER   lxml.etree.ErrorTypes-class.html#I18N_NO_HANDLER
+lxml.etree.ErrorTypes.SCHEMAV_CVC_FACET_VALID   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_FACET_VALID
+lxml.etree.ErrorTypes.DTD_MIXED_CORRUPT lxml.etree.ErrorTypes-class.html#DTD_MIXED_CORRUPT
+lxml.etree.ErrorTypes.ERR_INVALID_DEC_CHARREF   lxml.etree.ErrorTypes-class.html#ERR_INVALID_DEC_CHARREF
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TOTALDIGITS_VALID     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TOTALDIGITS_VALID
+lxml.etree.ErrorTypes.CHECK_NOT_NCNAME  lxml.etree.ErrorTypes-class.html#CHECK_NOT_NCNAME
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ENUM      lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ENUM
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_MEMBER_TYPE       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_MEMBER_TYPE
+lxml.etree.ErrorTypes.ERR_SPACE_REQUIRED        lxml.etree.ErrorTypes-class.html#ERR_SPACE_REQUIRED
+lxml.etree.ErrorTypes.SCHEMAP_COMPLEXTYPE_NONAME_NOREF  lxml.etree.ErrorTypes-class.html#SCHEMAP_COMPLEXTYPE_NONAME_NOREF
+lxml.etree.ErrorTypes.RNGP_PAT_START_EMPTY      lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_EMPTY
+lxml.etree.ErrorTypes.ERR_DOCUMENT_EMPTY        lxml.etree.ErrorTypes-class.html#ERR_DOCUMENT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAV_EXTRACONTENT      lxml.etree.ErrorTypes-class.html#SCHEMAV_EXTRACONTENT
+lxml.etree.ErrorTypes.SAVE_CHAR_INVALID lxml.etree.ErrorTypes-class.html#SAVE_CHAR_INVALID
+lxml.etree.ErrorTypes.RNGP_XML_NS       lxml.etree.ErrorTypes-class.html#RNGP_XML_NS
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD
+lxml.etree.ErrorTypes.DTD_ATTRIBUTE_DEFAULT     lxml.etree.ErrorTypes-class.html#DTD_ATTRIBUTE_DEFAULT
+lxml.etree.ErrorTypes.IO_ENOTSUP        lxml.etree.ErrorTypes-class.html#IO_ENOTSUP
+lxml.etree.ErrorTypes.DTD_UNKNOWN_ATTRIBUTE     lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_ATTRIBUTE
+lxml.etree.ErrorTypes.XINCLUDE_INCLUDE_IN_INCLUDE       lxml.etree.ErrorTypes-class.html#XINCLUDE_INCLUDE_IN_INCLUDE
+lxml.etree.ErrorTypes.XPATH_UNFINISHED_LITERAL_ERROR    lxml.etree.ErrorTypes-class.html#XPATH_UNFINISHED_LITERAL_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_ATTRGRP_NONAME_NOREF      lxml.etree.ErrorTypes-class.html#SCHEMAP_ATTRGRP_NONAME_NOREF
+lxml.etree.ErrorTypes.SCHEMAV_WRONGELEM lxml.etree.ErrorTypes-class.html#SCHEMAV_WRONGELEM
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_MINOCCURS lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_MINOCCURS
+lxml.etree.ErrorTypes.RNGP_PARENTREF_NAME_INVALID       lxml.etree.ErrorTypes-class.html#RNGP_PARENTREF_NAME_INVALID
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_1      lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_1_1
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_1_2      lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_1_2
+lxml.etree.ErrorTypes.IO_ENODEV lxml.etree.ErrorTypes-class.html#IO_ENODEV
+lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_2_2   lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_VALID_DEFAULT_2_2_2
+lxml.etree.ErrorTypes.IO_EBUSY  lxml.etree.ErrorTypes-class.html#IO_EBUSY
+lxml.etree.ErrorTypes.C14N_REQUIRES_UTF8        lxml.etree.ErrorTypes-class.html#C14N_REQUIRES_UTF8
+lxml.etree.ErrorTypes.SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE
+lxml.etree.ErrorTypes.ERR_URI_REQUIRED  lxml.etree.ErrorTypes-class.html#ERR_URI_REQUIRED
+lxml.etree.ErrorTypes.IO_EADDRINUSE     lxml.etree.ErrorTypes-class.html#IO_EADDRINUSE
+lxml.etree.ErrorTypes.SCHEMAV_INTERNAL  lxml.etree.ErrorTypes-class.html#SCHEMAV_INTERNAL
+lxml.etree.ErrorTypes.RNGP_VALUE_NO_CONTENT     lxml.etree.ErrorTypes-class.html#RNGP_VALUE_NO_CONTENT
+lxml.etree.ErrorTypes.NS_ERR_UNDEFINED_NAMESPACE        lxml.etree.ErrorTypes-class.html#NS_ERR_UNDEFINED_NAMESPACE
+lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_2 lxml.etree.ErrorTypes-class.html#SCHEMAP_A_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.CHECK_FOUND_ELEMENT       lxml.etree.ErrorTypes-class.html#CHECK_FOUND_ELEMENT
+lxml.etree.ErrorTypes.RNGP_ELEM_CONTENT_ERROR   lxml.etree.ErrorTypes-class.html#RNGP_ELEM_CONTENT_ERROR
+lxml.etree.ErrorTypes.SCHEMAP_RESTRICTION_NONAME_NOREF  lxml.etree.ErrorTypes-class.html#SCHEMAP_RESTRICTION_NONAME_NOREF
+lxml.etree.ErrorTypes.HTTP_USE_IP       lxml.etree.ErrorTypes-class.html#HTTP_USE_IP
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_1     lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ELEMENT_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_3     lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ELEMENT_3
+lxml.etree.ErrorTypes.ERR_ATTRIBUTE_NOT_FINISHED        lxml.etree.ErrorTypes-class.html#ERR_ATTRIBUTE_NOT_FINISHED
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_1    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TYPE_3_1_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_3_1_2    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TYPE_3_1_2
+lxml.etree.ErrorTypes.SCHEMATRONV_REPORT        lxml.etree.ErrorTypes-class.html#SCHEMATRONV_REPORT
+lxml.etree.ErrorTypes.SCHEMAV_MISC      lxml.etree.ErrorTypes-class.html#SCHEMAV_MISC
+lxml.etree.ErrorTypes.IO_EPIPE  lxml.etree.ErrorTypes-class.html#IO_EPIPE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_1     lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_GROUP_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_3     lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_GROUP_3
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_GROUP_2     lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_GROUP_2
+lxml.etree.ErrorTypes.IO_EAFNOSUPPORT   lxml.etree.ErrorTypes-class.html#IO_EAFNOSUPPORT
+lxml.etree.ErrorTypes.SCHEMAP_WARN_SKIP_SCHEMA  lxml.etree.ErrorTypes-class.html#SCHEMAP_WARN_SKIP_SCHEMA
+lxml.etree.ErrorTypes.SCHEMAP_A_PROPS_CORRECT_3 lxml.etree.ErrorTypes-class.html#SCHEMAP_A_PROPS_CORRECT_3
+lxml.etree.ErrorTypes.CHECK_FOUND_DOCTYPE       lxml.etree.ErrorTypes-class.html#CHECK_FOUND_DOCTYPE
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD  lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD
+lxml.etree.ErrorTypes.TREE_UNTERMINATED_ENTITY  lxml.etree.ErrorTypes-class.html#TREE_UNTERMINATED_ENTITY
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_1        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_1
+lxml.etree.ErrorTypes.WAR_UNDECLARED_ENTITY     lxml.etree.ErrorTypes-class.html#WAR_UNDECLARED_ENTITY
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_4        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_4
+lxml.etree.ErrorTypes.RNGP_UNKNOWN_CONSTRUCT    lxml.etree.ErrorTypes-class.html#RNGP_UNKNOWN_CONSTRUCT
+lxml.etree.ErrorTypes.SCHEMAP_WARN_ATTR_REDECL_PROH     lxml.etree.ErrorTypes-class.html#SCHEMAP_WARN_ATTR_REDECL_PROH
+lxml.etree.ErrorTypes.ERR_ENTITY_IS_EXTERNAL    lxml.etree.ErrorTypes-class.html#ERR_ENTITY_IS_EXTERNAL
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1_2  lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_1_2
+lxml.etree.ErrorTypes.RNGP_INVALID_DEFINE_NAME  lxml.etree.ErrorTypes-class.html#RNGP_INVALID_DEFINE_NAME
+lxml.etree.ErrorTypes.SCHEMAP_PREFIX_UNDEFINED  lxml.etree.ErrorTypes-class.html#SCHEMAP_PREFIX_UNDEFINED
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_EMPTY        lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_EMPTY
+lxml.etree.ErrorTypes.SCHEMAV_INVALIDELEM       lxml.etree.ErrorTypes-class.html#SCHEMAV_INVALIDELEM
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_IMPORT_CHILD      lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_IMPORT_CHILD
+lxml.etree.ErrorTypes.RNGP_EXTERNALREF_EMTPY    lxml.etree.ErrorTypes-class.html#RNGP_EXTERNALREF_EMTPY
+lxml.etree.ErrorTypes.SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE      lxml.etree.ErrorTypes-class.html#SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE
+lxml.etree.ErrorTypes.IO_EALREADY       lxml.etree.ErrorTypes-class.html#IO_EALREADY
+lxml.etree.ErrorTypes.WAR_NS_URI        lxml.etree.ErrorTypes-class.html#WAR_NS_URI
+lxml.etree.ErrorTypes.SCHEMAP_REF_AND_CONTENT   lxml.etree.ErrorTypes-class.html#SCHEMAP_REF_AND_CONTENT
+lxml.etree.ErrorTypes.ERR_UNDECLARED_ENTITY     lxml.etree.ErrorTypes-class.html#ERR_UNDECLARED_ENTITY
+lxml.etree.ErrorTypes.IO_NETWORK_ATTEMPT        lxml.etree.ErrorTypes-class.html#IO_NETWORK_ATTEMPT
+lxml.etree.ErrorTypes.ERR_INVALID_CHAR  lxml.etree.ErrorTypes-class.html#ERR_INVALID_CHAR
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_1     lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_2_1
+lxml.etree.ErrorTypes.SCHEMAP_GROUP_NONAME_NOREF        lxml.etree.ErrorTypes-class.html#SCHEMAP_GROUP_NONAME_NOREF
+lxml.etree.ErrorTypes.ERR_LITERAL_NOT_STARTED   lxml.etree.ErrorTypes-class.html#ERR_LITERAL_NOT_STARTED
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_5        lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_5
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ELEMENT lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_ELEMENT
+lxml.etree.ErrorTypes.SCHEMAP_CVC_SIMPLE_TYPE   lxml.etree.ErrorTypes-class.html#SCHEMAP_CVC_SIMPLE_TYPE
+lxml.etree.ErrorTypes.ERR_UNKNOWN_VERSION       lxml.etree.ErrorTypes-class.html#ERR_UNKNOWN_VERSION
+lxml.etree.ErrorTypes.SCHEMAP_NOT_SCHEMA        lxml.etree.ErrorTypes-class.html#SCHEMAP_NOT_SCHEMA
+lxml.etree.ErrorTypes.RNGP_UNKNOWN_COMBINE      lxml.etree.ErrorTypes-class.html#RNGP_UNKNOWN_COMBINE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ELEMENT_2_1   lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ELEMENT_2_1
+lxml.etree.ErrorTypes.CHECK_NOT_DTD     lxml.etree.ErrorTypes-class.html#CHECK_NOT_DTD
+lxml.etree.ErrorTypes.CHECK_NO_NEXT     lxml.etree.ErrorTypes-class.html#CHECK_NO_NEXT
+lxml.etree.ErrorTypes.ERR_NOT_WELL_BALANCED     lxml.etree.ErrorTypes-class.html#ERR_NOT_WELL_BALANCED
+lxml.etree.ErrorTypes.RNGP_REF_CYCLE    lxml.etree.ErrorTypes-class.html#RNGP_REF_CYCLE
+lxml.etree.ErrorTypes.SCHEMAP_CT_PROPS_CORRECT_1        lxml.etree.ErrorTypes-class.html#SCHEMAP_CT_PROPS_CORRECT_1
+lxml.etree.ErrorTypes.SCHEMAV_FACET     lxml.etree.ErrorTypes-class.html#SCHEMAV_FACET
+lxml.etree.ErrorTypes.ERR_ENCODING_NAME lxml.etree.ErrorTypes-class.html#ERR_ENCODING_NAME
+lxml.etree.ErrorTypes.SCHEMAV_NOROOT    lxml.etree.ErrorTypes-class.html#SCHEMAV_NOROOT
+lxml.etree.ErrorTypes.DTD_XMLID_TYPE    lxml.etree.ErrorTypes-class.html#DTD_XMLID_TYPE
+lxml.etree.ErrorTypes.C14N_CREATE_STACK lxml.etree.ErrorTypes-class.html#C14N_CREATE_STACK
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_2        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TYPE_2
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SEQUENCE_CHILD    lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_SEQUENCE_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_TYPE_1        lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_TYPE_1
+lxml.etree.ErrorTypes.IO_ENXIO  lxml.etree.ErrorTypes-class.html#IO_ENXIO
+lxml.etree.ErrorTypes.SCHEMAV_CVC_PATTERN_VALID lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_PATTERN_VALID
+lxml.etree.ErrorTypes.ERR_ATTRIBUTE_WITHOUT_VALUE       lxml.etree.ErrorTypes-class.html#ERR_ATTRIBUTE_WITHOUT_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_INCLUDE_SCHEMA_NOT_URI    lxml.etree.ErrorTypes-class.html#SCHEMAP_INCLUDE_SCHEMA_NOT_URI
+lxml.etree.ErrorTypes.SCHEMAP_REDEFINED_ATTRGROUP       lxml.etree.ErrorTypes-class.html#SCHEMAP_REDEFINED_ATTRGROUP
+lxml.etree.ErrorTypes.SCHEMAV_INVALIDATTR       lxml.etree.ErrorTypes-class.html#SCHEMAV_INVALIDATTR
+lxml.etree.ErrorTypes.ERR_OK    lxml.etree.ErrorTypes-class.html#ERR_OK
+lxml.etree.ErrorTypes.ERR_EQUAL_REQUIRED        lxml.etree.ErrorTypes-class.html#ERR_EQUAL_REQUIRED
+lxml.etree.ErrorTypes.NS_ERR_XML_NAMESPACE      lxml.etree.ErrorTypes-class.html#NS_ERR_XML_NAMESPACE
+lxml.etree.ErrorTypes.ERR_EXTRA_CONTENT lxml.etree.ErrorTypes-class.html#ERR_EXTRA_CONTENT
+lxml.etree.ErrorTypes.DTD_MULTIPLE_ID   lxml.etree.ErrorTypes-class.html#DTD_MULTIPLE_ID
+lxml.etree.ErrorTypes.IO_ECONNREFUSED   lxml.etree.ErrorTypes-class.html#IO_ECONNREFUSED
+lxml.etree.ErrorTypes.XPTR_UNKNOWN_SCHEME       lxml.etree.ErrorTypes-class.html#XPTR_UNKNOWN_SCHEME
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_2      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_5_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_5_1      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_5_1
+lxml.etree.ErrorTypes.RNGP_PAT_ONEMORE_INTERLEAVE_ATTR  lxml.etree.ErrorTypes-class.html#RNGP_PAT_ONEMORE_INTERLEAVE_ATTR
+lxml.etree.ErrorTypes.XINCLUDE_ENTITY_DEF_MISMATCH      lxml.etree.ErrorTypes-class.html#XINCLUDE_ENTITY_DEF_MISMATCH
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_RESTRICTS_3_3_1    lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_RESTRICTS_3_3_1
+lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_1        lxml.etree.ErrorTypes-class.html#SCHEMAP_MG_PROPS_CORRECT_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_2 lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_3_2
+lxml.etree.ErrorTypes.SCHEMAP_SRC_ATTRIBUTE_3_1 lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_ATTRIBUTE_3_1
+lxml.etree.ErrorTypes.SCHEMAP_MG_PROPS_CORRECT_2        lxml.etree.ErrorTypes-class.html#SCHEMAP_MG_PROPS_CORRECT_2
+lxml.etree.ErrorTypes.RNGP_PAT_START_VALUE      lxml.etree.ErrorTypes-class.html#RNGP_PAT_START_VALUE
+lxml.etree.ErrorTypes.DTD_ROOT_NAME     lxml.etree.ErrorTypes-class.html#DTD_ROOT_NAME
+lxml.etree.ErrorTypes.IO_EISDIR lxml.etree.ErrorTypes-class.html#IO_EISDIR
+lxml.etree.ErrorTypes.IO_EINPROGRESS    lxml.etree.ErrorTypes-class.html#IO_EINPROGRESS
+lxml.etree.ErrorTypes.IO_EDEADLK        lxml.etree.ErrorTypes-class.html#IO_EDEADLK
+lxml.etree.ErrorTypes.SCHEMAP_COS_ST_DERIVED_OK_2_2     lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_ST_DERIVED_OK_2_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_5_2_2_1   lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_5_2_2_1
+lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_2       lxml.etree.ErrorTypes-class.html#SCHEMAP_P_PROPS_CORRECT_2_2
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET     lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_FACET
+lxml.etree.ErrorTypes.SCHEMAP_P_PROPS_CORRECT_2_1       lxml.etree.ErrorTypes-class.html#SCHEMAP_P_PROPS_CORRECT_2_1
+lxml.etree.ErrorTypes.XINCLUDE_BUILD_FAILED     lxml.etree.ErrorTypes-class.html#XINCLUDE_BUILD_FAILED
+lxml.etree.ErrorTypes.ERR_PEREF_AT_EOF  lxml.etree.ErrorTypes-class.html#ERR_PEREF_AT_EOF
+lxml.etree.ErrorTypes.IO_ENOLCK lxml.etree.ErrorTypes-class.html#IO_ENOLCK
+lxml.etree.ErrorTypes.DTD_MISSING_ATTRIBUTE     lxml.etree.ErrorTypes-class.html#DTD_MISSING_ATTRIBUTE
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_1      lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_3_1
+lxml.etree.ErrorTypes.CHECK_FOUND_ENTITYREF     lxml.etree.ErrorTypes-class.html#CHECK_FOUND_ENTITYREF
+lxml.etree.ErrorTypes.RNGP_PARAM_FORBIDDEN      lxml.etree.ErrorTypes-class.html#RNGP_PARAM_FORBIDDEN
+lxml.etree.ErrorTypes.DTD_ELEM_NAMESPACE        lxml.etree.ErrorTypes-class.html#DTD_ELEM_NAMESPACE
+lxml.etree.ErrorTypes.SCHEMAP_FAILED_LOAD       lxml.etree.ErrorTypes-class.html#SCHEMAP_FAILED_LOAD
+lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_4 lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_SIMPLE_TYPE_4
+lxml.etree.ErrorTypes.DTD_ID_FIXED      lxml.etree.ErrorTypes-class.html#DTD_ID_FIXED
+lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_1 lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_SIMPLE_TYPE_1
+lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_2 lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_SIMPLE_TYPE_2
+lxml.etree.ErrorTypes.SCHEMAP_SRC_SIMPLE_TYPE_3 lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_SIMPLE_TYPE_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_1    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_3_2_1
+lxml.etree.ErrorTypes.XINCLUDE_PARSE_VALUE      lxml.etree.ErrorTypes-class.html#XINCLUDE_PARSE_VALUE
+lxml.etree.ErrorTypes.RNGP_INCLUDE_FAILURE      lxml.etree.ErrorTypes-class.html#RNGP_INCLUDE_FAILURE
+lxml.etree.ErrorTypes.CHECK_NO_DICT     lxml.etree.ErrorTypes-class.html#CHECK_NO_DICT
+lxml.etree.ErrorTypes.CHECK_NOT_ELEM_DECL       lxml.etree.ErrorTypes-class.html#CHECK_NOT_ELEM_DECL
+lxml.etree.ErrorTypes.XPTR_CHILDSEQ_START       lxml.etree.ErrorTypes-class.html#XPTR_CHILDSEQ_START
+lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_EMPTY      lxml.etree.ErrorTypes-class.html#RNGP_ATTRIBUTE_EMPTY
+lxml.etree.ErrorTypes.ERR_ENTITYREF_NO_NAME     lxml.etree.ErrorTypes-class.html#ERR_ENTITYREF_NO_NAME
+lxml.etree.ErrorTypes.RNGP_UNKNOWN_ATTRIBUTE    lxml.etree.ErrorTypes-class.html#RNGP_UNKNOWN_ATTRIBUTE
+lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_1       lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_VALID_DEFAULT_1
+lxml.etree.ErrorTypes.DTD_INVALID_CHILD lxml.etree.ErrorTypes-class.html#DTD_INVALID_CHILD
+lxml.etree.ErrorTypes.SCHEMAV_CVC_ELT_4_2       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_ELT_4_2
+lxml.etree.ErrorTypes.RNGP_EXCEPT_EMPTY lxml.etree.ErrorTypes-class.html#RNGP_EXCEPT_EMPTY
+lxml.etree.ErrorTypes.RNGP_PAT_ATTR_ATTR        lxml.etree.ErrorTypes-class.html#RNGP_PAT_ATTR_ATTR
+lxml.etree.ErrorTypes.ERR_GT_REQUIRED   lxml.etree.ErrorTypes-class.html#ERR_GT_REQUIRED
+lxml.etree.ErrorTypes.RNGP_ATTR_CONFLICT        lxml.etree.ErrorTypes-class.html#RNGP_ATTR_CONFLICT
+lxml.etree.ErrorTypes.SCHEMAV_CVC_FRACTIONDIGITS_VALID  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_FRACTIONDIGITS_VALID
+lxml.etree.ErrorTypes.IO_ETIMEDOUT      lxml.etree.ErrorTypes-class.html#IO_ETIMEDOUT
+lxml.etree.ErrorTypes.SCHEMAP_C_PROPS_CORRECT   lxml.etree.ErrorTypes-class.html#SCHEMAP_C_PROPS_CORRECT
+lxml.etree.ErrorTypes.I18N_NO_OUTPUT    lxml.etree.ErrorTypes-class.html#I18N_NO_OUTPUT
+lxml.etree.ErrorTypes.CHECK_NS_ANCESTOR lxml.etree.ErrorTypes-class.html#CHECK_NS_ANCESTOR
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_FACET_VALUE       lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_FACET_VALUE
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_ALL_CHILD lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_ALL_CHILD
+lxml.etree.ErrorTypes.CHECK_FOUND_FRAGMENT      lxml.etree.ErrorTypes-class.html#CHECK_FOUND_FRAGMENT
+lxml.etree.ErrorTypes.ERR_DOCUMENT_START        lxml.etree.ErrorTypes-class.html#ERR_DOCUMENT_START
+lxml.etree.ErrorTypes.SCHEMAV_CVC_LENGTH_VALID  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_LENGTH_VALID
+lxml.etree.ErrorTypes.SCHEMAV_CVC_MINLENGTH_VALID       lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_MINLENGTH_VALID
+lxml.etree.ErrorTypes.SCHEMAP_COS_VALID_DEFAULT_2_1     lxml.etree.ErrorTypes-class.html#SCHEMAP_COS_VALID_DEFAULT_2_1
+lxml.etree.ErrorTypes.XINCLUDE_FALLBACK_NOT_IN_INCLUDE  lxml.etree.ErrorTypes-class.html#XINCLUDE_FALLBACK_NOT_IN_INCLUDE
+lxml.etree.ErrorTypes.RNGP_EXTERNALREF_RECURSE  lxml.etree.ErrorTypes-class.html#RNGP_EXTERNALREF_RECURSE
+lxml.etree.ErrorTypes.ERR_TAG_NAME_MISMATCH     lxml.etree.ErrorTypes-class.html#ERR_TAG_NAME_MISMATCH
+lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_1  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_DATATYPE_VALID_1_2_1
+lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_2  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_DATATYPE_VALID_1_2_2
+lxml.etree.ErrorTypes.SCHEMAV_CVC_DATATYPE_VALID_1_2_3  lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_DATATYPE_VALID_1_2_3
+lxml.etree.ErrorTypes.SCHEMAV_CVC_COMPLEX_TYPE_3_2_2    lxml.etree.ErrorTypes-class.html#SCHEMAV_CVC_COMPLEX_TYPE_3_2_2
+lxml.etree.ErrorTypes.CHECK_FOUND_COMMENT       lxml.etree.ErrorTypes-class.html#CHECK_FOUND_COMMENT
+lxml.etree.ErrorTypes.SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE        lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE
+lxml.etree.ErrorTypes.SCHEMAP_NOTYPE_NOREF      lxml.etree.ErrorTypes-class.html#SCHEMAP_NOTYPE_NOREF
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_SCHEMAS_CHILD     lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_SCHEMAS_CHILD
+lxml.etree.ErrorTypes.RNGP_ATTRIBUTE_CONTENT    lxml.etree.ErrorTypes-class.html#RNGP_ATTRIBUTE_CONTENT
+lxml.etree.ErrorTypes.DTD_UNKNOWN_ENTITY        lxml.etree.ErrorTypes-class.html#DTD_UNKNOWN_ENTITY
+lxml.etree.ErrorTypes.XPATH_UNDEF_PREFIX_ERROR  lxml.etree.ErrorTypes-class.html#XPATH_UNDEF_PREFIX_ERROR
+lxml.etree.ErrorTypes.NS_ERR_ATTRIBUTE_REDEFINED        lxml.etree.ErrorTypes-class.html#NS_ERR_ATTRIBUTE_REDEFINED
+lxml.etree.ErrorTypes.ERR_CONDSEC_NOT_STARTED   lxml.etree.ErrorTypes-class.html#ERR_CONDSEC_NOT_STARTED
+lxml.etree.ErrorTypes.CHECK_FOUND_PI    lxml.etree.ErrorTypes-class.html#CHECK_FOUND_PI
+lxml.etree.ErrorTypes.DTD_DUP_TOKEN     lxml.etree.ErrorTypes-class.html#DTD_DUP_TOKEN
+lxml.etree.ErrorTypes.DTD_ATTRIBUTE_VALUE       lxml.etree.ErrorTypes-class.html#DTD_ATTRIBUTE_VALUE
+lxml.etree.ErrorTypes.XPATH_INVALID_ARITY       lxml.etree.ErrorTypes-class.html#XPATH_INVALID_ARITY
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_EXTENSION_CHILD   lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_EXTENSION_CHILD
+lxml.etree.ErrorTypes.SCHEMAP_REF_AND_SUBTYPE   lxml.etree.ErrorTypes-class.html#SCHEMAP_REF_AND_SUBTYPE
+lxml.etree.ErrorTypes.SCHEMAP_SRC_IMPORT        lxml.etree.ErrorTypes-class.html#SCHEMAP_SRC_IMPORT
+lxml.etree.ErrorTypes.SCHEMAP_NO_XSI    lxml.etree.ErrorTypes-class.html#SCHEMAP_NO_XSI
+lxml.etree.ErrorTypes.SCHEMAV_HAVEDEFAULT       lxml.etree.ErrorTypes-class.html#SCHEMAV_HAVEDEFAULT
+lxml.etree.ErrorTypes.RNGP_PAT_DATA_EXCEPT_LIST lxml.etree.ErrorTypes-class.html#RNGP_PAT_DATA_EXCEPT_LIST
+lxml.etree.ErrorTypes.SCHEMAP_WARN_UNLOCATED_SCHEMA     lxml.etree.ErrorTypes-class.html#SCHEMAP_WARN_UNLOCATED_SCHEMA
+lxml.etree.ErrorTypes.ERR_NOT_STANDALONE        lxml.etree.ErrorTypes-class.html#ERR_NOT_STANDALONE
+lxml.etree.ErrorTypes.SCHEMAP_INVALID_ATTR_COMBINATION  lxml.etree.ErrorTypes-class.html#SCHEMAP_INVALID_ATTR_COMBINATION
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_3       lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_3
+lxml.etree.ErrorTypes.SCHEMAP_DERIVATION_OK_RESTRICTION_1       lxml.etree.ErrorTypes-class.html#SCHEMAP_DERIVATION_OK_RESTRICTION_1
+lxml.etree.ErrorTypes.SCHEMAP_UNKNOWN_UNION_CHILD       lxml.etree.ErrorTypes-class.html#SCHEMAP_UNKNOWN_UNION_CHILD
+lxml.etree.ErrorTypes.XINCLUDE_FALLBACKS_IN_INCLUDE     lxml.etree.ErrorTypes-class.html#XINCLUDE_FALLBACKS_IN_INCLUDE
+lxml.etree.ErrorTypes.IO_BUFFER_FULL    lxml.etree.ErrorTypes-class.html#IO_BUFFER_FULL
+lxml.etree.ErrorTypes.TREE_INVALID_DEC  lxml.etree.ErrorTypes-class.html#TREE_INVALID_DEC
+lxml.etree.ErrorTypes.DTD_STANDALONE_DEFAULTED  lxml.etree.ErrorTypes-class.html#DTD_STANDALONE_DEFAULTED
+lxml.etree.FallbackElementClassLookup   lxml.etree.FallbackElementClassLookup-class.html
+lxml.etree.FallbackElementClassLookup.__new__   lxml.etree.FallbackElementClassLookup-class.html#__new__
+lxml.etree.FallbackElementClassLookup.fallback  lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback      lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.FallbackElementClassLookup.__init__  lxml.etree.FallbackElementClassLookup-class.html#__init__
+lxml.etree.HTMLParser   lxml.etree.HTMLParser-class.html
+lxml.etree._FeedParser.feed     lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close    lxml.etree._FeedParser-class.html#close
+lxml.etree.HTMLParser.__init__  lxml.etree.HTMLParser-class.html#__init__
+lxml.etree.HTMLParser.__new__   lxml.etree.HTMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup    lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version  lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement      lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy     lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers        lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target   lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log        lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log   lxml.etree._FeedParser-class.html#feed_error_log
+lxml.etree.LxmlError    lxml.etree.LxmlError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.LxmlRegistryError    lxml.etree.LxmlRegistryError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.LxmlSyntaxError      lxml.etree.LxmlSyntaxError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.NamespaceRegistryError       lxml.etree.NamespaceRegistryError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.PIBase       lxml.etree.PIBase-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text    lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._ProcessingInstruction.tag   lxml.etree._ProcessingInstruction-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree.PIBase.__new__       lxml.etree.PIBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.PIBase.__init__      lxml.etree.PIBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._ProcessingInstruction.target        lxml.etree._ProcessingInstruction-class.html#target
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._ProcessingInstruction.__repr__      lxml.etree._ProcessingInstruction-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree.ParseError   lxml.etree.ParseError-class.html
+lxml.etree.ParseError.__init__  lxml.etree.ParseError-class.html#__init__
+lxml.etree.ParserBasedElementClassLookup        lxml.etree.ParserBasedElementClassLookup-class.html
+lxml.etree.ParserBasedElementClassLookup.__new__        lxml.etree.ParserBasedElementClassLookup-class.html#__new__
+lxml.etree.FallbackElementClassLookup.fallback  lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback      lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.FallbackElementClassLookup.__init__  lxml.etree.FallbackElementClassLookup-class.html#__init__
+lxml.etree.ParserError  lxml.etree.ParserError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.PyErrorLog   lxml.etree.PyErrorLog-class.html
+lxml.etree.PyErrorLog.level_map lxml.etree.PyErrorLog-class.html#level_map
+lxml.etree.PyErrorLog.__new__   lxml.etree.PyErrorLog-class.html#__new__
+lxml.etree.PyErrorLog.receive   lxml.etree.PyErrorLog-class.html#receive
+lxml.etree._BaseErrorLog.last_error     lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._BaseErrorLog.__repr__       lxml.etree._BaseErrorLog-class.html#__repr__
+lxml.etree.PyErrorLog.copy      lxml.etree.PyErrorLog-class.html#copy
+lxml.etree.PyErrorLog.__init__  lxml.etree.PyErrorLog-class.html#__init__
+lxml.etree.PyErrorLog.log       lxml.etree.PyErrorLog-class.html#log
+lxml.etree.PythonElementClassLookup     lxml.etree.PythonElementClassLookup-class.html
+lxml.etree.PythonElementClassLookup.__new__     lxml.etree.PythonElementClassLookup-class.html#__new__
+lxml.etree.PythonElementClassLookup.lookup      lxml.etree.PythonElementClassLookup-class.html#lookup
+lxml.etree.FallbackElementClassLookup.fallback  lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback      lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.etree.FallbackElementClassLookup.__init__  lxml.etree.FallbackElementClassLookup-class.html#__init__
+lxml.etree.QName        lxml.etree.QName-class.html
+lxml.etree.QName.text   lxml.etree.QName-class.html#text
+lxml.etree.QName.__str__        lxml.etree.QName-class.html#__str__
+lxml.etree.QName.localname      lxml.etree.QName-class.html#localname
+lxml.etree.QName.__lt__ lxml.etree.QName-class.html#__lt__
+lxml.etree.QName.__init__       lxml.etree.QName-class.html#__init__
+lxml.etree.QName.__new__        lxml.etree.QName-class.html#__new__
+lxml.etree.QName.namespace      lxml.etree.QName-class.html#namespace
+lxml.etree.QName.__ne__ lxml.etree.QName-class.html#__ne__
+lxml.etree.QName.__gt__ lxml.etree.QName-class.html#__gt__
+lxml.etree.QName.__eq__ lxml.etree.QName-class.html#__eq__
+lxml.etree.QName.__le__ lxml.etree.QName-class.html#__le__
+lxml.etree.QName.__hash__       lxml.etree.QName-class.html#__hash__
+lxml.etree.QName.__ge__ lxml.etree.QName-class.html#__ge__
+lxml.etree.RelaxNG      lxml.etree.RelaxNG-class.html
+lxml.etree.RelaxNG.__new__      lxml.etree.RelaxNG-class.html#__new__
+lxml.etree._Validator._clear_error_log  lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid       lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message       lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log lxml.etree._Validator-class.html#error_log
+lxml.etree.RelaxNG.__call__     lxml.etree.RelaxNG-class.html#__call__
+lxml.etree._Validator.assert_   lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate  lxml.etree._Validator-class.html#validate
+lxml.etree.RelaxNG.__init__     lxml.etree.RelaxNG-class.html#__init__
+lxml.etree.RelaxNGError lxml.etree.RelaxNGError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.RelaxNGErrorTypes    lxml.etree.RelaxNGErrorTypes-class.html
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TEXTWRONG      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_TEXTWRONG
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRACONTENT   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_EXTRACONTENT
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPEVAL        lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_TYPEVAL
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NODEFINE       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NODEFINE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOTELEM        lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NOTELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALUE  lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_VALUE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPECMP        lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_TYPECMP
+lxml.etree.RelaxNGErrorTypes._getName   lxml.etree.RelaxNGErrorTypes-class.html#_getName
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTELEM       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LISTELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNAL       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INTERNAL
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATATYPE       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_DATATYPE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DATAELEM       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_DATAELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INVALIDATTR    lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INVALIDATTR
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNAME       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMNAME
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_DUPID  lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_DUPID
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNOTEMPTY   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMNOTEMPTY
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOELEM lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NOELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_TYPE   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_TYPE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_OK lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_OK
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMNONS       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMNONS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_CONTENTVALID   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_CONTENTVALID
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LIST   lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LIST
+lxml.etree.RelaxNGErrorTypes._names     lxml.etree.RelaxNGErrorTypes-class.html#_names
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_EXTRADATA      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_EXTRADATA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_MEMORY lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_MEMORY
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOSTATE        lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NOSTATE
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONG      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMWRONG
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEXTRA      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LISTEXTRA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNONS       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTRNONS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMWRONGNS    lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMWRONGNS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRNAME       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTRNAME
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_VALELEM        lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_VALELEM
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERNODATA    lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INTERNODATA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_NOGRAMMAR      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_NOGRAMMAR
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ELEMEXTRANS    lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ELEMEXTRANS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRWRONGNS    lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTRWRONGNS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTEREXTRA     lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INTEREXTRA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTREXTRANS    lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTREXTRANS
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LACKDATA       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LACKDATA
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_LISTEMPTY      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_LISTEMPTY
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_INTERSEQ       lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_INTERSEQ
+lxml.etree.RelaxNGErrorTypes.RELAXNG_ERR_ATTRVALID      lxml.etree.RelaxNGErrorTypes-class.html#RELAXNG_ERR_ATTRVALID
+lxml.etree.RelaxNGParseError    lxml.etree.RelaxNGParseError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.RelaxNGValidateError lxml.etree.RelaxNGValidateError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.Resolver     lxml.etree.Resolver-class.html
+lxml.etree.Resolver.resolve     lxml.etree.Resolver-class.html#resolve
+lxml.etree.Resolver.resolve_filename    lxml.etree.Resolver-class.html#resolve_filename
+lxml.etree.Resolver.__new__     lxml.etree.Resolver-class.html#__new__
+lxml.etree.Resolver.resolve_string      lxml.etree.Resolver-class.html#resolve_string
+lxml.etree.Resolver.resolve_file        lxml.etree.Resolver-class.html#resolve_file
+lxml.etree.Resolver.resolve_empty       lxml.etree.Resolver-class.html#resolve_empty
+lxml.etree.Schematron   lxml.etree.Schematron-class.html
+lxml.etree.Schematron.__new__   lxml.etree.Schematron-class.html#__new__
+lxml.etree._Validator._clear_error_log  lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid       lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message       lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log lxml.etree._Validator-class.html#error_log
+lxml.etree.Schematron.__call__  lxml.etree.Schematron-class.html#__call__
+lxml.etree._Validator.assert_   lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate  lxml.etree._Validator-class.html#validate
+lxml.etree.Schematron.__init__  lxml.etree.Schematron-class.html#__init__
+lxml.etree.SchematronError      lxml.etree.SchematronError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.SchematronParseError lxml.etree.SchematronParseError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.SchematronValidateError      lxml.etree.SchematronValidateError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.SerialisationError   lxml.etree.SerialisationError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.SiblingsIterator     lxml.etree.SiblingsIterator-class.html
+lxml.etree.SiblingsIterator.__new__     lxml.etree.SiblingsIterator-class.html#__new__
+lxml.etree._ElementIterator.__next__    lxml.etree._ElementIterator-class.html#__next__
+lxml.etree._ElementIterator.next        lxml.etree._ElementIterator-class.html#next
+lxml.etree._ElementIterator.__iter__    lxml.etree._ElementIterator-class.html#__iter__
+lxml.etree.TreeBuilder  lxml.etree.TreeBuilder-class.html
+lxml.etree.TreeBuilder.comment  lxml.etree.TreeBuilder-class.html#comment
+lxml.etree.TreeBuilder.end      lxml.etree.TreeBuilder-class.html#end
+lxml.etree.TreeBuilder.__new__  lxml.etree.TreeBuilder-class.html#__new__
+lxml.etree.TreeBuilder.start    lxml.etree.TreeBuilder-class.html#start
+lxml.etree.TreeBuilder.close    lxml.etree.TreeBuilder-class.html#close
+lxml.etree.TreeBuilder.pi       lxml.etree.TreeBuilder-class.html#pi
+lxml.etree.TreeBuilder.data     lxml.etree.TreeBuilder-class.html#data
+lxml.etree.TreeBuilder.__init__ lxml.etree.TreeBuilder-class.html#__init__
+lxml.etree.XInclude     lxml.etree.XInclude-class.html
+lxml.etree.XInclude.__new__     lxml.etree.XInclude-class.html#__new__
+lxml.etree.XInclude.error_log   lxml.etree.XInclude-class.html#error_log
+lxml.etree.XInclude.__call__    lxml.etree.XInclude-class.html#__call__
+lxml.etree.XInclude.__init__    lxml.etree.XInclude-class.html#__init__
+lxml.etree.XIncludeError        lxml.etree.XIncludeError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XMLParser    lxml.etree.XMLParser-class.html
+lxml.etree._FeedParser.feed     lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close    lxml.etree._FeedParser-class.html#close
+lxml.etree.XMLParser.__init__   lxml.etree.XMLParser-class.html#__init__
+lxml.etree.XMLParser.__new__    lxml.etree.XMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup    lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version  lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement      lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy     lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers        lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target   lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log        lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log   lxml.etree._FeedParser-class.html#feed_error_log
+lxml.etree.XMLSchema    lxml.etree.XMLSchema-class.html
+lxml.etree.XMLSchema.__new__    lxml.etree.XMLSchema-class.html#__new__
+lxml.etree._Validator._clear_error_log  lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid       lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message       lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log lxml.etree._Validator-class.html#error_log
+lxml.etree.XMLSchema.__call__   lxml.etree.XMLSchema-class.html#__call__
+lxml.etree._Validator.assert_   lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate  lxml.etree._Validator-class.html#validate
+lxml.etree.XMLSchema.__init__   lxml.etree.XMLSchema-class.html#__init__
+lxml.etree.XMLSchemaError       lxml.etree.XMLSchemaError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XMLSchemaParseError  lxml.etree.XMLSchemaParseError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XMLSchemaValidateError       lxml.etree.XMLSchemaValidateError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XMLSyntaxError       lxml.etree.XMLSyntaxError-class.html
+lxml.etree.ParseError.__init__  lxml.etree.ParseError-class.html#__init__
+lxml.etree.XPath        lxml.etree.XPath-class.html
+lxml.etree.XPath.__new__        lxml.etree.XPath-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log        lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree.XPath.__repr__       lxml.etree.XPath-class.html#__repr__
+lxml.etree.XPath.__call__       lxml.etree.XPath-class.html#__call__
+lxml.etree.XPath.path   lxml.etree.XPath-class.html#path
+lxml.etree.XPath.__init__       lxml.etree.XPath-class.html#__init__
+lxml.etree.XPathDocumentEvaluator       lxml.etree.XPathDocumentEvaluator-class.html
+lxml.etree.XPathElementEvaluator.register_namespace     lxml.etree.XPathElementEvaluator-class.html#register_namespace
+lxml.etree.XPathDocumentEvaluator.__new__       lxml.etree.XPathDocumentEvaluator-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log        lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree.XPathDocumentEvaluator.__call__      lxml.etree.XPathDocumentEvaluator-class.html#__call__
+lxml.etree.XPathElementEvaluator.register_namespaces    lxml.etree.XPathElementEvaluator-class.html#register_namespaces
+lxml.etree.XPathDocumentEvaluator.__init__      lxml.etree.XPathDocumentEvaluator-class.html#__init__
+lxml.etree.XPathElementEvaluator        lxml.etree.XPathElementEvaluator-class.html
+lxml.etree.XPathElementEvaluator.register_namespace     lxml.etree.XPathElementEvaluator-class.html#register_namespace
+lxml.etree.XPathElementEvaluator.__new__        lxml.etree.XPathElementEvaluator-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log        lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree.XPathElementEvaluator.__call__       lxml.etree.XPathElementEvaluator-class.html#__call__
+lxml.etree.XPathElementEvaluator.register_namespaces    lxml.etree.XPathElementEvaluator-class.html#register_namespaces
+lxml.etree.XPathElementEvaluator.__init__       lxml.etree.XPathElementEvaluator-class.html#__init__
+lxml.etree.XPathError   lxml.etree.XPathError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XPathEvalError       lxml.etree.XPathEvalError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XPathFunctionError   lxml.etree.XPathFunctionError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XPathResultError     lxml.etree.XPathResultError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XPathSyntaxError     lxml.etree.XPathSyntaxError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLT lxml.etree.XSLT-class.html
+lxml.etree.XSLT.__new__ lxml.etree.XSLT-class.html#__new__
+lxml.etree.XSLT.__deepcopy__    lxml.etree.XSLT-class.html#__deepcopy__
+lxml.etree.XSLT.strparam        lxml.etree.XSLT-class.html#strparam
+lxml.etree.XSLT.error_log       lxml.etree.XSLT-class.html#error_log
+lxml.etree.XSLT.tostring        lxml.etree.XSLT-class.html#tostring
+lxml.etree.XSLT.__call__        lxml.etree.XSLT-class.html#__call__
+lxml.etree.XSLT.apply   lxml.etree.XSLT-class.html#apply
+lxml.etree.XSLT.__copy__        lxml.etree.XSLT-class.html#__copy__
+lxml.etree.XSLT.__init__        lxml.etree.XSLT-class.html#__init__
+lxml.etree.XSLTAccessControl    lxml.etree.XSLTAccessControl-class.html
+lxml.etree.XSLTAccessControl.DENY_WRITE lxml.etree.XSLTAccessControl-class.html#DENY_WRITE
+lxml.etree.XSLTAccessControl.__new__    lxml.etree.XSLTAccessControl-class.html#__new__
+lxml.etree.XSLTAccessControl.__repr__   lxml.etree.XSLTAccessControl-class.html#__repr__
+lxml.etree.XSLTAccessControl.options    lxml.etree.XSLTAccessControl-class.html#options
+lxml.etree.XSLTAccessControl.DENY_ALL   lxml.etree.XSLTAccessControl-class.html#DENY_ALL
+lxml.etree.XSLTApplyError       lxml.etree.XSLTApplyError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLTError    lxml.etree.XSLTError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLTExtension        lxml.etree.XSLTExtension-class.html
+lxml.etree.XSLTExtension.execute        lxml.etree.XSLTExtension-class.html#execute
+lxml.etree.XSLTExtension.__new__        lxml.etree.XSLTExtension-class.html#__new__
+lxml.etree.XSLTExtension.apply_templates        lxml.etree.XSLTExtension-class.html#apply_templates
+lxml.etree.XSLTExtension.process_children       lxml.etree.XSLTExtension-class.html#process_children
+lxml.etree.XSLTExtensionError   lxml.etree.XSLTExtensionError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLTParseError       lxml.etree.XSLTParseError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree.XSLTSaveError        lxml.etree.XSLTSaveError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.etree._AppendOnlyElementProxy      lxml.etree._AppendOnlyElementProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious   lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent     lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline    lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._AppendOnlyElementProxy.text lxml.etree._AppendOnlyElementProxy-class.html#text
+lxml.etree._ReadOnlyProxy.__getitem__   lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.iterchildren  lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyElementProxy.prefix lxml.etree._ReadOnlyElementProxy-class.html#prefix
+lxml.etree._ReadOnlyProxy.tag   lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._AppendOnlyElementProxy.append       lxml.etree._AppendOnlyElementProxy-class.html#append
+lxml.etree._ReadOnlyProxy.getnext       lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._AppendOnlyElementProxy.__new__      lxml.etree._AppendOnlyElementProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren   lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail  lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__       lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._AppendOnlyElementProxy.extend       lxml.etree._AppendOnlyElementProxy-class.html#extend
+lxml.etree._ReadOnlyElementProxy.get    lxml.etree._ReadOnlyElementProxy-class.html#get
+lxml.etree._ReadOnlyElementProxy.keys   lxml.etree._ReadOnlyElementProxy-class.html#keys
+lxml.etree._ReadOnlyProxy.__deepcopy__  lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__      lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__   lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyElementProxy.items  lxml.etree._ReadOnlyElementProxy-class.html#items
+lxml.etree._ReadOnlyElementProxy.values lxml.etree._ReadOnlyElementProxy-class.html#values
+lxml.etree._ReadOnlyProxy.__repr__      lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyElementProxy.attrib lxml.etree._ReadOnlyElementProxy-class.html#attrib
+lxml.etree._ReadOnlyProxy.__copy__      lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._Attrib      lxml.etree._Attrib-class.html
+lxml.etree._Attrib.iteritems    lxml.etree._Attrib-class.html#iteritems
+lxml.etree._Attrib.pop  lxml.etree._Attrib-class.html#pop
+lxml.etree._Attrib.has_key      lxml.etree._Attrib-class.html#has_key
+lxml.etree._Attrib.__lt__       lxml.etree._Attrib-class.html#__lt__
+lxml.etree._Attrib.__new__      lxml.etree._Attrib-class.html#__new__
+lxml.etree._Attrib.__contains__ lxml.etree._Attrib-class.html#__contains__
+lxml.etree._Attrib.itervalues   lxml.etree._Attrib-class.html#itervalues
+lxml.etree._Attrib.__len__      lxml.etree._Attrib-class.html#__len__
+lxml.etree._Attrib.__ne__       lxml.etree._Attrib-class.html#__ne__
+lxml.etree._Attrib.__getitem__  lxml.etree._Attrib-class.html#__getitem__
+lxml.etree._Attrib.get  lxml.etree._Attrib-class.html#get
+lxml.etree._Attrib.keys lxml.etree._Attrib-class.html#keys
+lxml.etree._Attrib.update       lxml.etree._Attrib-class.html#update
+lxml.etree._Attrib.__iter__     lxml.etree._Attrib-class.html#__iter__
+lxml.etree._Attrib.__gt__       lxml.etree._Attrib-class.html#__gt__
+lxml.etree._Attrib.__eq__       lxml.etree._Attrib-class.html#__eq__
+lxml.etree._Attrib.iterkeys     lxml.etree._Attrib-class.html#iterkeys
+lxml.etree._Attrib.__delitem__  lxml.etree._Attrib-class.html#__delitem__
+lxml.etree._Attrib.__nonzero__  lxml.etree._Attrib-class.html#__nonzero__
+lxml.etree._Attrib.items        lxml.etree._Attrib-class.html#items
+lxml.etree._Attrib.clear        lxml.etree._Attrib-class.html#clear
+lxml.etree._Attrib.__setitem__  lxml.etree._Attrib-class.html#__setitem__
+lxml.etree._Attrib.__le__       lxml.etree._Attrib-class.html#__le__
+lxml.etree._Attrib.values       lxml.etree._Attrib-class.html#values
+lxml.etree._Attrib.__repr__     lxml.etree._Attrib-class.html#__repr__
+lxml.etree._Attrib.__ge__       lxml.etree._Attrib-class.html#__ge__
+lxml.etree._AttribIterator      lxml.etree._AttribIterator-class.html
+lxml.etree._AttribIterator.__new__      lxml.etree._AttribIterator-class.html#__new__
+lxml.etree._AttribIterator.__next__     lxml.etree._AttribIterator-class.html#__next__
+lxml.etree._AttribIterator.next lxml.etree._AttribIterator-class.html#next
+lxml.etree._AttribIterator.__iter__     lxml.etree._AttribIterator-class.html#__iter__
+lxml.etree._BaseContext lxml.etree._BaseContext-class.html
+lxml.etree._BaseContext.__new__ lxml.etree._BaseContext-class.html#__new__
+lxml.etree._BaseContext.eval_context    lxml.etree._BaseContext-class.html#eval_context
+lxml.etree._BaseContext.context_node    lxml.etree._BaseContext-class.html#context_node
+lxml.etree._BaseContext.__init__        lxml.etree._BaseContext-class.html#__init__
+lxml.etree._BaseErrorLog        lxml.etree._BaseErrorLog-class.html
+lxml.etree._BaseErrorLog.__new__        lxml.etree._BaseErrorLog-class.html#__new__
+lxml.etree._BaseErrorLog.last_error     lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._BaseErrorLog.__repr__       lxml.etree._BaseErrorLog-class.html#__repr__
+lxml.etree._BaseErrorLog.copy   lxml.etree._BaseErrorLog-class.html#copy
+lxml.etree._BaseErrorLog.__init__       lxml.etree._BaseErrorLog-class.html#__init__
+lxml.etree._BaseParser  lxml.etree._BaseParser-class.html
+lxml.etree._BaseParser.set_element_class_lookup lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._BaseParser.__init__ lxml.etree._BaseParser-class.html#__init__
+lxml.etree._BaseParser.__new__  lxml.etree._BaseParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup    lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version  lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement      lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy     lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers        lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target   lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log        lxml.etree._BaseParser-class.html#error_log
+lxml.etree._ClassNamespaceRegistry      lxml.etree._ClassNamespaceRegistry-class.html
+lxml.etree._ClassNamespaceRegistry.__new__      lxml.etree._ClassNamespaceRegistry-class.html#__new__
+lxml.etree._NamespaceRegistry.__getitem__       lxml.etree._NamespaceRegistry-class.html#__getitem__
+lxml.etree._NamespaceRegistry.update    lxml.etree._NamespaceRegistry-class.html#update
+lxml.etree._NamespaceRegistry.__iter__  lxml.etree._NamespaceRegistry-class.html#__iter__
+lxml.etree._NamespaceRegistry.iteritems lxml.etree._NamespaceRegistry-class.html#iteritems
+lxml.etree._ClassNamespaceRegistry.__delitem__  lxml.etree._ClassNamespaceRegistry-class.html#__delitem__
+lxml.etree._NamespaceRegistry.items     lxml.etree._NamespaceRegistry-class.html#items
+lxml.etree._NamespaceRegistry.clear     lxml.etree._NamespaceRegistry-class.html#clear
+lxml.etree._ClassNamespaceRegistry.__setitem__  lxml.etree._ClassNamespaceRegistry-class.html#__setitem__
+lxml.etree._ClassNamespaceRegistry.__repr__     lxml.etree._ClassNamespaceRegistry-class.html#__repr__
+lxml.etree._Comment     lxml.etree._Comment-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text    lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Comment.tag lxml.etree._Comment-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Comment.__new__     lxml.etree._Comment-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Comment.__repr__    lxml.etree._Comment-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Document    lxml.etree._Document-class.html
+lxml.etree._Document.__new__    lxml.etree._Document-class.html#__new__
+lxml.etree._DomainErrorLog      lxml.etree._DomainErrorLog-class.html
+lxml.etree._ListErrorLog.filter_domains lxml.etree._ListErrorLog-class.html#filter_domains
+lxml.etree._BaseErrorLog.last_error     lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._ListErrorLog.filter_from_warnings   lxml.etree._ListErrorLog-class.html#filter_from_warnings
+lxml.etree._DomainErrorLog.__init__     lxml.etree._DomainErrorLog-class.html#__init__
+lxml.etree._DomainErrorLog.__new__      lxml.etree._DomainErrorLog-class.html#__new__
+lxml.etree._ListErrorLog.__contains__   lxml.etree._ListErrorLog-class.html#__contains__
+lxml.etree._ListErrorLog.filter_from_level      lxml.etree._ListErrorLog-class.html#filter_from_level
+lxml.etree._ListErrorLog.__len__        lxml.etree._ListErrorLog-class.html#__len__
+lxml.etree._ListErrorLog.__getitem__    lxml.etree._ListErrorLog-class.html#__getitem__
+lxml.etree._ListErrorLog.filter_levels  lxml.etree._ListErrorLog-class.html#filter_levels
+lxml.etree._ErrorLog.__iter__   lxml.etree._ErrorLog-class.html#__iter__
+lxml.etree._ErrorLog.copy       lxml.etree._ErrorLog-class.html#copy
+lxml.etree._ListErrorLog.__nonzero__    lxml.etree._ListErrorLog-class.html#__nonzero__
+lxml.etree._ListErrorLog.filter_from_fatals     lxml.etree._ListErrorLog-class.html#filter_from_fatals
+lxml.etree._DomainErrorLog.receive      lxml.etree._DomainErrorLog-class.html#receive
+lxml.etree._ErrorLog.clear      lxml.etree._ErrorLog-class.html#clear
+lxml.etree._ListErrorLog.filter_from_errors     lxml.etree._ListErrorLog-class.html#filter_from_errors
+lxml.etree._ListErrorLog.filter_types   lxml.etree._ListErrorLog-class.html#filter_types
+lxml.etree._ListErrorLog.__repr__       lxml.etree._ListErrorLog-class.html#__repr__
+lxml.etree._Element     lxml.etree._Element-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.__new__     lxml.etree._Element-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._ElementIterator     lxml.etree._ElementIterator-class.html
+lxml.etree._ElementIterator.__new__     lxml.etree._ElementIterator-class.html#__new__
+lxml.etree._ElementIterator.__next__    lxml.etree._ElementIterator-class.html#__next__
+lxml.etree._ElementIterator.next        lxml.etree._ElementIterator-class.html#next
+lxml.etree._ElementIterator.__iter__    lxml.etree._ElementIterator-class.html#__iter__
+lxml.etree._ElementStringResult lxml.etree._ElementStringResult-class.html
+lxml.etree._ElementStringResult.getparent       lxml.etree._ElementStringResult-class.html#getparent
+lxml.etree._ElementTagMatcher   lxml.etree._ElementTagMatcher-class.html
+lxml.etree._ElementTagMatcher.__new__   lxml.etree._ElementTagMatcher-class.html#__new__
+lxml.etree._ElementTree lxml.etree._ElementTree-class.html
+lxml.etree._ElementTree.getroot lxml.etree._ElementTree-class.html#getroot
+lxml.etree._ElementTree.iterfind        lxml.etree._ElementTree-class.html#iterfind
+lxml.etree._ElementTree.parse   lxml.etree._ElementTree-class.html#parse
+lxml.etree._ElementTree.relaxng lxml.etree._ElementTree-class.html#relaxng
+lxml.etree._ElementTree.find    lxml.etree._ElementTree-class.html#find
+lxml.etree._ElementTree.__new__ lxml.etree._ElementTree-class.html#__new__
+lxml.etree._ElementTree.findtext        lxml.etree._ElementTree-class.html#findtext
+lxml.etree._ElementTree.findall lxml.etree._ElementTree-class.html#findall
+lxml.etree._ElementTree.write   lxml.etree._ElementTree-class.html#write
+lxml.etree._ElementTree._setroot        lxml.etree._ElementTree-class.html#_setroot
+lxml.etree._ElementTree.xpath   lxml.etree._ElementTree-class.html#xpath
+lxml.etree._ElementTree.parser  lxml.etree._ElementTree-class.html#parser
+lxml.etree._ElementTree.xslt    lxml.etree._ElementTree-class.html#xslt
+lxml.etree._ElementTree.__deepcopy__    lxml.etree._ElementTree-class.html#__deepcopy__
+lxml.etree._ElementTree.getpath lxml.etree._ElementTree-class.html#getpath
+lxml.etree._ElementTree.write_c14n      lxml.etree._ElementTree-class.html#write_c14n
+lxml.etree._ElementTree.xmlschema       lxml.etree._ElementTree-class.html#xmlschema
+lxml.etree._ElementTree.xinclude        lxml.etree._ElementTree-class.html#xinclude
+lxml.etree._ElementTree.docinfo lxml.etree._ElementTree-class.html#docinfo
+lxml.etree._ElementTree.getiterator     lxml.etree._ElementTree-class.html#getiterator
+lxml.etree._ElementTree.iter    lxml.etree._ElementTree-class.html#iter
+lxml.etree._ElementTree.__copy__        lxml.etree._ElementTree-class.html#__copy__
+lxml.etree._ElementUnicodeResult        lxml.etree._ElementUnicodeResult-class.html
+lxml.etree._ElementUnicodeResult.getparent      lxml.etree._ElementUnicodeResult-class.html#getparent
+lxml.etree._ElementUnicodeResult.is_attribute   lxml.etree._ElementUnicodeResult-class.html#is_attribute
+lxml.etree._ElementUnicodeResult.__new__        lxml.etree._ElementUnicodeResult-class.html#__new__
+lxml.etree._ElementUnicodeResult.is_text        lxml.etree._ElementUnicodeResult-class.html#is_text
+lxml.etree._ElementUnicodeResult.attrname       lxml.etree._ElementUnicodeResult-class.html#attrname
+lxml.etree._ElementUnicodeResult.is_tail        lxml.etree._ElementUnicodeResult-class.html#is_tail
+lxml.etree._Entity      lxml.etree._Entity-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Entity.text lxml.etree._Entity-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Entity.tag  lxml.etree._Entity-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Entity.__new__      lxml.etree._Entity-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Entity.name lxml.etree._Entity-class.html#name
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Entity.__repr__     lxml.etree._Entity-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._ErrorLog    lxml.etree._ErrorLog-class.html
+lxml.etree._ListErrorLog.filter_domains lxml.etree._ListErrorLog-class.html#filter_domains
+lxml.etree._BaseErrorLog.last_error     lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._ListErrorLog.filter_from_warnings   lxml.etree._ListErrorLog-class.html#filter_from_warnings
+lxml.etree._ErrorLog.__init__   lxml.etree._ErrorLog-class.html#__init__
+lxml.etree._ErrorLog.__new__    lxml.etree._ErrorLog-class.html#__new__
+lxml.etree._ListErrorLog.__contains__   lxml.etree._ListErrorLog-class.html#__contains__
+lxml.etree._ListErrorLog.filter_from_level      lxml.etree._ListErrorLog-class.html#filter_from_level
+lxml.etree._ListErrorLog.__len__        lxml.etree._ListErrorLog-class.html#__len__
+lxml.etree._ListErrorLog.__getitem__    lxml.etree._ListErrorLog-class.html#__getitem__
+lxml.etree._ListErrorLog.filter_levels  lxml.etree._ListErrorLog-class.html#filter_levels
+lxml.etree._ErrorLog.__iter__   lxml.etree._ErrorLog-class.html#__iter__
+lxml.etree._ErrorLog.copy       lxml.etree._ErrorLog-class.html#copy
+lxml.etree._ListErrorLog.__nonzero__    lxml.etree._ListErrorLog-class.html#__nonzero__
+lxml.etree._ListErrorLog.filter_from_fatals     lxml.etree._ListErrorLog-class.html#filter_from_fatals
+lxml.etree._ErrorLog.receive    lxml.etree._ErrorLog-class.html#receive
+lxml.etree._ErrorLog.clear      lxml.etree._ErrorLog-class.html#clear
+lxml.etree._ListErrorLog.filter_from_errors     lxml.etree._ListErrorLog-class.html#filter_from_errors
+lxml.etree._ListErrorLog.filter_types   lxml.etree._ListErrorLog-class.html#filter_types
+lxml.etree._ListErrorLog.__repr__       lxml.etree._ListErrorLog-class.html#__repr__
+lxml.etree._ExceptionContext    lxml.etree._ExceptionContext-class.html
+lxml.etree._ExceptionContext.__new__    lxml.etree._ExceptionContext-class.html#__new__
+lxml.etree._ExsltRegExp lxml.etree._ExsltRegExp-class.html
+lxml.etree._ExsltRegExp.__new__ lxml.etree._ExsltRegExp-class.html#__new__
+lxml.etree._ExsltRegExp.replace lxml.etree._ExsltRegExp-class.html#replace
+lxml.etree._ExsltRegExp.test    lxml.etree._ExsltRegExp-class.html#test
+lxml.etree._ExsltRegExp.match   lxml.etree._ExsltRegExp-class.html#match
+lxml.etree._FeedParser  lxml.etree._FeedParser-class.html
+lxml.etree._FeedParser.feed     lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close    lxml.etree._FeedParser-class.html#close
+lxml.etree._BaseParser.__init__ lxml.etree._BaseParser-class.html#__init__
+lxml.etree._FeedParser.__new__  lxml.etree._FeedParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup    lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version  lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement      lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy     lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers        lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target   lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log        lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log   lxml.etree._FeedParser-class.html#feed_error_log
+lxml.etree._FileReaderContext   lxml.etree._FileReaderContext-class.html
+lxml.etree._FileReaderContext.__new__   lxml.etree._FileReaderContext-class.html#__new__
+lxml.etree._FilelikeWriter      lxml.etree._FilelikeWriter-class.html
+lxml.etree._FilelikeWriter.__new__      lxml.etree._FilelikeWriter-class.html#__new__
+lxml.etree._FunctionNamespaceRegistry   lxml.etree._FunctionNamespaceRegistry-class.html
+lxml.etree._FunctionNamespaceRegistry.__new__   lxml.etree._FunctionNamespaceRegistry-class.html#__new__
+lxml.etree._NamespaceRegistry.__getitem__       lxml.etree._NamespaceRegistry-class.html#__getitem__
+lxml.etree._NamespaceRegistry.update    lxml.etree._NamespaceRegistry-class.html#update
+lxml.etree._NamespaceRegistry.__iter__  lxml.etree._NamespaceRegistry-class.html#__iter__
+lxml.etree._NamespaceRegistry.iteritems lxml.etree._NamespaceRegistry-class.html#iteritems
+lxml.etree._FunctionNamespaceRegistry.__delitem__       lxml.etree._FunctionNamespaceRegistry-class.html#__delitem__
+lxml.etree._NamespaceRegistry.items     lxml.etree._NamespaceRegistry-class.html#items
+lxml.etree._NamespaceRegistry.clear     lxml.etree._NamespaceRegistry-class.html#clear
+lxml.etree._FunctionNamespaceRegistry.__setitem__       lxml.etree._FunctionNamespaceRegistry-class.html#__setitem__
+lxml.etree._FunctionNamespaceRegistry.__repr__  lxml.etree._FunctionNamespaceRegistry-class.html#__repr__
+lxml.etree._IDDict      lxml.etree._IDDict-class.html
+lxml.etree._IDDict.has_key      lxml.etree._IDDict-class.html#has_key
+lxml.etree._IDDict.__new__      lxml.etree._IDDict-class.html#__new__
+lxml.etree._IDDict.__contains__ lxml.etree._IDDict-class.html#__contains__
+lxml.etree._IDDict.itervalues   lxml.etree._IDDict-class.html#itervalues
+lxml.etree._IDDict.__len__      lxml.etree._IDDict-class.html#__len__
+lxml.etree._IDDict.__getitem__  lxml.etree._IDDict-class.html#__getitem__
+lxml.etree._IDDict.get  lxml.etree._IDDict-class.html#get
+lxml.etree._IDDict.keys lxml.etree._IDDict-class.html#keys
+lxml.etree._IDDict.__iter__     lxml.etree._IDDict-class.html#__iter__
+lxml.etree._IDDict.iteritems    lxml.etree._IDDict-class.html#iteritems
+lxml.etree._IDDict.copy lxml.etree._IDDict-class.html#copy
+lxml.etree._IDDict.iterkeys     lxml.etree._IDDict-class.html#iterkeys
+lxml.etree._IDDict.items        lxml.etree._IDDict-class.html#items
+lxml.etree._IDDict.values       lxml.etree._IDDict-class.html#values
+lxml.etree._IDDict.__repr__     lxml.etree._IDDict-class.html#__repr__
+lxml.etree._InputDocument       lxml.etree._InputDocument-class.html
+lxml.etree._InputDocument.__new__       lxml.etree._InputDocument-class.html#__new__
+lxml.etree._IterparseContext    lxml.etree._IterparseContext-class.html
+lxml.etree._IterparseContext.__new__    lxml.etree._IterparseContext-class.html#__new__
+lxml.etree._ListErrorLog        lxml.etree._ListErrorLog-class.html
+lxml.etree._ListErrorLog.filter_domains lxml.etree._ListErrorLog-class.html#filter_domains
+lxml.etree._BaseErrorLog.last_error     lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._ListErrorLog.filter_from_warnings   lxml.etree._ListErrorLog-class.html#filter_from_warnings
+lxml.etree._ListErrorLog.__init__       lxml.etree._ListErrorLog-class.html#__init__
+lxml.etree._ListErrorLog.__new__        lxml.etree._ListErrorLog-class.html#__new__
+lxml.etree._ListErrorLog.__contains__   lxml.etree._ListErrorLog-class.html#__contains__
+lxml.etree._ListErrorLog.filter_from_level      lxml.etree._ListErrorLog-class.html#filter_from_level
+lxml.etree._ListErrorLog.__len__        lxml.etree._ListErrorLog-class.html#__len__
+lxml.etree._ListErrorLog.__getitem__    lxml.etree._ListErrorLog-class.html#__getitem__
+lxml.etree._ListErrorLog.filter_levels  lxml.etree._ListErrorLog-class.html#filter_levels
+lxml.etree._ListErrorLog.__iter__       lxml.etree._ListErrorLog-class.html#__iter__
+lxml.etree._ListErrorLog.copy   lxml.etree._ListErrorLog-class.html#copy
+lxml.etree._ListErrorLog.__nonzero__    lxml.etree._ListErrorLog-class.html#__nonzero__
+lxml.etree._ListErrorLog.filter_from_fatals     lxml.etree._ListErrorLog-class.html#filter_from_fatals
+lxml.etree._ListErrorLog.filter_from_errors     lxml.etree._ListErrorLog-class.html#filter_from_errors
+lxml.etree._ListErrorLog.filter_types   lxml.etree._ListErrorLog-class.html#filter_types
+lxml.etree._ListErrorLog.__repr__       lxml.etree._ListErrorLog-class.html#__repr__
+lxml.etree._LogEntry    lxml.etree._LogEntry-class.html
+lxml.etree._LogEntry.domain     lxml.etree._LogEntry-class.html#domain
+lxml.etree._LogEntry.message    lxml.etree._LogEntry-class.html#message
+lxml.etree._LogEntry.level_name lxml.etree._LogEntry-class.html#level_name
+lxml.etree._LogEntry.__new__    lxml.etree._LogEntry-class.html#__new__
+lxml.etree._LogEntry.type_name  lxml.etree._LogEntry-class.html#type_name
+lxml.etree._LogEntry.domain_name        lxml.etree._LogEntry-class.html#domain_name
+lxml.etree._LogEntry.filename   lxml.etree._LogEntry-class.html#filename
+lxml.etree._LogEntry.type       lxml.etree._LogEntry-class.html#type
+lxml.etree._LogEntry.line       lxml.etree._LogEntry-class.html#line
+lxml.etree._LogEntry.level      lxml.etree._LogEntry-class.html#level
+lxml.etree._LogEntry.column     lxml.etree._LogEntry-class.html#column
+lxml.etree._LogEntry.__repr__   lxml.etree._LogEntry-class.html#__repr__
+lxml.etree._ModifyContentOnlyEntityProxy        lxml.etree._ModifyContentOnlyEntityProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious   lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent     lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline    lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ModifyContentOnlyProxy.text lxml.etree._ModifyContentOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren  lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag   lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext       lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ModifyContentOnlyEntityProxy.__new__        lxml.etree._ModifyContentOnlyEntityProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren   lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail  lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__       lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__   lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__  lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__      lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__   lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ModifyContentOnlyEntityProxy.name   lxml.etree._ModifyContentOnlyEntityProxy-class.html#name
+lxml.etree._ReadOnlyProxy.__repr__      lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__      lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ModifyContentOnlyPIProxy    lxml.etree._ModifyContentOnlyPIProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious   lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent     lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline    lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ModifyContentOnlyProxy.text lxml.etree._ModifyContentOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren  lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag   lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext       lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ModifyContentOnlyPIProxy.__new__    lxml.etree._ModifyContentOnlyPIProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren   lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail  lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__       lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__   lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__  lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__      lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__   lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ModifyContentOnlyPIProxy.target     lxml.etree._ModifyContentOnlyPIProxy-class.html#target
+lxml.etree._ReadOnlyProxy.__repr__      lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__      lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ModifyContentOnlyProxy      lxml.etree._ModifyContentOnlyProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious   lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent     lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline    lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ModifyContentOnlyProxy.text lxml.etree._ModifyContentOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren  lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag   lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext       lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ModifyContentOnlyProxy.__new__      lxml.etree._ModifyContentOnlyProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren   lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail  lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__       lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__   lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__  lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__      lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__   lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyProxy.__repr__      lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__      lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._NamespaceRegistry   lxml.etree._NamespaceRegistry-class.html
+lxml.etree._NamespaceRegistry.__new__   lxml.etree._NamespaceRegistry-class.html#__new__
+lxml.etree._NamespaceRegistry.__getitem__       lxml.etree._NamespaceRegistry-class.html#__getitem__
+lxml.etree._NamespaceRegistry.update    lxml.etree._NamespaceRegistry-class.html#update
+lxml.etree._NamespaceRegistry.__iter__  lxml.etree._NamespaceRegistry-class.html#__iter__
+lxml.etree._NamespaceRegistry.iteritems lxml.etree._NamespaceRegistry-class.html#iteritems
+lxml.etree._NamespaceRegistry.__delitem__       lxml.etree._NamespaceRegistry-class.html#__delitem__
+lxml.etree._NamespaceRegistry.items     lxml.etree._NamespaceRegistry-class.html#items
+lxml.etree._NamespaceRegistry.clear     lxml.etree._NamespaceRegistry-class.html#clear
+lxml.etree._NamespaceRegistry.__setitem__       lxml.etree._NamespaceRegistry-class.html#__setitem__
+lxml.etree._OpaqueDocumentWrapper       lxml.etree._OpaqueDocumentWrapper-class.html
+lxml.etree._OpaqueDocumentWrapper.__new__       lxml.etree._OpaqueDocumentWrapper-class.html#__new__
+lxml.etree._OpaqueDocumentWrapper.extend        lxml.etree._OpaqueDocumentWrapper-class.html#extend
+lxml.etree._OpaqueDocumentWrapper.append        lxml.etree._OpaqueDocumentWrapper-class.html#append
+lxml.etree._OpaqueNodeWrapper.__init__  lxml.etree._OpaqueNodeWrapper-class.html#__init__
+lxml.etree._OpaqueNodeWrapper   lxml.etree._OpaqueNodeWrapper-class.html
+lxml.etree._OpaqueNodeWrapper.__new__   lxml.etree._OpaqueNodeWrapper-class.html#__new__
+lxml.etree._OpaqueNodeWrapper.__init__  lxml.etree._OpaqueNodeWrapper-class.html#__init__
+lxml.etree._ParserContext       lxml.etree._ParserContext-class.html
+lxml.etree._ParserContext.__new__       lxml.etree._ParserContext-class.html#__new__
+lxml.etree._ParserDictionaryContext     lxml.etree._ParserDictionaryContext-class.html
+lxml.etree._ParserDictionaryContext.__new__     lxml.etree._ParserDictionaryContext-class.html#__new__
+lxml.etree._ParserSchemaValidationContext       lxml.etree._ParserSchemaValidationContext-class.html
+lxml.etree._ParserSchemaValidationContext.__new__       lxml.etree._ParserSchemaValidationContext-class.html#__new__
+lxml.etree._ProcessingInstruction       lxml.etree._ProcessingInstruction-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text    lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._ProcessingInstruction.tag   lxml.etree._ProcessingInstruction-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._ProcessingInstruction.__new__       lxml.etree._ProcessingInstruction-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._ProcessingInstruction.target        lxml.etree._ProcessingInstruction-class.html#target
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._ProcessingInstruction.__repr__      lxml.etree._ProcessingInstruction-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._PythonSaxParserTarget       lxml.etree._PythonSaxParserTarget-class.html
+lxml.etree._PythonSaxParserTarget.__new__       lxml.etree._PythonSaxParserTarget-class.html#__new__
+lxml.etree._ReadOnlyElementProxy        lxml.etree._ReadOnlyElementProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious   lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent     lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline    lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ReadOnlyProxy.text  lxml.etree._ReadOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren  lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyElementProxy.prefix lxml.etree._ReadOnlyElementProxy-class.html#prefix
+lxml.etree._ReadOnlyProxy.tag   lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext       lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ReadOnlyElementProxy.__new__        lxml.etree._ReadOnlyElementProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren   lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail  lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__       lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__   lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyElementProxy.get    lxml.etree._ReadOnlyElementProxy-class.html#get
+lxml.etree._ReadOnlyElementProxy.keys   lxml.etree._ReadOnlyElementProxy-class.html#keys
+lxml.etree._ReadOnlyProxy.__deepcopy__  lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__      lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__   lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyElementProxy.items  lxml.etree._ReadOnlyElementProxy-class.html#items
+lxml.etree._ReadOnlyElementProxy.values lxml.etree._ReadOnlyElementProxy-class.html#values
+lxml.etree._ReadOnlyProxy.__repr__      lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyElementProxy.attrib lxml.etree._ReadOnlyElementProxy-class.html#attrib
+lxml.etree._ReadOnlyProxy.__copy__      lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ReadOnlyEntityProxy lxml.etree._ReadOnlyEntityProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious   lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent     lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline    lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ReadOnlyEntityProxy.text    lxml.etree._ReadOnlyEntityProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren  lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag   lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext       lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ReadOnlyEntityProxy.__new__ lxml.etree._ReadOnlyEntityProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren   lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail  lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__       lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__   lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__  lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__      lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__   lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyEntityProxy.name    lxml.etree._ReadOnlyEntityProxy-class.html#name
+lxml.etree._ReadOnlyProxy.__repr__      lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__      lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ReadOnlyPIProxy     lxml.etree._ReadOnlyPIProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious   lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent     lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline    lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ReadOnlyProxy.text  lxml.etree._ReadOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren  lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag   lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext       lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ReadOnlyPIProxy.__new__     lxml.etree._ReadOnlyPIProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.getchildren   lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.tail  lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.__len__       lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__   lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__  lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__      lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__   lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyPIProxy.target      lxml.etree._ReadOnlyPIProxy-class.html#target
+lxml.etree._ReadOnlyProxy.__repr__      lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__      lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ReadOnlyProxy       lxml.etree._ReadOnlyProxy-class.html
+lxml.etree._ReadOnlyProxy.getprevious   lxml.etree._ReadOnlyProxy-class.html#getprevious
+lxml.etree._ReadOnlyProxy.getparent     lxml.etree._ReadOnlyProxy-class.html#getparent
+lxml.etree._ReadOnlyProxy.sourceline    lxml.etree._ReadOnlyProxy-class.html#sourceline
+lxml.etree._ReadOnlyProxy.text  lxml.etree._ReadOnlyProxy-class.html#text
+lxml.etree._ReadOnlyProxy.iterchildren  lxml.etree._ReadOnlyProxy-class.html#iterchildren
+lxml.etree._ReadOnlyProxy.tag   lxml.etree._ReadOnlyProxy-class.html#tag
+lxml.etree._ReadOnlyProxy.getnext       lxml.etree._ReadOnlyProxy-class.html#getnext
+lxml.etree._ReadOnlyProxy.__new__       lxml.etree._ReadOnlyProxy-class.html#__new__
+lxml.etree._ReadOnlyProxy.tail  lxml.etree._ReadOnlyProxy-class.html#tail
+lxml.etree._ReadOnlyProxy.getchildren   lxml.etree._ReadOnlyProxy-class.html#getchildren
+lxml.etree._ReadOnlyProxy.__len__       lxml.etree._ReadOnlyProxy-class.html#__len__
+lxml.etree._ReadOnlyProxy.__getitem__   lxml.etree._ReadOnlyProxy-class.html#__getitem__
+lxml.etree._ReadOnlyProxy.__deepcopy__  lxml.etree._ReadOnlyProxy-class.html#__deepcopy__
+lxml.etree._ReadOnlyProxy.__iter__      lxml.etree._ReadOnlyProxy-class.html#__iter__
+lxml.etree._ReadOnlyProxy.__nonzero__   lxml.etree._ReadOnlyProxy-class.html#__nonzero__
+lxml.etree._ReadOnlyProxy.__repr__      lxml.etree._ReadOnlyProxy-class.html#__repr__
+lxml.etree._ReadOnlyProxy.__copy__      lxml.etree._ReadOnlyProxy-class.html#__copy__
+lxml.etree._ResolverContext     lxml.etree._ResolverContext-class.html
+lxml.etree._ResolverContext.__new__     lxml.etree._ResolverContext-class.html#__new__
+lxml.etree._ResolverRegistry    lxml.etree._ResolverRegistry-class.html
+lxml.etree._ResolverRegistry.resolve    lxml.etree._ResolverRegistry-class.html#resolve
+lxml.etree._ResolverRegistry.__new__    lxml.etree._ResolverRegistry-class.html#__new__
+lxml.etree._ResolverRegistry.remove     lxml.etree._ResolverRegistry-class.html#remove
+lxml.etree._ResolverRegistry.add        lxml.etree._ResolverRegistry-class.html#add
+lxml.etree._ResolverRegistry.__repr__   lxml.etree._ResolverRegistry-class.html#__repr__
+lxml.etree._ResolverRegistry.copy       lxml.etree._ResolverRegistry-class.html#copy
+lxml.etree._RotatingErrorLog    lxml.etree._RotatingErrorLog-class.html
+lxml.etree._ListErrorLog.filter_domains lxml.etree._ListErrorLog-class.html#filter_domains
+lxml.etree._BaseErrorLog.last_error     lxml.etree._BaseErrorLog-class.html#last_error
+lxml.etree._ListErrorLog.filter_from_warnings   lxml.etree._ListErrorLog-class.html#filter_from_warnings
+lxml.etree._RotatingErrorLog.__init__   lxml.etree._RotatingErrorLog-class.html#__init__
+lxml.etree._RotatingErrorLog.__new__    lxml.etree._RotatingErrorLog-class.html#__new__
+lxml.etree._ListErrorLog.__contains__   lxml.etree._ListErrorLog-class.html#__contains__
+lxml.etree._ListErrorLog.filter_from_level      lxml.etree._ListErrorLog-class.html#filter_from_level
+lxml.etree._ListErrorLog.__len__        lxml.etree._ListErrorLog-class.html#__len__
+lxml.etree._ListErrorLog.__getitem__    lxml.etree._ListErrorLog-class.html#__getitem__
+lxml.etree._ListErrorLog.filter_levels  lxml.etree._ListErrorLog-class.html#filter_levels
+lxml.etree._ErrorLog.__iter__   lxml.etree._ErrorLog-class.html#__iter__
+lxml.etree._ErrorLog.copy       lxml.etree._ErrorLog-class.html#copy
+lxml.etree._ListErrorLog.__nonzero__    lxml.etree._ListErrorLog-class.html#__nonzero__
+lxml.etree._ListErrorLog.filter_from_fatals     lxml.etree._ListErrorLog-class.html#filter_from_fatals
+lxml.etree._RotatingErrorLog.receive    lxml.etree._RotatingErrorLog-class.html#receive
+lxml.etree._ErrorLog.clear      lxml.etree._ErrorLog-class.html#clear
+lxml.etree._ListErrorLog.filter_from_errors     lxml.etree._ListErrorLog-class.html#filter_from_errors
+lxml.etree._ListErrorLog.filter_types   lxml.etree._ListErrorLog-class.html#filter_types
+lxml.etree._ListErrorLog.__repr__       lxml.etree._ListErrorLog-class.html#__repr__
+lxml.etree._SaxParserContext    lxml.etree._SaxParserContext-class.html
+lxml.etree._SaxParserContext.__new__    lxml.etree._SaxParserContext-class.html#__new__
+lxml.etree._SaxParserTarget     lxml.etree._SaxParserTarget-class.html
+lxml.etree._SaxParserTarget.__new__     lxml.etree._SaxParserTarget-class.html#__new__
+lxml.etree._TargetParserContext lxml.etree._TargetParserContext-class.html
+lxml.etree._TargetParserContext.__new__ lxml.etree._TargetParserContext-class.html#__new__
+lxml.etree._TargetParserResult  lxml.etree._TargetParserResult-class.html
+lxml.etree._TargetParserResult.__init__ lxml.etree._TargetParserResult-class.html#__init__
+lxml.etree._TempStore   lxml.etree._TempStore-class.html
+lxml.etree._TempStore.__new__   lxml.etree._TempStore-class.html#__new__
+lxml.etree._TempStore.__init__  lxml.etree._TempStore-class.html#__init__
+lxml.etree._Validator   lxml.etree._Validator-class.html
+lxml.etree._Validator.__new__   lxml.etree._Validator-class.html#__new__
+lxml.etree._Validator._clear_error_log  lxml.etree._Validator-class.html#_clear_error_log
+lxml.etree._Validator.assertValid       lxml.etree._Validator-class.html#assertValid
+lxml.etree._Validator._append_log_message       lxml.etree._Validator-class.html#_append_log_message
+lxml.etree._Validator.error_log lxml.etree._Validator-class.html#error_log
+lxml.etree._Validator.assert_   lxml.etree._Validator-class.html#assert_
+lxml.etree._Validator.validate  lxml.etree._Validator-class.html#validate
+lxml.etree._XPathContext        lxml.etree._XPathContext-class.html
+lxml.etree._XPathContext.__new__        lxml.etree._XPathContext-class.html#__new__
+lxml.etree._BaseContext.eval_context    lxml.etree._BaseContext-class.html#eval_context
+lxml.etree._BaseContext.context_node    lxml.etree._BaseContext-class.html#context_node
+lxml.etree._XPathContext.__init__       lxml.etree._XPathContext-class.html#__init__
+lxml.etree._XPathEvaluatorBase  lxml.etree._XPathEvaluatorBase-class.html
+lxml.etree._XPathEvaluatorBase.__new__  lxml.etree._XPathEvaluatorBase-class.html#__new__
+lxml.etree._XPathEvaluatorBase.evaluate lxml.etree._XPathEvaluatorBase-class.html#evaluate
+lxml.etree._XPathEvaluatorBase.error_log        lxml.etree._XPathEvaluatorBase-class.html#error_log
+lxml.etree._XPathEvaluatorBase.__init__ lxml.etree._XPathEvaluatorBase-class.html#__init__
+lxml.etree._XPathFunctionNamespaceRegistry      lxml.etree._XPathFunctionNamespaceRegistry-class.html
+lxml.etree._XPathFunctionNamespaceRegistry.prefix       lxml.etree._XPathFunctionNamespaceRegistry-class.html#prefix
+lxml.etree._XPathFunctionNamespaceRegistry.__new__      lxml.etree._XPathFunctionNamespaceRegistry-class.html#__new__
+lxml.etree._NamespaceRegistry.__getitem__       lxml.etree._NamespaceRegistry-class.html#__getitem__
+lxml.etree._NamespaceRegistry.update    lxml.etree._NamespaceRegistry-class.html#update
+lxml.etree._NamespaceRegistry.__iter__  lxml.etree._NamespaceRegistry-class.html#__iter__
+lxml.etree._NamespaceRegistry.iteritems lxml.etree._NamespaceRegistry-class.html#iteritems
+lxml.etree._FunctionNamespaceRegistry.__delitem__       lxml.etree._FunctionNamespaceRegistry-class.html#__delitem__
+lxml.etree._NamespaceRegistry.items     lxml.etree._NamespaceRegistry-class.html#items
+lxml.etree._NamespaceRegistry.clear     lxml.etree._NamespaceRegistry-class.html#clear
+lxml.etree._FunctionNamespaceRegistry.__setitem__       lxml.etree._FunctionNamespaceRegistry-class.html#__setitem__
+lxml.etree._FunctionNamespaceRegistry.__repr__  lxml.etree._FunctionNamespaceRegistry-class.html#__repr__
+lxml.etree._XSLTContext lxml.etree._XSLTContext-class.html
+lxml.etree._XSLTContext.__new__ lxml.etree._XSLTContext-class.html#__new__
+lxml.etree._BaseContext.eval_context    lxml.etree._BaseContext-class.html#eval_context
+lxml.etree._BaseContext.context_node    lxml.etree._BaseContext-class.html#context_node
+lxml.etree._XSLTContext.__init__        lxml.etree._XSLTContext-class.html#__init__
+lxml.etree._XSLTProcessingInstruction   lxml.etree._XSLTProcessingInstruction-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._XSLTProcessingInstruction.set       lxml.etree._XSLTProcessingInstruction-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text    lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._ProcessingInstruction.tag   lxml.etree._ProcessingInstruction-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._XSLTProcessingInstruction.__new__   lxml.etree._XSLTProcessingInstruction-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.PIBase.__init__      lxml.etree.PIBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree._XSLTProcessingInstruction.get       lxml.etree._XSLTProcessingInstruction-class.html#get
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._ProcessingInstruction.target        lxml.etree._ProcessingInstruction-class.html#target
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._ProcessingInstruction.__repr__      lxml.etree._ProcessingInstruction-class.html#__repr__
+lxml.etree._XSLTProcessingInstruction.parseXSL  lxml.etree._XSLTProcessingInstruction-class.html#parseXSL
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._XSLTQuotedStringParam       lxml.etree._XSLTQuotedStringParam-class.html
+lxml.etree._XSLTQuotedStringParam.__new__       lxml.etree._XSLTQuotedStringParam-class.html#__new__
+lxml.etree._XSLTResolverContext lxml.etree._XSLTResolverContext-class.html
+lxml.etree._XSLTResolverContext.__new__ lxml.etree._XSLTResolverContext-class.html#__new__
+lxml.etree._XSLTResultTree      lxml.etree._XSLTResultTree-class.html
+lxml.etree._ElementTree.getroot lxml.etree._ElementTree-class.html#getroot
+lxml.etree._XSLTResultTree.__str__      lxml.etree._XSLTResultTree-class.html#__str__
+lxml.etree._ElementTree.parser  lxml.etree._ElementTree-class.html#parser
+lxml.etree._ElementTree.parse   lxml.etree._ElementTree-class.html#parse
+lxml.etree._ElementTree.relaxng lxml.etree._ElementTree-class.html#relaxng
+lxml.etree._ElementTree.findall lxml.etree._ElementTree-class.html#findall
+lxml.etree._XSLTResultTree.__new__      lxml.etree._XSLTResultTree-class.html#__new__
+lxml.etree._ElementTree.findtext        lxml.etree._ElementTree-class.html#findtext
+lxml.etree._ElementTree.find    lxml.etree._ElementTree-class.html#find
+lxml.etree._ElementTree.write   lxml.etree._ElementTree-class.html#write
+lxml.etree._ElementTree._setroot        lxml.etree._ElementTree-class.html#_setroot
+lxml.etree._ElementTree.xpath   lxml.etree._ElementTree-class.html#xpath
+lxml.etree._ElementTree.iterfind        lxml.etree._ElementTree-class.html#iterfind
+lxml.etree._ElementTree.xslt    lxml.etree._ElementTree-class.html#xslt
+lxml.etree._ElementTree.__deepcopy__    lxml.etree._ElementTree-class.html#__deepcopy__
+lxml.etree._ElementTree.getpath lxml.etree._ElementTree-class.html#getpath
+lxml.etree._ElementTree.write_c14n      lxml.etree._ElementTree-class.html#write_c14n
+lxml.etree._ElementTree.xmlschema       lxml.etree._ElementTree-class.html#xmlschema
+lxml.etree._ElementTree.xinclude        lxml.etree._ElementTree-class.html#xinclude
+lxml.etree._ElementTree.docinfo lxml.etree._ElementTree-class.html#docinfo
+lxml.etree._XSLTResultTree.__unicode__  lxml.etree._XSLTResultTree-class.html#__unicode__
+lxml.etree._XSLTResultTree.xslt_profile lxml.etree._XSLTResultTree-class.html#xslt_profile
+lxml.etree._ElementTree.iter    lxml.etree._ElementTree-class.html#iter
+lxml.etree._ElementTree.getiterator     lxml.etree._ElementTree-class.html#getiterator
+lxml.etree._ElementTree.__copy__        lxml.etree._ElementTree-class.html#__copy__
+lxml.etree.__ContentOnlyElement lxml.etree.__ContentOnlyElement-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text    lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree.__ContentOnlyElement.__new__ lxml.etree.__ContentOnlyElement-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree.iterparse    lxml.etree.iterparse-class.html
+lxml.etree._BaseParser.set_element_class_lookup lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree.iterparse.__init__   lxml.etree.iterparse-class.html#__init__
+lxml.etree.iterparse.__new__    lxml.etree.iterparse-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup    lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree.iterparse.next       lxml.etree.iterparse-class.html#next
+lxml.etree._BaseParser.version  lxml.etree._BaseParser-class.html#version
+lxml.etree.iterparse.__next__   lxml.etree.iterparse-class.html#__next__
+lxml.etree._BaseParser.makeelement      lxml.etree._BaseParser-class.html#makeelement
+lxml.etree.iterparse.__iter__   lxml.etree.iterparse-class.html#__iter__
+lxml.etree.iterparse.copy       lxml.etree.iterparse-class.html#copy
+lxml.etree._BaseParser.resolvers        lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target   lxml.etree._BaseParser-class.html#target
+lxml.etree.iterparse.error_log  lxml.etree.iterparse-class.html#error_log
+lxml.etree.iterparse.root       lxml.etree.iterparse-class.html#root
+lxml.etree.iterwalk     lxml.etree.iterwalk-class.html
+lxml.etree.iterwalk.__new__     lxml.etree.iterwalk-class.html#__new__
+lxml.etree.iterwalk.__next__    lxml.etree.iterwalk-class.html#__next__
+lxml.etree.iterwalk.next        lxml.etree.iterwalk-class.html#next
+lxml.etree.iterwalk.__iter__    lxml.etree.iterwalk-class.html#__iter__
+lxml.etree.iterwalk.__init__    lxml.etree.iterwalk-class.html#__init__
+lxml.html.CheckboxGroup lxml.html.CheckboxGroup-class.html
+lxml.html.CheckboxGroup._value__del     lxml.html.CheckboxGroup-class.html#_value__del
+lxml.html.CheckboxGroup.value   lxml.html.CheckboxGroup-class.html#value
+lxml.html.CheckboxGroup._value__set     lxml.html.CheckboxGroup-class.html#_value__set
+lxml.html.CheckboxGroup.__repr__        lxml.html.CheckboxGroup-class.html#__repr__
+lxml.html.CheckboxGroup._value__get     lxml.html.CheckboxGroup-class.html#_value__get
+lxml.html.CheckboxValues        lxml.html.CheckboxValues-class.html
+lxml.html.CheckboxValues.__init__       lxml.html.CheckboxValues-class.html#__init__
+lxml.html.CheckboxValues.add    lxml.html.CheckboxValues-class.html#add
+lxml.html.CheckboxValues.__iter__       lxml.html.CheckboxValues-class.html#__iter__
+lxml.html.CheckboxValues.remove lxml.html.CheckboxValues-class.html#remove
+lxml.html.CheckboxValues.__repr__       lxml.html.CheckboxValues-class.html#__repr__
+lxml.html.FieldsDict    lxml.html.FieldsDict-class.html
+lxml.html.FieldsDict.__init__   lxml.html.FieldsDict-class.html#__init__
+lxml.html.FieldsDict.__contains__       lxml.html.FieldsDict-class.html#__contains__
+lxml.html.FieldsDict.__getitem__        lxml.html.FieldsDict-class.html#__getitem__
+lxml.html.FieldsDict.keys       lxml.html.FieldsDict-class.html#keys
+lxml.html.FieldsDict.__delitem__        lxml.html.FieldsDict-class.html#__delitem__
+lxml.html.FieldsDict.__setitem__        lxml.html.FieldsDict-class.html#__setitem__
+lxml.html.FieldsDict.__repr__   lxml.html.FieldsDict-class.html#__repr__
+lxml.html.FormElement   lxml.html.FormElement-class.html
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.html.FormElement._fields__get      lxml.html.FormElement-class.html#_fields__get
+lxml.html.FormElement.form_values       lxml.html.FormElement-class.html#form_values
+lxml.html.FormElement._action__del      lxml.html.FormElement-class.html#_action__del
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.html.FormElement._fields__set      lxml.html.FormElement-class.html#_fields__set
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.html.FormElement._method__set      lxml.html.FormElement-class.html#_method__set
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.FormElement.fields    lxml.html.FormElement-class.html#fields
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.html.FormElement.method    lxml.html.FormElement-class.html#method
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.html.FormElement._action__get      lxml.html.FormElement-class.html#_action__get
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.html.FormElement._name     lxml.html.FormElement-class.html#_name
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.html.FormElement.action    lxml.html.FormElement-class.html#action
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.html.FormElement._method__get      lxml.html.FormElement-class.html#_method__get
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.html.FormElement._action__set      lxml.html.FormElement-class.html#_action__set
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.html.FormElement.inputs    lxml.html.FormElement-class.html#inputs
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.html.HTMLParser    lxml.html.HTMLParser-class.html
+lxml.etree._FeedParser.feed     lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close    lxml.etree._FeedParser-class.html#close
+lxml.html.HTMLParser.__init__   lxml.html.HTMLParser-class.html#__init__
+lxml.etree.HTMLParser.__new__   lxml.etree.HTMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup    lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version  lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement      lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy     lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers        lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target   lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log        lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log   lxml.etree._FeedParser-class.html#feed_error_log
+lxml.html.HtmlComment   lxml.html.HtmlComment-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text    lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Comment.tag lxml.etree._Comment-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.CommentBase.__new__  lxml.etree.CommentBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.CommentBase.__init__ lxml.etree.CommentBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Comment.__repr__    lxml.etree._Comment-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.html.HtmlElement   lxml.html.HtmlElement-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.html.HtmlElementClassLookup        lxml.html.HtmlElementClassLookup-class.html
+lxml.html.HtmlElementClassLookup._default_element_classes       lxml.html.HtmlElementClassLookup-class.html#_default_element_classes
+lxml.etree.CustomElementClassLookup.__new__     lxml.etree.CustomElementClassLookup-class.html#__new__
+lxml.html.HtmlElementClassLookup.lookup lxml.html.HtmlElementClassLookup-class.html#lookup
+lxml.etree.FallbackElementClassLookup.fallback  lxml.etree.FallbackElementClassLookup-class.html#fallback
+lxml.etree.FallbackElementClassLookup.set_fallback      lxml.etree.FallbackElementClassLookup-class.html#set_fallback
+lxml.html.HtmlElementClassLookup.__init__       lxml.html.HtmlElementClassLookup-class.html#__init__
+lxml.html.HtmlEntity    lxml.html.HtmlEntity-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Entity.text lxml.etree._Entity-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Entity.tag  lxml.etree._Entity-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.EntityBase.__new__   lxml.etree.EntityBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.EntityBase.__init__  lxml.etree.EntityBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Entity.name lxml.etree._Entity-class.html#name
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._Entity.__repr__     lxml.etree._Entity-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.html.HtmlMixin     lxml.html.HtmlMixin-class.html
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.html.HtmlProcessingInstruction     lxml.html.HtmlProcessingInstruction-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.etree.__ContentOnlyElement.set     lxml.etree.__ContentOnlyElement-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree.__ContentOnlyElement.text    lxml.etree.__ContentOnlyElement-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._ProcessingInstruction.tag   lxml.etree._ProcessingInstruction-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree.__ContentOnlyElement.append  lxml.etree.__ContentOnlyElement-class.html#append
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.PIBase.__new__       lxml.etree.PIBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.PIBase.__init__      lxml.etree.PIBase-class.html#__init__
+lxml.etree.__ContentOnlyElement.__delitem__     lxml.etree.__ContentOnlyElement-class.html#__delitem__
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.etree.__ContentOnlyElement.__len__ lxml.etree.__ContentOnlyElement-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.etree.__ContentOnlyElement.__getitem__     lxml.etree.__ContentOnlyElement-class.html#__getitem__
+lxml.etree.__ContentOnlyElement.get     lxml.etree.__ContentOnlyElement-class.html#get
+lxml.etree.__ContentOnlyElement.keys    lxml.etree.__ContentOnlyElement-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree.__ContentOnlyElement.__setitem__     lxml.etree.__ContentOnlyElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree.__ContentOnlyElement.insert  lxml.etree.__ContentOnlyElement-class.html#insert
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._ProcessingInstruction.target        lxml.etree._ProcessingInstruction-class.html#target
+lxml.etree.__ContentOnlyElement.items   lxml.etree.__ContentOnlyElement-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree.__ContentOnlyElement.values  lxml.etree.__ContentOnlyElement-class.html#values
+lxml.etree._ProcessingInstruction.__repr__      lxml.etree._ProcessingInstruction-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree.__ContentOnlyElement.attrib  lxml.etree.__ContentOnlyElement-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.html.InputElement  lxml.html.InputElement-class.html
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.html.InputMixin._name__del lxml.html.InputMixin-class.html#_name__del
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.html.InputMixin._name__set lxml.html.InputMixin-class.html#_name__set
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.InputMixin.name       lxml.html.InputMixin-class.html#name
+lxml.html.InputMixin._name__get lxml.html.InputMixin-class.html#_name__get
+lxml.html.InputElement._type__set       lxml.html.InputElement-class.html#_type__set
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.InputMixin.__repr__   lxml.html.InputMixin-class.html#__repr__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.html.InputElement.checked  lxml.html.InputElement-class.html#checked
+lxml.html.InputElement._type__get       lxml.html.InputElement-class.html#_type__get
+lxml.html.InputElement.type     lxml.html.InputElement-class.html#type
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.html.InputElement.checkable        lxml.html.InputElement-class.html#checkable
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.html.InputElement.value    lxml.html.InputElement-class.html#value
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.html.InputElement._value__del      lxml.html.InputElement-class.html#_value__del
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.html.InputElement._value__set      lxml.html.InputElement-class.html#_value__set
+lxml.html.InputElement._checked__set    lxml.html.InputElement-class.html#_checked__set
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.html.InputElement._value__get      lxml.html.InputElement-class.html#_value__get
+lxml.html.InputElement._checked__get    lxml.html.InputElement-class.html#_checked__get
+lxml.html.InputGetter   lxml.html.InputGetter-class.html
+lxml.html.InputGetter.__getitem__       lxml.html.InputGetter-class.html#__getitem__
+lxml.html.InputGetter.__contains__      lxml.html.InputGetter-class.html#__contains__
+lxml.html.InputGetter.keys      lxml.html.InputGetter-class.html#keys
+lxml.html.InputGetter.__iter__  lxml.html.InputGetter-class.html#__iter__
+lxml.html.InputGetter.__repr__  lxml.html.InputGetter-class.html#__repr__
+lxml.html.InputGetter._all_xpath        lxml.html.InputGetter-class.html#_all_xpath
+lxml.html.InputGetter.__init__  lxml.html.InputGetter-class.html#__init__
+lxml.html.InputGetter._name_xpath       lxml.html.InputGetter-class.html#_name_xpath
+lxml.html.InputMixin    lxml.html.InputMixin-class.html
+lxml.html.InputMixin.name       lxml.html.InputMixin-class.html#name
+lxml.html.InputMixin._name__get lxml.html.InputMixin-class.html#_name__get
+lxml.html.InputMixin._name__set lxml.html.InputMixin-class.html#_name__set
+lxml.html.InputMixin.__repr__   lxml.html.InputMixin-class.html#__repr__
+lxml.html.InputMixin._name__del lxml.html.InputMixin-class.html#_name__del
+lxml.html.LabelElement  lxml.html.LabelElement-class.html
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.html.LabelElement._for_element__get        lxml.html.LabelElement-class.html#_for_element__get
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.html.LabelElement.for_element      lxml.html.LabelElement-class.html#for_element
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.html.LabelElement._for_element__del        lxml.html.LabelElement-class.html#_for_element__del
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.html.LabelElement._for_element__set        lxml.html.LabelElement-class.html#_for_element__set
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.html.MultipleSelectOptions lxml.html.MultipleSelectOptions-class.html
+lxml.html.MultipleSelectOptions.__init__        lxml.html.MultipleSelectOptions-class.html#__init__
+lxml.html.MultipleSelectOptions.add     lxml.html.MultipleSelectOptions-class.html#add
+lxml.html.MultipleSelectOptions.__iter__        lxml.html.MultipleSelectOptions-class.html#__iter__
+lxml.html.MultipleSelectOptions.remove  lxml.html.MultipleSelectOptions-class.html#remove
+lxml.html.MultipleSelectOptions.__repr__        lxml.html.MultipleSelectOptions-class.html#__repr__
+lxml.html.MultipleSelectOptions.options lxml.html.MultipleSelectOptions-class.html#options
+lxml.html.RadioGroup    lxml.html.RadioGroup-class.html
+lxml.html.RadioGroup._value__del        lxml.html.RadioGroup-class.html#_value__del
+lxml.html.RadioGroup.value_options      lxml.html.RadioGroup-class.html#value_options
+lxml.html.RadioGroup._value__set        lxml.html.RadioGroup-class.html#_value__set
+lxml.html.RadioGroup.value      lxml.html.RadioGroup-class.html#value
+lxml.html.RadioGroup.__repr__   lxml.html.RadioGroup-class.html#__repr__
+lxml.html.RadioGroup._value__get        lxml.html.RadioGroup-class.html#_value__get
+lxml.html.SelectElement lxml.html.SelectElement-class.html
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.html.InputMixin._name__del lxml.html.InputMixin-class.html#_name__del
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.html.InputMixin._name__set lxml.html.InputMixin-class.html#_name__set
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.InputMixin.name       lxml.html.InputMixin-class.html#name
+lxml.html.InputMixin._name__get lxml.html.InputMixin-class.html#_name__get
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.InputMixin.__repr__   lxml.html.InputMixin-class.html#__repr__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.html.SelectElement._multiple__set  lxml.html.SelectElement-class.html#_multiple__set
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.html.SelectElement.value_options   lxml.html.SelectElement-class.html#value_options
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.html.SelectElement.value   lxml.html.SelectElement-class.html#value
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.html.SelectElement._value__del     lxml.html.SelectElement-class.html#_value__del
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.html.SelectElement.multiple        lxml.html.SelectElement-class.html#multiple
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.html.SelectElement._value__set     lxml.html.SelectElement-class.html#_value__set
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.html.SelectElement._multiple__get  lxml.html.SelectElement-class.html#_multiple__get
+lxml.html.SelectElement._value__get     lxml.html.SelectElement-class.html#_value__get
+lxml.html.TextareaElement       lxml.html.TextareaElement-class.html
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.html.InputMixin._name__del lxml.html.InputMixin-class.html#_name__del
+lxml.html.HtmlMixin.drop_tag    lxml.html.HtmlMixin-class.html#drop_tag
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.html.HtmlMixin.iterlinks   lxml.html.HtmlMixin-class.html#iterlinks
+lxml.html.HtmlMixin.base_url    lxml.html.HtmlMixin-class.html#base_url
+lxml.html.InputMixin._name__set lxml.html.InputMixin-class.html#_name__set
+lxml.html.HtmlMixin.forms       lxml.html.HtmlMixin-class.html#forms
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.html.HtmlMixin._label__get lxml.html.HtmlMixin-class.html#_label__get
+lxml.html.InputMixin.name       lxml.html.InputMixin-class.html#name
+lxml.html.InputMixin._name__get lxml.html.InputMixin-class.html#_name__get
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.html.HtmlMixin.find_rel_links      lxml.html.HtmlMixin-class.html#find_rel_links
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.html.HtmlMixin.label       lxml.html.HtmlMixin-class.html#label
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.html.HtmlMixin.resolve_base_href   lxml.html.HtmlMixin-class.html#resolve_base_href
+lxml.html.HtmlMixin.body        lxml.html.HtmlMixin-class.html#body
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.html.HtmlMixin.find_class  lxml.html.HtmlMixin-class.html#find_class
+lxml.html.HtmlMixin._label__del lxml.html.HtmlMixin-class.html#_label__del
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.html.HtmlMixin.cssselect   lxml.html.HtmlMixin-class.html#cssselect
+lxml.html.InputMixin.__repr__   lxml.html.InputMixin-class.html#__repr__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.html.HtmlMixin.drop_tree   lxml.html.HtmlMixin-class.html#drop_tree
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.html.HtmlMixin.text_content        lxml.html.HtmlMixin-class.html#text_content
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.html.HtmlMixin.rewrite_links       lxml.html.HtmlMixin-class.html#rewrite_links
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.html.HtmlMixin.head        lxml.html.HtmlMixin-class.html#head
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.html.TextareaElement.value lxml.html.TextareaElement-class.html#value
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.html.TextareaElement._value__del   lxml.html.TextareaElement-class.html#_value__del
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.html.HtmlMixin.make_links_absolute lxml.html.HtmlMixin-class.html#make_links_absolute
+lxml.html.HtmlMixin._label__set lxml.html.HtmlMixin-class.html#_label__set
+lxml.html.HtmlMixin.get_element_by_id   lxml.html.HtmlMixin-class.html#get_element_by_id
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.html.TextareaElement._value__set   lxml.html.TextareaElement-class.html#_value__set
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.html.TextareaElement._value__get   lxml.html.TextareaElement-class.html#_value__get
+lxml.html.XHTMLParser   lxml.html.XHTMLParser-class.html
+lxml.etree._FeedParser.feed     lxml.etree._FeedParser-class.html#feed
+lxml.etree._BaseParser.set_element_class_lookup lxml.etree._BaseParser-class.html#set_element_class_lookup
+lxml.etree._FeedParser.close    lxml.etree._FeedParser-class.html#close
+lxml.html.XHTMLParser.__init__  lxml.html.XHTMLParser-class.html#__init__
+lxml.etree.XMLParser.__new__    lxml.etree.XMLParser-class.html#__new__
+lxml.etree._BaseParser.setElementClassLookup    lxml.etree._BaseParser-class.html#setElementClassLookup
+lxml.etree._BaseParser.version  lxml.etree._BaseParser-class.html#version
+lxml.etree._BaseParser.makeelement      lxml.etree._BaseParser-class.html#makeelement
+lxml.etree._BaseParser.copy     lxml.etree._BaseParser-class.html#copy
+lxml.etree._BaseParser.resolvers        lxml.etree._BaseParser-class.html#resolvers
+lxml.etree._BaseParser.target   lxml.etree._BaseParser-class.html#target
+lxml.etree._BaseParser.error_log        lxml.etree._BaseParser-class.html#error_log
+lxml.etree._FeedParser.feed_error_log   lxml.etree._FeedParser-class.html#feed_error_log
+lxml.html._MethodFunc   lxml.html._MethodFunc-class.html
+lxml.html._MethodFunc.__call__  lxml.html._MethodFunc-class.html#__call__
+lxml.html._MethodFunc.__init__  lxml.html._MethodFunc-class.html#__init__
+lxml.html.clean.Cleaner lxml.html.clean.Cleaner-class.html
+lxml.html.clean.Cleaner.annoying_tags   lxml.html.clean.Cleaner-class.html#annoying_tags
+lxml.html.clean.Cleaner.links   lxml.html.clean.Cleaner-class.html#links
+lxml.html.clean.Cleaner.allow_embedded_url      lxml.html.clean.Cleaner-class.html#allow_embedded_url
+lxml.html.clean.Cleaner.remove_unknown_tags     lxml.html.clean.Cleaner-class.html#remove_unknown_tags
+lxml.html.clean.Cleaner.clean_html      lxml.html.clean.Cleaner-class.html#clean_html
+lxml.html.clean.Cleaner.meta    lxml.html.clean.Cleaner-class.html#meta
+lxml.html.clean.Cleaner.page_structure  lxml.html.clean.Cleaner-class.html#page_structure
+lxml.html.clean.Cleaner.frames  lxml.html.clean.Cleaner-class.html#frames
+lxml.html.clean.Cleaner.allow_follow    lxml.html.clean.Cleaner-class.html#allow_follow
+lxml.html.clean.Cleaner.__init__        lxml.html.clean.Cleaner-class.html#__init__
+lxml.html.clean.Cleaner.style   lxml.html.clean.Cleaner-class.html#style
+lxml.html.clean.Cleaner.allow_tags      lxml.html.clean.Cleaner-class.html#allow_tags
+lxml.html.clean.Cleaner._remove_javascript_link lxml.html.clean.Cleaner-class.html#_remove_javascript_link
+lxml.html.clean.Cleaner.comments        lxml.html.clean.Cleaner-class.html#comments
+lxml.html.clean.Cleaner.forms   lxml.html.clean.Cleaner-class.html#forms
+lxml.html.clean.Cleaner._substitute_comments    lxml.html.clean.Cleaner-class.html#_substitute_comments
+lxml.html.clean.Cleaner.kill_conditional_comments       lxml.html.clean.Cleaner-class.html#kill_conditional_comments
+lxml.html.clean.Cleaner.host_whitelist  lxml.html.clean.Cleaner-class.html#host_whitelist
+lxml.html.clean.Cleaner.whitelist_tags  lxml.html.clean.Cleaner-class.html#whitelist_tags
+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._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
+lxml.html.clean.Cleaner.add_nofollow    lxml.html.clean.Cleaner-class.html#add_nofollow
+lxml.html.clean.Cleaner.allow_element   lxml.html.clean.Cleaner-class.html#allow_element
+lxml.html.clean.Cleaner.scripts lxml.html.clean.Cleaner-class.html#scripts
+lxml.html.clean.Cleaner._tag_link_attrs lxml.html.clean.Cleaner-class.html#_tag_link_attrs
+lxml.html.clean.Cleaner.safe_attrs_only lxml.html.clean.Cleaner-class.html#safe_attrs_only
+lxml.html.clean.Cleaner.embedded        lxml.html.clean.Cleaner-class.html#embedded
+lxml.html.diff.DEL_END  lxml.html.diff.DEL_END-class.html
+lxml.html.diff.DEL_START        lxml.html.diff.DEL_START-class.html
+lxml.html.diff.InsensitiveSequenceMatcher       lxml.html.diff.InsensitiveSequenceMatcher-class.html
+lxml.html.diff.InsensitiveSequenceMatcher.get_matching_blocks   lxml.html.diff.InsensitiveSequenceMatcher-class.html#get_matching_blocks
+lxml.html.diff.InsensitiveSequenceMatcher.threshold     lxml.html.diff.InsensitiveSequenceMatcher-class.html#threshold
+lxml.html.diff.NoDeletes        lxml.html.diff.NoDeletes-class.html
+lxml.html.diff.href_token       lxml.html.diff.href_token-class.html
+lxml.html.diff.href_token.hide_when_equal       lxml.html.diff.href_token-class.html#hide_when_equal
+lxml.html.diff.token.__new__    lxml.html.diff.token-class.html#__new__
+lxml.html.diff.href_token.html  lxml.html.diff.href_token-class.html#html
+lxml.html.diff.token.__repr__   lxml.html.diff.token-class.html#__repr__
+lxml.html.diff.tag_token        lxml.html.diff.tag_token-class.html
+lxml.html.diff.token.hide_when_equal    lxml.html.diff.token-class.html#hide_when_equal
+lxml.html.diff.tag_token.__new__        lxml.html.diff.tag_token-class.html#__new__
+lxml.html.diff.tag_token.html   lxml.html.diff.tag_token-class.html#html
+lxml.html.diff.tag_token.__repr__       lxml.html.diff.tag_token-class.html#__repr__
+lxml.html.diff.token    lxml.html.diff.token-class.html
+lxml.html.diff.token.hide_when_equal    lxml.html.diff.token-class.html#hide_when_equal
+lxml.html.diff.token.__new__    lxml.html.diff.token-class.html#__new__
+lxml.html.diff.token.html       lxml.html.diff.token-class.html#html
+lxml.html.diff.token.__repr__   lxml.html.diff.token-class.html#__repr__
+lxml.html.formfill.DefaultErrorCreator  lxml.html.formfill.DefaultErrorCreator-class.html
+lxml.html.formfill.DefaultErrorCreator.error_container_tag      lxml.html.formfill.DefaultErrorCreator-class.html#error_container_tag
+lxml.html.formfill.DefaultErrorCreator.default_message  lxml.html.formfill.DefaultErrorCreator-class.html#default_message
+lxml.html.formfill.DefaultErrorCreator.insert_before    lxml.html.formfill.DefaultErrorCreator-class.html#insert_before
+lxml.html.formfill.DefaultErrorCreator.error_message_class      lxml.html.formfill.DefaultErrorCreator-class.html#error_message_class
+lxml.html.formfill.DefaultErrorCreator.__call__ lxml.html.formfill.DefaultErrorCreator-class.html#__call__
+lxml.html.formfill.DefaultErrorCreator.block_inside     lxml.html.formfill.DefaultErrorCreator-class.html#block_inside
+lxml.html.formfill.DefaultErrorCreator.error_block_class        lxml.html.formfill.DefaultErrorCreator-class.html#error_block_class
+lxml.html.formfill.DefaultErrorCreator.__init__ lxml.html.formfill.DefaultErrorCreator-class.html#__init__
+lxml.html.formfill.FormNotFound lxml.html.formfill.FormNotFound-class.html
+lxml.html.html5parser.HTMLParser        lxml.html.html5parser.HTMLParser-class.html
+lxml.html.html5parser.HTMLParser.__init__       lxml.html.html5parser.HTMLParser-class.html#__init__
+lxml.html.html5parser.XHTMLParser       lxml.html.html5parser.XHTMLParser-class.html
+lxml.html.html5parser.XHTMLParser.__init__      lxml.html.html5parser.XHTMLParser-class.html#__init__
+lxml.isoschematron.Schematron   lxml.isoschematron.Schematron-class.html
+lxml.isoschematron.Schematron._extract_rng      lxml.isoschematron.Schematron-class.html#_extract_rng
+lxml.etree._Validator._append_log_message       lxml.etree._Validator-class.html#_append_log_message
+lxml.isoschematron.Schematron.validation_report lxml.isoschematron.Schematron-class.html#validation_report
+lxml.isoschematron.Schematron.validator_xslt    lxml.isoschematron.Schematron-class.html#validator_xslt
+lxml.isoschematron.Schematron._expand   lxml.isoschematron.Schematron-class.html#_expand
+lxml.etree._Validator.assert_   lxml.etree._Validator-class.html#assert_
+lxml.isoschematron.Schematron.__init__  lxml.isoschematron.Schematron-class.html#__init__
+lxml.etree._Validator.__new__   lxml.etree._Validator-class.html#__new__
+lxml.etree._Validator._clear_error_log  lxml.etree._Validator-class.html#_clear_error_log
+lxml.isoschematron.Schematron._extract  lxml.isoschematron.Schematron-class.html#_extract
+lxml.isoschematron.Schematron.__call__  lxml.isoschematron.Schematron-class.html#__call__
+lxml.isoschematron.Schematron._compile  lxml.isoschematron.Schematron-class.html#_compile
+lxml.isoschematron.Schematron.schematron        lxml.isoschematron.Schematron-class.html#schematron
+lxml.isoschematron.Schematron._validation_errors        lxml.isoschematron.Schematron-class.html#_validation_errors
+lxml.isoschematron.Schematron._include  lxml.isoschematron.Schematron-class.html#_include
+lxml.etree._Validator.validate  lxml.etree._Validator-class.html#validate
+lxml.isoschematron.Schematron._level    lxml.isoschematron.Schematron-class.html#_level
+lxml.isoschematron.Schematron._domain   lxml.isoschematron.Schematron-class.html#_domain
+lxml.etree._Validator.assertValid       lxml.etree._Validator-class.html#assertValid
+lxml.isoschematron.Schematron._error_type       lxml.isoschematron.Schematron-class.html#_error_type
+lxml.etree._Validator.error_log lxml.etree._Validator-class.html#error_log
+lxml.isoschematron.Schematron._extract_xsd      lxml.isoschematron.Schematron-class.html#_extract_xsd
+lxml.objectify.BoolElement      lxml.objectify.BoolElement-class.html
+lxml.objectify.NumberElement.__int__    lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__    lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr       lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text  lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.BoolElement.__str__      lxml.objectify.BoolElement-class.html#__str__
+lxml.objectify.BoolElement._init        lxml.objectify.BoolElement-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__   lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__   lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.BoolElement.__lt__       lxml.objectify.BoolElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find  lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__ lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__   lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__    lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.BoolElement.__gt__       lxml.objectify.BoolElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__    lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__   lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__   lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.objectify.BoolElement.__nonzero__  lxml.objectify.BoolElement-class.html#__nonzero__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths       lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__   lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__        lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__   lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__   lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__   lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText  lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__   lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall       lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren   lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.BoolElement.__le__       lxml.objectify.BoolElement-class.html#__le__
+lxml.objectify.NumberElement.__float__  lxml.objectify.NumberElement-class.html#__float__
+lxml.objectify.BoolElement.__ne__       lxml.objectify.BoolElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext      lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__   lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__    lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__    lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__   lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__mul__    lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rlshift__        lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__   lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__    lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__complex__        lxml.objectify.NumberElement-class.html#__complex__
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__    lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__       lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__ lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__    lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__      lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__ lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.objectify.BoolElement.__eq__       lxml.objectify.BoolElement-class.html#__eq__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__    lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.objectify.BoolElement.__hash__     lxml.objectify.BoolElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__    lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.BoolElement.__ge__       lxml.objectify.BoolElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__       lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind      lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__      lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__   lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__        lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.BoolElement.__new__      lxml.objectify.BoolElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser    lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__    lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__rpow__   lxml.objectify.NumberElement-class.html#__rpow__
+lxml.objectify.BoolElement.pyval        lxml.objectify.BoolElement-class.html#pyval
+lxml.objectify.BoolElement.__repr__     lxml.objectify.BoolElement-class.html#__repr__
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__or__     lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.__add__    lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__    lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__    lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.ElementMaker     lxml.objectify.ElementMaker-class.html
+lxml.objectify.ElementMaker.__new__     lxml.objectify.ElementMaker-class.html#__new__
+lxml.objectify.ElementMaker.__getattribute__    lxml.objectify.ElementMaker-class.html#__getattribute__
+lxml.objectify.ElementMaker.__getattr__ lxml.objectify.ElementMaker-class.html#__getattr__
+lxml.objectify.ElementMaker.__init__    lxml.objectify.ElementMaker-class.html#__init__
+lxml.objectify.FloatElement     lxml.objectify.FloatElement-class.html
+lxml.objectify.NumberElement.__int__    lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__    lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr       lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text  lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NumberElement.__str__    lxml.objectify.NumberElement-class.html#__str__
+lxml.objectify.FloatElement._init       lxml.objectify.FloatElement-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__   lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__   lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.NumberElement.__lt__     lxml.objectify.NumberElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find  lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__ lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__   lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__    lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.NumberElement.__gt__     lxml.objectify.NumberElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__    lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__   lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__   lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.objectify.NumberElement.__nonzero__        lxml.objectify.NumberElement-class.html#__nonzero__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths       lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__   lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__        lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__   lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__   lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__   lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText  lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__   lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall       lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren   lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.NumberElement.__le__     lxml.objectify.NumberElement-class.html#__le__
+lxml.objectify.NumberElement.__complex__        lxml.objectify.NumberElement-class.html#__complex__
+lxml.objectify.NumberElement.__ne__     lxml.objectify.NumberElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext      lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__   lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__    lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__    lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__   lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__mul__    lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rlshift__        lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__   lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__    lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__float__  lxml.objectify.NumberElement-class.html#__float__
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__    lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__       lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__ lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__    lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__      lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__ lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NumberElement.__eq__     lxml.objectify.NumberElement-class.html#__eq__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__    lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.objectify.NumberElement.__hash__   lxml.objectify.NumberElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__    lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.NumberElement.__ge__     lxml.objectify.NumberElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__       lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind      lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__      lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__   lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__        lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.FloatElement.__new__     lxml.objectify.FloatElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser    lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__    lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__rpow__   lxml.objectify.NumberElement-class.html#__rpow__
+lxml.objectify.NumberElement.pyval      lxml.objectify.NumberElement-class.html#pyval
+lxml.objectify.NumberElement.__repr__   lxml.objectify.NumberElement-class.html#__repr__
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__or__     lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.__add__    lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__    lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__    lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.IntElement       lxml.objectify.IntElement-class.html
+lxml.objectify.NumberElement.__int__    lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__    lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr       lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text  lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NumberElement.__str__    lxml.objectify.NumberElement-class.html#__str__
+lxml.objectify.IntElement._init lxml.objectify.IntElement-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__   lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__   lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.NumberElement.__lt__     lxml.objectify.NumberElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find  lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__ lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__   lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__    lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.NumberElement.__gt__     lxml.objectify.NumberElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__    lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__   lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__   lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.objectify.NumberElement.__nonzero__        lxml.objectify.NumberElement-class.html#__nonzero__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths       lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__   lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__        lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__   lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__   lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__   lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText  lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__   lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall       lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren   lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.NumberElement.__le__     lxml.objectify.NumberElement-class.html#__le__
+lxml.objectify.NumberElement.__complex__        lxml.objectify.NumberElement-class.html#__complex__
+lxml.objectify.NumberElement.__ne__     lxml.objectify.NumberElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext      lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__   lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__    lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__    lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__   lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__mul__    lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rlshift__        lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__   lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__    lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__float__  lxml.objectify.NumberElement-class.html#__float__
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__    lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__       lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__ lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__    lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__      lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__ lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NumberElement.__eq__     lxml.objectify.NumberElement-class.html#__eq__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__    lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.objectify.NumberElement.__hash__   lxml.objectify.NumberElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__    lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.NumberElement.__ge__     lxml.objectify.NumberElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__       lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind      lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__      lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__   lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__        lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.IntElement.__new__       lxml.objectify.IntElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser    lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__    lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__rpow__   lxml.objectify.NumberElement-class.html#__rpow__
+lxml.objectify.NumberElement.pyval      lxml.objectify.NumberElement-class.html#pyval
+lxml.objectify.NumberElement.__repr__   lxml.objectify.NumberElement-class.html#__repr__
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__or__     lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.__add__    lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__    lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__    lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.LongElement      lxml.objectify.LongElement-class.html
+lxml.objectify.NumberElement.__int__    lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__    lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr       lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text  lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NumberElement.__str__    lxml.objectify.NumberElement-class.html#__str__
+lxml.objectify.LongElement._init        lxml.objectify.LongElement-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__   lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__   lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.NumberElement.__lt__     lxml.objectify.NumberElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find  lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__ lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__   lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__    lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.NumberElement.__gt__     lxml.objectify.NumberElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__    lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__   lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__   lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.objectify.NumberElement.__nonzero__        lxml.objectify.NumberElement-class.html#__nonzero__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths       lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__   lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__        lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__   lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__   lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__   lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText  lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__   lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall       lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren   lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.NumberElement.__le__     lxml.objectify.NumberElement-class.html#__le__
+lxml.objectify.NumberElement.__complex__        lxml.objectify.NumberElement-class.html#__complex__
+lxml.objectify.NumberElement.__ne__     lxml.objectify.NumberElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext      lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__   lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__    lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__    lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__   lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__mul__    lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rlshift__        lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__   lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__    lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__float__  lxml.objectify.NumberElement-class.html#__float__
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__    lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__       lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__ lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__    lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__      lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__ lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NumberElement.__eq__     lxml.objectify.NumberElement-class.html#__eq__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__    lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.objectify.NumberElement.__hash__   lxml.objectify.NumberElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__    lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.NumberElement.__ge__     lxml.objectify.NumberElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__       lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind      lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__      lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__   lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__        lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.LongElement.__new__      lxml.objectify.LongElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser    lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__    lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__rpow__   lxml.objectify.NumberElement-class.html#__rpow__
+lxml.objectify.NumberElement.pyval      lxml.objectify.NumberElement-class.html#pyval
+lxml.objectify.NumberElement.__repr__   lxml.objectify.NumberElement-class.html#__repr__
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__or__     lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.__add__    lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__    lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__    lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.NoneElement      lxml.objectify.NoneElement-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.objectify.ObjectifiedElement.addattr       lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text  lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NoneElement.__str__      lxml.objectify.NoneElement-class.html#__str__
+lxml.objectify.ObjectifiedElement.iterfind      lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__      lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.objectify.NoneElement.__lt__       lxml.objectify.NoneElement-class.html#__lt__
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.objectify.ObjectifiedElement.findall       lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.objectify.ObjectifiedElement.__setattr__   lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.objectify.NoneElement.__new__      lxml.objectify.NoneElement-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.objectify.ObjectifiedDataElement._setText  lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getattr__   lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.find  lxml.objectify.ObjectifiedElement-class.html#find
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.objectify.ObjectifiedElement.getchildren   lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.objectify.NoneElement.pyval        lxml.objectify.NoneElement-class.html#pyval
+lxml.objectify.ObjectifiedElement.__len__       lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.objectify.NoneElement.__ne__       lxml.objectify.NoneElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext      lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.objectify.ObjectifiedElement.__getitem__   lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.objectify.ObjectifiedElement.__reduce__    lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.objectify.ObjectifiedElement.__setitem__   lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.objectify.ObjectifiedElement.countchildren lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NoneElement.__gt__       lxml.objectify.NoneElement-class.html#__gt__
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NoneElement.__eq__       lxml.objectify.NoneElement-class.html#__eq__
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__delitem__   lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NoneElement.__nonzero__  lxml.objectify.NoneElement-class.html#__nonzero__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.objectify.ObjectifiedElement.__iter__      lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.__delattr__   lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NoneElement.__le__       lxml.objectify.NoneElement-class.html#__le__
+lxml.objectify.ObjectifiedElement.descendantpaths       lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NoneElement.__repr__     lxml.objectify.NoneElement-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.objectify.NoneElement.__hash__     lxml.objectify.NoneElement-class.html#__hash__
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.objectify.NoneElement.__ge__       lxml.objectify.NoneElement-class.html#__ge__
+lxml.objectify.NumberElement    lxml.objectify.NumberElement-class.html
+lxml.objectify.NumberElement.__int__    lxml.objectify.NumberElement-class.html#__int__
+lxml.objectify.NumberElement.__ror__    lxml.objectify.NumberElement-class.html#__ror__
+lxml.objectify.ObjectifiedElement.addattr       lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text  lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.NumberElement.__str__    lxml.objectify.NumberElement-class.html#__str__
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.objectify.NumberElement.__rdiv__   lxml.objectify.NumberElement-class.html#__rdiv__
+lxml.objectify.NumberElement.__rmul__   lxml.objectify.NumberElement-class.html#__rmul__
+lxml.objectify.NumberElement.__lt__     lxml.objectify.NumberElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.find  lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.NumberElement.__rshift__ lxml.objectify.NumberElement-class.html#__rshift__
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__   lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.NumberElement.__pow__    lxml.objectify.NumberElement-class.html#__pow__
+lxml.objectify.NumberElement.__gt__     lxml.objectify.NumberElement-class.html#__gt__
+lxml.objectify.NumberElement.__oct__    lxml.objectify.NumberElement-class.html#__oct__
+lxml.objectify.NumberElement.__rxor__   lxml.objectify.NumberElement-class.html#__rxor__
+lxml.objectify.ObjectifiedElement.__delitem__   lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.objectify.NumberElement.__nonzero__        lxml.objectify.NumberElement-class.html#__nonzero__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.descendantpaths       lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.NumberElement.__long__   lxml.objectify.NumberElement-class.html#__long__
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.objectify.NumberElement.__truediv__        lxml.objectify.NumberElement-class.html#__truediv__
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.objectify.NumberElement.__rmod__   lxml.objectify.NumberElement-class.html#__rmod__
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.objectify.NumberElement.__rand__   lxml.objectify.NumberElement-class.html#__rand__
+lxml.objectify.ObjectifiedElement.__setattr__   lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText  lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__   lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.findall       lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.objectify.ObjectifiedElement.getchildren   lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.NumberElement.__le__     lxml.objectify.NumberElement-class.html#__le__
+lxml.objectify.NumberElement.__complex__        lxml.objectify.NumberElement-class.html#__complex__
+lxml.objectify.NumberElement.__ne__     lxml.objectify.NumberElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext      lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__   lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.objectify.NumberElement.__hex__    lxml.objectify.NumberElement-class.html#__hex__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.objectify.NumberElement.__xor__    lxml.objectify.NumberElement-class.html#__xor__
+lxml.objectify.ObjectifiedElement.__delattr__   lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.NumberElement.__repr__   lxml.objectify.NumberElement-class.html#__repr__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.objectify.NumberElement.__rpow__   lxml.objectify.NumberElement-class.html#__rpow__
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.objectify.NumberElement.__rsub__   lxml.objectify.NumberElement-class.html#__rsub__
+lxml.objectify.NumberElement.__and__    lxml.objectify.NumberElement-class.html#__and__
+lxml.objectify.NumberElement.__float__  lxml.objectify.NumberElement-class.html#__float__
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.objectify.NumberElement.__abs__    lxml.objectify.NumberElement-class.html#__abs__
+lxml.objectify.ObjectifiedElement.__len__       lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.objectify.NumberElement.__invert__ lxml.objectify.NumberElement-class.html#__invert__
+lxml.objectify.ObjectifiedElement.__reduce__    lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__      lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.objectify.NumberElement.__lshift__ lxml.objectify.NumberElement-class.html#__lshift__
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.objectify.NumberElement.__eq__     lxml.objectify.NumberElement-class.html#__eq__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.objectify.NumberElement.__mod__    lxml.objectify.NumberElement-class.html#__mod__
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.objectify.NumberElement.__hash__   lxml.objectify.NumberElement-class.html#__hash__
+lxml.objectify.NumberElement.__sub__    lxml.objectify.NumberElement-class.html#__sub__
+lxml.objectify.NumberElement.__ge__     lxml.objectify.NumberElement-class.html#__ge__
+lxml.objectify.NumberElement.__rtruediv__       lxml.objectify.NumberElement-class.html#__rtruediv__
+lxml.objectify.ObjectifiedElement.iterfind      lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__      lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.NumberElement.__radd__   lxml.objectify.NumberElement-class.html#__radd__
+lxml.objectify.NumberElement.__rrshift__        lxml.objectify.NumberElement-class.html#__rrshift__
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.NumberElement.__new__    lxml.objectify.NumberElement-class.html#__new__
+lxml.objectify.NumberElement._setValueParser    lxml.objectify.NumberElement-class.html#_setValueParser
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.objectify.NumberElement.__pos__    lxml.objectify.NumberElement-class.html#__pos__
+lxml.objectify.NumberElement.__or__     lxml.objectify.NumberElement-class.html#__or__
+lxml.objectify.NumberElement.pyval      lxml.objectify.NumberElement-class.html#pyval
+lxml.objectify.NumberElement.__mul__    lxml.objectify.NumberElement-class.html#__mul__
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.objectify.NumberElement.__rlshift__        lxml.objectify.NumberElement-class.html#__rlshift__
+lxml.objectify.NumberElement.__add__    lxml.objectify.NumberElement-class.html#__add__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.objectify.NumberElement.__div__    lxml.objectify.NumberElement-class.html#__div__
+lxml.objectify.NumberElement.__neg__    lxml.objectify.NumberElement-class.html#__neg__
+lxml.objectify.ObjectPath       lxml.objectify.ObjectPath-class.html
+lxml.objectify.ObjectPath.addattr       lxml.objectify.ObjectPath-class.html#addattr
+lxml.objectify.ObjectPath.__new__       lxml.objectify.ObjectPath-class.html#__new__
+lxml.objectify.ObjectPath.setattr       lxml.objectify.ObjectPath-class.html#setattr
+lxml.objectify.ObjectPath.__str__       lxml.objectify.ObjectPath-class.html#__str__
+lxml.objectify.ObjectPath.hasattr       lxml.objectify.ObjectPath-class.html#hasattr
+lxml.objectify.ObjectPath.__call__      lxml.objectify.ObjectPath-class.html#__call__
+lxml.objectify.ObjectPath.find  lxml.objectify.ObjectPath-class.html#find
+lxml.objectify.ObjectPath.__init__      lxml.objectify.ObjectPath-class.html#__init__
+lxml.objectify.ObjectifiedDataElement   lxml.objectify.ObjectifiedDataElement-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.objectify.ObjectifiedElement.addattr       lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.findtext      lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.objectify.ObjectifiedDataElement.__str__   lxml.objectify.ObjectifiedDataElement-class.html#__str__
+lxml.objectify.ObjectifiedElement.iterfind      lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__      lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.objectify.ObjectifiedElement.findall       lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.objectify.ObjectifiedElement.__setattr__   lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.objectify.ObjectifiedDataElement.__new__   lxml.objectify.ObjectifiedDataElement-class.html#__new__
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.objectify.ObjectifiedDataElement._setText  lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getattr__   lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.find  lxml.objectify.ObjectifiedElement-class.html#find
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.objectify.ObjectifiedElement.getchildren   lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.objectify.ObjectifiedElement.text  lxml.objectify.ObjectifiedElement-class.html#text
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.objectify.ObjectifiedDataElement.pyval     lxml.objectify.ObjectifiedDataElement-class.html#pyval
+lxml.objectify.ObjectifiedElement.__len__       lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.objectify.ObjectifiedElement.__getitem__   lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.objectify.ObjectifiedElement.__reduce__    lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.objectify.ObjectifiedElement.__setitem__   lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.objectify.ObjectifiedElement.countchildren lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__delitem__   lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.objectify.ObjectifiedElement.__iter__      lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.__delattr__   lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.objectify.ObjectifiedElement.descendantpaths       lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.ObjectifiedDataElement.__repr__  lxml.objectify.ObjectifiedDataElement-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.objectify.ObjectifiedElement       lxml.objectify.ObjectifiedElement-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.objectify.ObjectifiedElement.addattr       lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text  lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.ObjectifiedElement.__str__       lxml.objectify.ObjectifiedElement-class.html#__str__
+lxml.objectify.ObjectifiedElement.iterfind      lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__      lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.objectify.ObjectifiedElement.findall       lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.objectify.ObjectifiedElement.__setattr__   lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.objectify.ObjectifiedElement.__new__       lxml.objectify.ObjectifiedElement-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.objectify.ObjectifiedElement.findtext      lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getattr__   lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.find  lxml.objectify.ObjectifiedElement-class.html#find
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.objectify.ObjectifiedElement.getchildren   lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.objectify.ObjectifiedElement.__len__       lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.objectify.ObjectifiedElement.__getitem__   lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.objectify.ObjectifiedElement.__reduce__    lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.objectify.ObjectifiedElement.__setitem__   lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.objectify.ObjectifiedElement.countchildren lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__delitem__   lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.objectify.ObjectifiedElement.__iter__      lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.objectify.ObjectifiedElement.__delattr__   lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.objectify.ObjectifiedElement.descendantpaths       lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.objectify.ObjectifyElementClassLookup      lxml.objectify.ObjectifyElementClassLookup-class.html
+lxml.objectify.ObjectifyElementClassLookup.__new__      lxml.objectify.ObjectifyElementClassLookup-class.html#__new__
+lxml.objectify.ObjectifyElementClassLookup.__init__     lxml.objectify.ObjectifyElementClassLookup-class.html#__init__
+lxml.objectify.PyType   lxml.objectify.PyType-class.html
+lxml.objectify.PyType.stringify lxml.objectify.PyType-class.html#stringify
+lxml.objectify.PyType.__new__   lxml.objectify.PyType-class.html#__new__
+lxml.objectify.PyType.xmlSchemaTypes    lxml.objectify.PyType-class.html#xmlSchemaTypes
+lxml.objectify.PyType.unregister        lxml.objectify.PyType-class.html#unregister
+lxml.objectify.PyType.register  lxml.objectify.PyType-class.html#register
+lxml.objectify.PyType.__repr__  lxml.objectify.PyType-class.html#__repr__
+lxml.objectify.PyType.type_check        lxml.objectify.PyType-class.html#type_check
+lxml.objectify.PyType.__init__  lxml.objectify.PyType-class.html#__init__
+lxml.objectify.PyType.name      lxml.objectify.PyType-class.html#name
+lxml.objectify.StringElement    lxml.objectify.StringElement-class.html
+lxml.objectify.StringElement.__int__    lxml.objectify.StringElement-class.html#__int__
+lxml.objectify.ObjectifiedElement.addattr       lxml.objectify.ObjectifiedElement-class.html#addattr
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.objectify.ObjectifiedElement.text  lxml.objectify.ObjectifiedElement-class.html#text
+lxml.objectify.ObjectifiedDataElement.__str__   lxml.objectify.ObjectifiedDataElement-class.html#__str__
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.objectify.StringElement.__rmul__   lxml.objectify.StringElement-class.html#__rmul__
+lxml.objectify.StringElement.__lt__     lxml.objectify.StringElement-class.html#__lt__
+lxml.objectify.ObjectifiedElement.findall       lxml.objectify.ObjectifiedElement-class.html#findall
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.objectify.ObjectifiedElement.__getitem__   lxml.objectify.ObjectifiedElement-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.objectify.StringElement.__gt__     lxml.objectify.StringElement-class.html#__gt__
+lxml.objectify.ObjectifiedElement.__delitem__   lxml.objectify.ObjectifiedElement-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.objectify.StringElement.__nonzero__        lxml.objectify.StringElement-class.html#__nonzero__
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.objectify.ObjectifiedElement.descendantpaths       lxml.objectify.ObjectifiedElement-class.html#descendantpaths
+lxml.objectify.StringElement.__long__   lxml.objectify.StringElement-class.html#__long__
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.objectify.StringElement.__rmod__   lxml.objectify.StringElement-class.html#__rmod__
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.objectify.ObjectifiedElement.__setattr__   lxml.objectify.ObjectifiedElement-class.html#__setattr__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.objectify.ObjectifiedDataElement._setText  lxml.objectify.ObjectifiedDataElement-class.html#_setText
+lxml.objectify.ObjectifiedElement.__getattr__   lxml.objectify.ObjectifiedElement-class.html#__getattr__
+lxml.objectify.ObjectifiedElement.find  lxml.objectify.ObjectifiedElement-class.html#find
+lxml.objectify.ObjectifiedElement.getchildren   lxml.objectify.ObjectifiedElement-class.html#getchildren
+lxml.objectify.StringElement.__float__  lxml.objectify.StringElement-class.html#__float__
+lxml.objectify.StringElement.__ne__     lxml.objectify.StringElement-class.html#__ne__
+lxml.objectify.ObjectifiedElement.findtext      lxml.objectify.ObjectifiedElement-class.html#findtext
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.objectify.ObjectifiedElement.__setitem__   lxml.objectify.ObjectifiedElement-class.html#__setitem__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.objectify.ObjectifiedElement.__delattr__   lxml.objectify.ObjectifiedElement-class.html#__delattr__
+lxml.objectify.StringElement.__mul__    lxml.objectify.StringElement-class.html#__mul__
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.objectify.StringElement.__complex__        lxml.objectify.StringElement-class.html#__complex__
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.objectify.ObjectifiedElement.__len__       lxml.objectify.ObjectifiedElement-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.objectify.ObjectifiedElement.__reduce__    lxml.objectify.ObjectifiedElement-class.html#__reduce__
+lxml.objectify.ObjectifiedElement.__iter__      lxml.objectify.ObjectifiedElement-class.html#__iter__
+lxml.objectify.ObjectifiedElement.countchildren lxml.objectify.ObjectifiedElement-class.html#countchildren
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.objectify.StringElement.__eq__     lxml.objectify.StringElement-class.html#__eq__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.objectify.StringElement.__mod__    lxml.objectify.StringElement-class.html#__mod__
+lxml.objectify.StringElement.__le__     lxml.objectify.StringElement-class.html#__le__
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.objectify.StringElement.__hash__   lxml.objectify.StringElement-class.html#__hash__
+lxml.objectify.StringElement.__ge__     lxml.objectify.StringElement-class.html#__ge__
+lxml.objectify.ObjectifiedElement.iterfind      lxml.objectify.ObjectifiedElement-class.html#iterfind
+lxml.objectify.ObjectifiedElement.__getattribute__      lxml.objectify.ObjectifiedElement-class.html#__getattribute__
+lxml.objectify.StringElement.__radd__   lxml.objectify.StringElement-class.html#__radd__
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.objectify.StringElement.strlen     lxml.objectify.StringElement-class.html#strlen
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.objectify.StringElement.__new__    lxml.objectify.StringElement-class.html#__new__
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.objectify.StringElement.pyval      lxml.objectify.StringElement-class.html#pyval
+lxml.objectify.StringElement.__repr__   lxml.objectify.StringElement-class.html#__repr__
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.objectify.StringElement.__add__    lxml.objectify.StringElement-class.html#__add__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.objectify._ObjectifyElementMakerCaller     lxml.objectify._ObjectifyElementMakerCaller-class.html
+lxml.objectify._ObjectifyElementMakerCaller.__new__     lxml.objectify._ObjectifyElementMakerCaller-class.html#__new__
+lxml.objectify._ObjectifyElementMakerCaller.__call__    lxml.objectify._ObjectifyElementMakerCaller-class.html#__call__
+lxml.sax.ElementTreeContentHandler      lxml.sax.ElementTreeContentHandler-class.html
+lxml.sax.ElementTreeContentHandler.startPrefixMapping   lxml.sax.ElementTreeContentHandler-class.html#startPrefixMapping
+lxml.sax.ElementTreeContentHandler.endPrefixMapping     lxml.sax.ElementTreeContentHandler-class.html#endPrefixMapping
+lxml.sax.ElementTreeContentHandler.etree        lxml.sax.ElementTreeContentHandler-class.html#etree
+lxml.sax.ElementTreeContentHandler.processingInstruction        lxml.sax.ElementTreeContentHandler-class.html#processingInstruction
+lxml.sax.ElementTreeContentHandler.endElement   lxml.sax.ElementTreeContentHandler-class.html#endElement
+lxml.sax.ElementTreeContentHandler._get_etree   lxml.sax.ElementTreeContentHandler-class.html#_get_etree
+lxml.sax.ElementTreeContentHandler.startElement lxml.sax.ElementTreeContentHandler-class.html#startElement
+lxml.sax.ElementTreeContentHandler.setDocumentLocator   lxml.sax.ElementTreeContentHandler-class.html#setDocumentLocator
+lxml.sax.ElementTreeContentHandler.startDocument        lxml.sax.ElementTreeContentHandler-class.html#startDocument
+lxml.sax.ElementTreeContentHandler.startElementNS       lxml.sax.ElementTreeContentHandler-class.html#startElementNS
+lxml.sax.ElementTreeContentHandler.characters   lxml.sax.ElementTreeContentHandler-class.html#characters
+lxml.sax.ElementTreeContentHandler.endDocument  lxml.sax.ElementTreeContentHandler-class.html#endDocument
+lxml.sax.ElementTreeContentHandler.ignorableWhitespace  lxml.sax.ElementTreeContentHandler-class.html#ignorableWhitespace
+lxml.sax.ElementTreeContentHandler.__init__     lxml.sax.ElementTreeContentHandler-class.html#__init__
+lxml.sax.ElementTreeContentHandler.endElementNS lxml.sax.ElementTreeContentHandler-class.html#endElementNS
+lxml.sax.ElementTreeProducer    lxml.sax.ElementTreeProducer-class.html
+lxml.sax.ElementTreeProducer._build_qname       lxml.sax.ElementTreeProducer-class.html#_build_qname
+lxml.sax.ElementTreeProducer.saxify     lxml.sax.ElementTreeProducer-class.html#saxify
+lxml.sax.ElementTreeProducer.__init__   lxml.sax.ElementTreeProducer-class.html#__init__
+lxml.sax.ElementTreeProducer._recursive_saxify  lxml.sax.ElementTreeProducer-class.html#_recursive_saxify
+lxml.sax.SaxError       lxml.sax.SaxError-class.html
+lxml.etree.LxmlError.__init__   lxml.etree.LxmlError-class.html#__init__
+lxml.tests.common_imports.HelperTestCase        lxml.tests.common_imports.HelperTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.common_imports.LargeFileLike lxml.tests.common_imports.LargeFileLike-class.html
+lxml.tests.common_imports.LargeFileLike.read    lxml.tests.common_imports.LargeFileLike-class.html#read
+lxml.tests.common_imports.LargeFileLike.iterelements    lxml.tests.common_imports.LargeFileLike-class.html#iterelements
+lxml.tests.common_imports.LargeFileLike.__init__        lxml.tests.common_imports.LargeFileLike-class.html#__init__
+lxml.tests.common_imports.LargeFileLikeUnicode  lxml.tests.common_imports.LargeFileLikeUnicode-class.html
+lxml.tests.common_imports.LargeFileLike.read    lxml.tests.common_imports.LargeFileLike-class.html#read
+lxml.tests.common_imports.LargeFileLikeUnicode.iterelements     lxml.tests.common_imports.LargeFileLikeUnicode-class.html#iterelements
+lxml.tests.common_imports.LargeFileLikeUnicode.__init__ lxml.tests.common_imports.LargeFileLikeUnicode-class.html#__init__
+lxml.tests.common_imports.SillyFileLike lxml.tests.common_imports.SillyFileLike-class.html
+lxml.tests.common_imports.SillyFileLike.read    lxml.tests.common_imports.SillyFileLike-class.html#read
+lxml.tests.common_imports.SillyFileLike.__init__        lxml.tests.common_imports.SillyFileLike-class.html#__init__
+lxml.tests.test_classlookup.ClassLookupTestCase lxml.tests.test_classlookup.ClassLookupTestCase-class.html
+lxml.tests.test_classlookup.ClassLookupTestCase.tearDown        lxml.tests.test_classlookup.ClassLookupTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_classlookup.ClassLookupTestCase.test_attribute_based_lookup     lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_attribute_based_lookup
+lxml.tests.test_classlookup.ClassLookupTestCase.test_default_class_lookup       lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_default_class_lookup
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_classlookup.ClassLookupTestCase.test_class_lookup_reentry       lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_class_lookup_reentry
+lxml.tests.test_classlookup.ClassLookupTestCase.test_namespace_lookup   lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_namespace_lookup
+lxml.tests.test_classlookup.ClassLookupTestCase.test_parser_based_lookup        lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_parser_based_lookup
+lxml.tests.test_classlookup.ClassLookupTestCase.test_lookup_without_fallback    lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_lookup_without_fallback
+lxml.tests.test_classlookup.ClassLookupTestCase.test_custom_lookup      lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup
+lxml.tests.test_classlookup.ClassLookupTestCase.etree   lxml.etree-module.html
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_classlookup.ClassLookupTestCase.test_custom_lookup_ns_fallback  lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup_ns_fallback
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_css.CSSTestCase lxml.tests.test_css.CSSTestCase-class.html
+lxml.tests.test_css.CSSTestCase.all     lxml.tests.test_css.CSSTestCase-class.html#all
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_css.CSSTestCase.shortDescription        lxml.tests.test_css.CSSTestCase-class.html#shortDescription
+lxml.tests.test_css.CSSTestCase.__init__        lxml.tests.test_css.CSSTestCase-class.html#__init__
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_css.CSSTestCase.selectors       lxml.tests.test_css.CSSTestCase-class.html#selectors
+lxml.tests.test_css.CSSTestCase.runTest lxml.tests.test_css.CSSTestCase-class.html#runTest
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_dtd.ETreeDtdTestCase    lxml.tests.test_dtd.ETreeDtdTestCase-class.html
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_parse_valid       lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_broken    lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_broken
+lxml.tests.test_dtd.ETreeDtdTestCase.test_parse_file_dtd        lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_parse_file_dtd
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_stringio  lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_stringio
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_parse_invalid     lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_invalid
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_internal_invalid  lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal_invalid
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_assertValid       lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_assertValid
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_parse_file_not_found      lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_file_not_found
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_parse_valid_relative      lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_relative
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_file      lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_file
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_internal  lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal
+lxml.tests.test_dtd.ETreeDtdTestCase.test_iterparse_file_dtd    lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_iterparse_file_dtd
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd_invalid   lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_invalid
+lxml.tests.test_dtd.ETreeDtdTestCase.test_dtd   lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd
+lxml.tests.test_elementtree.CElementTreeTestCase        lxml.tests.test_elementtree.CElementTreeTestCase-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_iter        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_reversed   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_pi        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElement     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_subelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_clear      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_crash      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_end lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_cdata  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_ET      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_ET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes3  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes3
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity_unknown lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElementFile lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElementFile
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_nonexistent       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_nonexistent
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder_target   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_cdata      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_empty
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_empty    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_double     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_double
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_negative      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_getitem_getslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_getitem_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_subelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_unknown    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_latin1 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_latin1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_contains     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_empty        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iselement    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iselement
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_del_tail    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_del_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy_elementtree      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_tag    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_tag
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_sequence    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_sequence
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes_ns        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_bytes    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_bytes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_attrib lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_default_encoding   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib_resolve lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_step        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_child_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_child_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_replace      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_with_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_with_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_element_boolean     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_element_boolean
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_getset       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_getset
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_mapping    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_mapping
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail1        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_beyond_index  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_beyond_index
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_getiterator        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_text    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_insert   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_set_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_set_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys2      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_default     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_write    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_none        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_broken     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_broken
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_empty_default     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_empty_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_indexerror   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_indexerror
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_file       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext_child       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_parse_stringio lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_property       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_property
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_crash        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_utf8_bom    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_utf8_bom
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_namespaces_after_serialize   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_namespaces_after_serialize
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_invalid_args      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_wrong_unicode_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_move      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XML  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_setting   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_setting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_elementtree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_ElementTreeDoctest     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_contains   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_explicit lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_simple       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_simple
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_fail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_fail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_comment   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_none        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object_encoding   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_root_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_root_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_override lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_sub    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_only_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_only_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_tostring lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_makeelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_makeelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_none     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve_new  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_getchildren lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_getchildren
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_nonexisting   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_nonexisting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_single        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_single      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_set        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_set
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_elementtree_root        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_elementtree_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_whitespace   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_whitespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_extend       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_extend
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_memory      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_memory
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_append      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi_nonsense  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_unknown   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator_filter       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_replace_slice_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_replace_slice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_text_only  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_text_only
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_cET     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_cET
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertEncodingDeclaration lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertEncodingDeclaration
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_ns_clear      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_ns_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_register_namespace   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_with_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_write_default_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_write_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_out      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_out
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_unicode  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_unicode
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_clear lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_reference lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_reference
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_twice       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_twice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_stringio       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ElementTree  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ElementTree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_cmp    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_cmp
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_version       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_version
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstring   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_dict        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_dict
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_move_elements      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_move_elements
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_multiple_elementrees lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_multiple_elementrees
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_nonsense     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_str        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_str
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_del_child  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_del_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_xml    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_xml
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_comment     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_comment
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_exact       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_exact
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_attrib_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_attrib_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_parser_target    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_parser_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setitem  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setitem
+lxml.tests.test_elementtree.CElementTreeTestCase.etree  lxml.tests.test_elementtree.CElementTreeTestCase-class.html#etree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start_end  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative2      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_from_file        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_from_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_incomplete   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_append  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_other   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_other
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative1   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns_parsed      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_root        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iter lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_namespaces  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_namespaces
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_xmlns_move lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_xmlns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_keywords     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_keywords
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_default   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_processinginstruction        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_processinginstruction
+lxml.tests.test_elementtree.ETreeTestCaseBase._rootstring       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_rootstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setslice lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_all       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_manipulation       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_manipulation
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access2
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_attr      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_attr
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element_tree       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element_tree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_in       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_in
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_tag_parse lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_tag_parse
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_string     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_string
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_html    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_str_subclass     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_with_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_large      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_large
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_position   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_position
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertXML lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertXML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_html lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_characters    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_characters
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_iterator   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_iterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_data   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_data
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XMLID        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XMLID
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_weird_dict_interaction       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_weird_dict_interaction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes
+lxml.tests.test_elementtree.ETreeTestCase       lxml.tests.test_elementtree.ETreeTestCase-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_iter        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_reversed   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_pi        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElement     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_subelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_clear      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_crash      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_end lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_cdata  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_ET      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_ET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes3  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes3
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity_unknown lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElementFile lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElementFile
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_nonexistent       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_nonexistent
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder_target   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_cdata      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_empty
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_empty    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_double     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_double
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_negative      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_getitem_getslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_getitem_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_subelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_unknown    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_latin1 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_latin1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_contains     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_empty        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iselement    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iselement
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_del_tail    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_del_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy_elementtree      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_tag    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_tag
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_sequence    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_sequence
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes_ns        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_bytes    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_bytes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_attrib lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_default_encoding   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib_resolve lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_step        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_child_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_child_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_replace      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_with_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_with_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_element_boolean     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_element_boolean
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_getset       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_getset
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_mapping    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_mapping
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail1        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_beyond_index  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_beyond_index
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_getiterator        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_text    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_insert   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_set_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_set_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys2      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_default     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_write    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_none        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_broken     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_broken
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_empty_default     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_empty_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_indexerror   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_indexerror
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_file       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext_child       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_parse_stringio lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_property       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_property
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_crash        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_utf8_bom    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_utf8_bom
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_namespaces_after_serialize   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_namespaces_after_serialize
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_invalid_args      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_wrong_unicode_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_move      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XML  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_setting   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_setting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_elementtree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_ElementTreeDoctest     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_contains   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_explicit lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_simple       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_simple
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_fail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_fail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_comment   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_none        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object_encoding   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_root_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_root_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_override lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_sub    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_only_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_only_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_tostring lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_makeelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_makeelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_none     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve_new  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_getchildren lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_getchildren
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_nonexisting   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_nonexisting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_single        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_single      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_set        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_set
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_elementtree_root        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_elementtree_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_whitespace   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_whitespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_extend       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_extend
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_memory      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_memory
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_append      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi_nonsense  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_unknown   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator_filter       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_replace_slice_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_replace_slice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_text_only  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_text_only
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_cET     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_cET
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertEncodingDeclaration lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertEncodingDeclaration
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_ns_clear      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_ns_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_register_namespace   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_with_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_write_default_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_write_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_out      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_out
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_unicode  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_unicode
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_clear lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_reference lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_reference
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_twice       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_twice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_stringio       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ElementTree  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ElementTree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_cmp    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_cmp
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_version       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_version
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstring   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_dict        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_dict
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_move_elements      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_move_elements
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_multiple_elementrees lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_multiple_elementrees
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_nonsense     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_str        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_str
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_del_child  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_del_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_xml    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_xml
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_comment     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_comment
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_exact       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_exact
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_attrib_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_attrib_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_parser_target    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_parser_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setitem  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setitem
+lxml.tests.test_elementtree.ETreeTestCase.etree lxml.etree-module.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start_end  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative2      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_from_file        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_from_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_incomplete   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_append  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_other   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_other
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative1   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns_parsed      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_root        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iter lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_namespaces  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_namespaces
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_xmlns_move lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_xmlns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_keywords     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_keywords
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_default   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_processinginstruction        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_processinginstruction
+lxml.tests.test_elementtree.ETreeTestCaseBase._rootstring       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_rootstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setslice lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_all       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_manipulation       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_manipulation
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access2
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_attr      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_attr
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element_tree       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element_tree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_in       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_in
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_tag_parse lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_tag_parse
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_string     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_string
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_html    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_str_subclass     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_with_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_large      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_large
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_position   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_position
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertXML lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertXML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_html lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_characters    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_characters
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_iterator   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_iterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_data   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_data
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XMLID        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XMLID
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_weird_dict_interaction       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_weird_dict_interaction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_iter        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_cdata  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_pi        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElement     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_subelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_clear      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_crash      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_end lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_reversed   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_ET      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_ET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes3  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes3
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity_unknown lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElementFile lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElementFile
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_nonexistent       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_nonexistent
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_cdata      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_empty
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_empty    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_double     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_double
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_negative      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_getitem_getslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_getitem_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_subelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_unknown    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_latin1 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_latin1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_contains     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_empty        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iselement    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iselement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iter lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy_elementtree      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_tag    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_tag
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext_child       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_sequence    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_sequence
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib_resolve lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_bytes    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_bytes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_attrib lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_default_encoding   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes_ns        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_step        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_child_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_child_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_replace      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_with_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_with_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_element_boolean     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_element_boolean
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_getset       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_getset
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_mapping    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_mapping
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_file       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_stringio       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_getiterator        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_text    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_insert   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_set_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_set_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_string     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_string
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys2      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_default     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_write    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_broken     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_broken
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_empty_default     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_empty_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_indexerror   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_indexerror
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_parse_stringio lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail1        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_whitespace   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_whitespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_crash        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_utf8_bom    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_utf8_bom
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_namespaces_after_serialize   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_namespaces_after_serialize
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_invalid_args      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_wrong_unicode_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_override lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_move      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XML  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_setting   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_setting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_elementtree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_contains   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_itertext     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_itertext
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_encoding_8bit_explicit lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_simple       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_simple
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_fail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_fail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_comment   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_none        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object_encoding   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_none        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_sub    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_only_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_only_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_tostring lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_makeelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_makeelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_none     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve_new  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_nonexisting   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_nonexisting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_single        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_single      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_set        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_set
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_elementtree_root        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_elementtree_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_extend       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_extend
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_default   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_memory      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_memory
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_append      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi_nonsense  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_unknown   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator_filter       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_cET     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_cET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_replace_slice_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_replace_slice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_text_only  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_text_only
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertEncodingDeclaration lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertEncodingDeclaration
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_del_child  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_del_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_register_namespace   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_xml    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_xml
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_with_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_write_default_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_write_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setslice lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_out      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_out
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_unicode  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_unicode
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_clear lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_reference lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_reference
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_twice       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_twice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_beyond_index  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_beyond_index
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ElementTree  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ElementTree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_cmp    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_cmp
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_position   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_position
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_version       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_version
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_parser_target    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_parser_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstring   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_dict        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_dict
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_move_elements      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_move_elements
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_multiple_elementrees lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_multiple_elementrees
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_nonsense     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_str        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_str
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_ns_clear      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_ns_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_exact       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_exact
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_attrib_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_attrib_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setitem  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.etree     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#etree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start_end  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative2      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_from_file        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_from_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_error_close_incomplete   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_append  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_append
+lxml.tests.test_elementtree.ETreeTestCaseBase._rootstring       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_rootstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_other   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_other
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative1   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns_parsed      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder_target   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_root        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_del_tail    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_del_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_namespaces  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_namespaces
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_processinginstruction        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_processinginstruction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_xmlns_move lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_xmlns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_keywords     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_keywords
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_getchildren lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_getchildren
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_ElementTreeDoctest     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_all       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XMLID        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XMLID
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_manipulation       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_manipulation
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access2
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_attr      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_attr
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_large      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_large
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element_tree       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element_tree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_in       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_in
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_tag_parse lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_tag_parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_method_html    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_weird_dict_interaction       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_weird_dict_interaction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_with_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_root_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_root_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertXML lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertXML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_comment     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_method_html lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_property       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_property
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstringlist_characters    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstringlist_characters
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_iterator   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_iterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_data   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_data
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_str_subclass     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes
+lxml.tests.test_elementtree.ElementTreeTestCase lxml.tests.test_elementtree.ElementTreeTestCase-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_iter        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_cdata  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_pi        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElement     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_subelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys2      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_clear      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_crash      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_end lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_reversed   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_ET      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_ET
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes3  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes3
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parser_target_entity_unknown       lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parser_target_entity_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase._writeElementFile lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_writeElementFile
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_nonexistent       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_nonexistent
+lxml.tests.test_elementtree.ElementTreeTestCase.test_fromstringlist_characters  lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_fromstringlist_characters
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_cdata      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_cdata
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_empty
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_empty    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_double     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_double
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_negative      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_getitem_getslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_getitem_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_subelement lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_unknown    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_latin1 lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_latin1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_contains     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_contains
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear
+lxml.tests.test_elementtree.ElementTreeTestCase.test_feed_parser_error_close_empty      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_feed_parser_error_close_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iselement    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iselement
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_del_tail    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_del_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy_elementtree      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_tag    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_tag
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_sequence    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_sequence
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes_ns        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_bytes    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_bytes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_attrib lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_default_encoding   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib_resolve lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_empty   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_entity lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_entity
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_step        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_child_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_child_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_replace      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_replace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace
+lxml.tests.test_elementtree.ElementTreeTestCase.test_fromstringlist     lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_fromstringlist
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_empty       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_with_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_with_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_element_boolean     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_element_boolean
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_getset       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_getset
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_findall      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_findall
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_mapping    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_mapping
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail1        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_beyond_index  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_beyond_index
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail
+lxml.tests.test_elementtree.ElementTreeTestCase.test_comment_whitespace lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_comment_whitespace
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_negative
+lxml.tests.test_elementtree.ElementTreeTestCase.test_write_method_text  lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_write_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_insert   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_set_clear     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_set_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_empty      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_empty
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_default     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_write    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_write
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_set_text_none        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_set_text_none
+lxml.tests.test_elementtree.ElementTreeTestCase.test_feed_parser_error_broken   lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_feed_parser_error_broken
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_empty_default     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_empty_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_indexerror   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_indexerror
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_file       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_file
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parse_error_from_file      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parse_error_from_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object
+lxml.tests.test_elementtree.ElementTreeTestCase.test_itertext_child     lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_itertext_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_parse_stringio lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder_target   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_crash        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_crash
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_utf8_bom    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_utf8_bom
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_namespaces_after_serialize   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_namespaces_after_serialize
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_invalid_args      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_wrong_unicode_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parse_encoding_8bit_override       lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_move      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XML  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_setting   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_setting
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_elementtree lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_elementtree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_ElementTreeDoctest     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_contains   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_contains
+lxml.tests.test_elementtree.ElementTreeTestCase.test_itertext   lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_itertext
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parse_encoding_8bit_explicit       lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_simple       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_simple
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_write_fail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_write_fail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_comment   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_comment
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_none        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_object_encoding   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_object_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_root_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_root_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_keys_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_keys_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_treebuilder  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_treebuilder
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_sub    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parser_target_property     lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parser_target_property
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_tostring lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_makeelement  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_makeelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_only_text   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_only_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_error_none     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_error_none
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve_new  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
+lxml.tests.test_elementtree.ETreeTestCaseBase._test_getchildren lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_test_getchildren
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_nonexisting   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_nonexisting
+lxml.tests.test_elementtree.ElementTreeTestCase.test_fromstringlist_single      lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_fromstringlist_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_single      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_single
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attributes2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attributes2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_set        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_set
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_elementtree_root        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_elementtree_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy
+lxml.tests.test_elementtree.ElementTreeTestCase.test_extend     lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_extend
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_memory      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_memory
+lxml.tests.test_elementtree.ElementTreeTestCase.test_parse_error        lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_parse_error
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delitem_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_ns   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_append      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file_encoding  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi_nonsense  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_reset_ns lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_reset_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_unknown   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_unknown
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator_filter       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_replace_slice_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_replace_slice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_text_only  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_text_only
+lxml.tests.test_elementtree.ETreeTestCaseBase.required_versions_cET     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#required_versions_cET
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertEncodingDeclaration lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertEncodingDeclaration
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_ns_clear      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_ns_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_str_subclass    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_tostring_sub_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail
+lxml.tests.test_elementtree.ElementTreeTestCase.test_register_namespace lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_register_namespace
+lxml.tests.test_elementtree.ElementTreeTestCase.test_tostring_method_text       lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_tostring_method_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_getiterator      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_with_text lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attribute_resolve      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attribute_resolve
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_write_default_encoding      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_write_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tostring_element_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tostring_element_tail
+lxml.tests.test_elementtree.ElementTreeTestCase.test_write_method_html  lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_write_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_out      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_out
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_shallowcopy  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_shallowcopy
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_feed_parser_unicode  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_feed_parser_unicode
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_clear lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_clear
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_reference lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_reference
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_set_twice       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_set_twice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_stringio       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_stringio
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ElementTree  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ElementTree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_cmp    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_cmp
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_indexing_with_text2  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_indexing_with_text2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_version       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_version
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_fromstring   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_fromstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_update_dict        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_update_dict
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_move_elements      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_move_elements
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_multiple_elementrees lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_multiple_elementrees
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_comment_nonsense     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_comment_nonsense
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_str        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_str
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iteration_del_child  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iteration_del_child
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_8bit_xml    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_8bit_xml
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_comment     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_comment
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_encoding_exact       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_encoding_exact
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_attrib_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_attrib_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_elementtree_parser_target    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_elementtree_parser_target
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setitem  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setitem
+lxml.tests.test_elementtree.ElementTreeTestCase.etree   xml.etree.ElementTree-module.html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_start_end  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_start_end
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values_ns  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_remove_ns    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_remove_ns
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_negative2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_items      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_items
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_step_negative2      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_step_negative2
+lxml.tests.test_elementtree.ElementTreeTestCase.test_feed_parser_error_close_incomplete lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_feed_parser_error_close_incomplete
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tail_append  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tail_append
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_other   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_other
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative1   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_attribute_ns_parsed      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_negative2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_negative2
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_root        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2
+lxml.tests.test_elementtree.ElementTreeTestCase.test_iter       lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_iter
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_deepcopy_namespaces  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_deepcopy_namespaces
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_getiterator        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_getiterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_xmlns_move lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_xmlns_move
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element_with_attributes_keywords     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element_with_attributes_keywords
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attrib_pop_default   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attrib_pop_default
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_processinginstruction        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_processinginstruction
+lxml.tests.test_elementtree.ETreeTestCaseBase._rootstring       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_rootstring
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_del_setslice lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_filter_all       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_filter_all
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_qname_attrib lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_qname_attrib
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice_tail        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_manipulation       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_manipulation
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parse_file   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parse_file
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_insert_tail  lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_insert_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_access2   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_access2
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_attr      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_attr
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem_tail lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_clear_tail   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_clear_tail
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element    lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_element_tree       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_element_tree
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_text_escape_in       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_text_escape_in
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_tag_parse lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_tag_parse
+lxml.tests.test_elementtree.ETreeTestCaseBase._check_string     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#_check_string
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_delslice     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_delslice
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_tag_str_subclass     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_tag_str_subclass
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_getiterator_with_text        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_getiterator_with_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_iterparse_large      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_iterparse_large
+lxml.tests.test_elementtree.ElementTreeTestCase.test_feed_parser_error_position lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_feed_parser_error_position
+lxml.tests.test_elementtree.ETreeTestCaseBase.assertXML lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#assertXML
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_element      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree.ElementTreeTestCase.test_tostring_method_html       lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_tostring_method_html
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem2     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem2
+lxml.tests.test_elementtree.ElementTreeTestCase.test_comment_text       lxml.tests.test_elementtree.ElementTreeTestCase-class.html#test_comment_text
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_iterator   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_iterator
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_parser_target_data   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_parser_target_data
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_XMLID        lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_XMLID
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_ns_decl_tostring_element     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_ns_decl_tostring_element
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_attribute_values     lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_attribute_values
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_weird_dict_interaction       lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_weird_dict_interaction
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_setitem      lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_setitem
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_pi   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_pi
+lxml.tests.test_elementtree.ETreeTestCaseBase.test_subelement_with_attributes   lxml.tests.test_elementtree.ETreeTestCaseBase-class.html#test_subelement_with_attributes
+lxml.tests.test_errors.ErrorTestCase    lxml.tests.test_errors.ErrorTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_errors.ErrorTestCase.test_bad_element   lxml.tests.test_errors.ErrorTestCase-class.html#test_bad_element
+lxml.tests.test_errors.ErrorTestCase.etree      lxml.etree-module.html
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_errors.ErrorTestCase.test_element_cyclic_gc_none        lxml.tests.test_errors.ErrorTestCase-class.html#test_element_cyclic_gc_none
+lxml.tests.test_errors.ErrorTestCase.test_empty_parse   lxml.tests.test_errors.ErrorTestCase-class.html#test_empty_parse
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeC14NTestCase lxml.tests.test_etree.ETreeC14NTestCase-class.html
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_exclusive     lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_exclusive
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_tostring_exclusive    lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_exclusive
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_gzip  lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_gzip
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_element_tostring_with_comments        lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_with_comments
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_file  lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_tostring_with_comments        lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_with_comments
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n       lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_with_comments lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_with_comments
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_element_tostring_exclusive    lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_exclusive
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.ETreeC14NTestCase.test_c14n_file_gzip     lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file_gzip
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeErrorLogTest lxml.tests.test_etree.ETreeErrorLogTest-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeErrorLogTest._test_python_error_logging      lxml.tests.test_etree.ETreeErrorLogTest-class.html#_test_python_error_logging
+lxml.tests.test_etree.ETreeErrorLogTest.etree   lxml.etree-module.html
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.ETreeErrorLogTest.test_parse_error_logging        lxml.tests.test_etree.ETreeErrorLogTest-class.html#test_parse_error_logging
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeOnlyTestCase lxml.tests.test_etree.ETreeOnlyTestCase-class.html
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_root       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root
+lxml.tests.test_etree.ETreeOnlyTestCase.test_dump_none  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dump_none
+lxml.tests.test_etree.ETreeOnlyTestCase.test_unicode_byte_invalid_sequence      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid_sequence
+lxml.tests.test_etree.ETreeOnlyTestCase.test_nsmap_prefix_invalid       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_nsmap_prefix_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase._writeElement   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#_writeElement
+lxml.tests.test_etree.ETreeOnlyTestCase.test_xml_base   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_xml_base
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterchildren_tag   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_elementtree     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_elementtree
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_start     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_root_pi    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_pi   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_space        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_space
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_pi lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_deepcopy_elementtree_pi    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_name_quote      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_quote
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_start_end lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_end
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parseid    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parseid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_fileobject_unicode   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_fileobject_unicode
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_strip    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_strip
+lxml.tests.test_etree.ETreeOnlyTestCase.test_html_base_tag      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_xml_base_attribute lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_xml_base_attribute
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_standalone        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_standalone
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_root_comment       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getiterator_filter_all_comment_pi  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_all_comment_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_remove_comments  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_remove_comments
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode_element_tail      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_element_tail
+lxml.tests.test_etree.ETreeOnlyTestCase.etree   lxml.etree-module.html
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_name_space lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_space
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tag_ns_all       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_all
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_empty        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_replace    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace
+lxml.tests.test_etree.ETreeOnlyTestCase.test_docinfo_empty      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getiterator_filter_element lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_elements_ns  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_append_error       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_append_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_error       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_iterparse_start lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_start
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_getiterator       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_getiterator
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode_pretty    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_pretty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_c_api      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_c_api
+lxml.tests.test_etree.ETreeOnlyTestCase.test_standalone lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_standalone
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_encoding_8bit_override   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_8bit_override
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_reuse_after_move        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_reuse_after_move
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_text_resolve lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_text_resolve
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_broken   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_broken
+lxml.tests.test_etree.ETreeOnlyTestCase.test_elementtree_parser_target_type_error       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_parser_target_type_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_elements     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_namespace_localname  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_namespace_localname
+lxml.tests.test_etree.ETreeOnlyTestCase.test_findall_ns lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_comment_immutable  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_immutable
+lxml.tests.test_etree.ETreeOnlyTestCase.test_attribute_set_invalid      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_nsmap   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_nsmap
+lxml.tests.test_etree.ETreeOnlyTestCase.test_comment_empty      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_pi_parse   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_parse
+lxml.tests.test_etree.ETreeOnlyTestCase.test_XML_set_base_url_docinfo   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XML_set_base_url_docinfo
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setitem_assert     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setitem_assert
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_step_overrun      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_overrun
+lxml.tests.test_etree.ETreeOnlyTestCase.test_itersiblings       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_base_url_docinfo     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_base_url_docinfo
+lxml.tests.test_etree.ETreeOnlyTestCase.test_replace_new        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace_new
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_error      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tag      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_feed_exception       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_feed_exception
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_attrib_ns lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_attrib_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_parse   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_parse
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_pis      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_pis
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getparent  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getparent
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode_element  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_doctype_name_only_roundtrip        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_name_only_roundtrip
+lxml.tests.test_etree.ETreeOnlyTestCase.test_unicode_byte_zero  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_zero
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_tag       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespace_cleanup  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_name_quote lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_quote
+lxml.tests.test_etree.ETreeOnlyTestCase.test_comment_no_proxy_yet       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_no_proxy_yet
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_element      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_pretty    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_pretty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_filename_dtd_relative      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd_relative
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_string_dtd lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_string_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious_root_comment   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_root_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags_pi_comment      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_filelike_dtd       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filelike_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_keep_cdata       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_keep_cdata
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_names      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_names
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_nsmap      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_nsmap
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_filename_dtd       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode_element   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_byte_invalid       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterancestors_tag  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_none      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_none
+lxml.tests.test_etree.ETreeOnlyTestCase.test_version    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_version
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addnext_comment    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_attributes   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_step_negative2    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative2
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_clear     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_clear
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_values      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_values
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_iterparse_end   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_end
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterchildren_tag_reversed  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_reversed
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_attribute_invalid       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_attribute_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_default_and_attr        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_and_attr
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tag_ns   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_name_colon lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_colon
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_copy_element    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_copy_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_encoding_unknown    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding_unknown
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_default_copy_element    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_copy_element
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags_ns      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_element_name_empty lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_attribute_set      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterchildren       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getroottree        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getroottree
+lxml.tests.test_etree.ETreeOnlyTestCase.test_attribute_values   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_values
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious_root_pi        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_root_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_method_text_unicode       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_method_text_unicode
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_recover      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_recover
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata_errors       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_errors
+lxml.tests.test_etree.ETreeOnlyTestCase.test_deepcopy_elementtree_dtd   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags_pi_comment_all  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment_all
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode_none      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_none
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_element lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_element
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tree_comments    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tree_comments
+lxml.tests.test_etree.ETreeOnlyTestCase.test_byte_zero  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_zero
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_stringio_base_url    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_stringio_base_url
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata_xpath        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_xpath
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious_pi     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_elementtree_findall_qname  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_qname
+lxml.tests.test_etree.ETreeOnlyTestCase.test_XMLDTDID   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XMLDTDID
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_method_text_encoding      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_method_text_encoding
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_parser_type_error    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_parser_type_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_elementtree_find_qname     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_find_qname
+lxml.tests.test_etree.ETreeOnlyTestCase.test_encoding_tostring_utf16    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_encoding_tostring_utf16
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode_pretty   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_pretty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_fromstring_exception lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_fromstring_exception
+lxml.tests.test_etree.ETreeOnlyTestCase.test_docinfo_system     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_system
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_attributes_ns        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_remove_pis   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_pis
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_encoding_error   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_error
+lxml.tests.test_etree.ETreeOnlyTestCase.test_docinfo_public     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_public
+lxml.tests.test_etree.ETreeOnlyTestCase.test_qname_colon        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_colon
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_cdata        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_cdata
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_empty      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getnext    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getnext
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_name_empty      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_encoding    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding
+lxml.tests.test_etree.ETreeOnlyTestCase.test_namespaces_default lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default
+lxml.tests.test_etree.ETreeOnlyTestCase.test_itersiblings_tag   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata_type lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_type
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_name_colon      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_colon
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_all_empty_reversed        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_all_empty_reversed
+lxml.tests.test_etree.ETreeOnlyTestCase.test_doctype_output_override    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_output_override
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getprevious        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getprevious
+lxml.tests.test_etree.ETreeOnlyTestCase.test_sourceline_XML     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_XML
+lxml.tests.test_etree.ETreeOnlyTestCase.test_unicode_byte_invalid       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterdescendants_tag        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants_tag
+lxml.tests.test_etree.ETreeOnlyTestCase.test_comment_parse_empty        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_parse_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_etree.ETreeOnlyTestCase.test_docinfo_name_only  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_name_only
+lxml.tests.test_etree.ETreeOnlyTestCase.test_XML_base_url_docinfo       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XML_base_url_docinfo
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_comments lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_comments
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_with_tail lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_with_tail
+lxml.tests.test_etree.ETreeOnlyTestCase.test_prefix_default_ns  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix_default_ns
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getiterator_filter_namespace       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_namespace
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parse_remove_comments      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_comments
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_append      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_append
+lxml.tests.test_etree.ETreeOnlyTestCase.test_subelement_name_space      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_space
+lxml.tests.test_etree.ETreeOnlyTestCase.test_prefix     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix
+lxml.tests.test_etree.ETreeOnlyTestCase._checkIDDict    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#_checkIDDict
+lxml.tests.test_etree.ETreeOnlyTestCase.test_attribute_has_key  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_has_key
+lxml.tests.test_etree.ETreeOnlyTestCase.test_addprevious_comment        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_index      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_index
+lxml.tests.test_etree.ETreeOnlyTestCase.test_HTML_base_url_docinfo      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_HTML_base_url_docinfo
+lxml.tests.test_etree.ETreeOnlyTestCase.test_feed_parser_recover        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_feed_parser_recover
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterchildren_reversed      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_reversed
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_bytes_dtd  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_bytes_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_resolve_file_dtd   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_file_dtd
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_parse       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_parse
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_step_negative     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative
+lxml.tests.test_etree.ETreeOnlyTestCase.test_deepcopy_pi        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_pi
+lxml.tests.test_etree.ETreeOnlyTestCase.test_strip_tags_doc_style       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_doc_style
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_unicode   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode
+lxml.tests.test_etree.ETreeOnlyTestCase.test_dtd_io     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dtd_io
+lxml.tests.test_etree.ETreeOnlyTestCase.test_XMLDTDID_empty     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XMLDTDID_empty
+lxml.tests.test_etree.ETreeOnlyTestCase.test_getiterator_filter_entities        lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_entities
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterdescendants    lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterparse_tag_all  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_all
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode_none     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_none
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterancestors      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors
+lxml.tests.test_etree.ETreeOnlyTestCase.test_setslice_step      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step
+lxml.tests.test_etree.ETreeOnlyTestCase.test_cdata_parser       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_parser
+lxml.tests.test_etree.ETreeOnlyTestCase.test_iterwalk_tag_all   lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag_all
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tostring_standalone_in_out lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_standalone_in_out
+lxml.tests.test_etree.ETreeOnlyTestCase.test_tounicode_element_tail     lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_element_tail
+lxml.tests.test_etree.ETreeOnlyTestCase.test_entity_restructure lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_restructure
+lxml.tests.test_etree.ETreeOnlyTestCase.test_elementtree_findall_ns_qname       lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_ns_qname
+lxml.tests.test_etree.ETreeOnlyTestCase.test_html_base  lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base
+lxml.tests.test_etree.ETreeOnlyTestCase.test_parser_target_comment      lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_comment
+lxml.tests.test_etree.ETreeOnlyTestCase.test_pi lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi
+lxml.tests.test_etree.ETreeWriteTestCase        lxml.tests.test_etree.ETreeWriteTestCase-class.html
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_file_gzip   lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzip
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_etree.ETreeWriteTestCase.test_write     lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_file        lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_gzip_level  lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_gzip_level
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_file_gzipfile_parse lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzipfile_parse
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_gzip        lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_gzip
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.ETreeWriteTestCase.test_write_file_gzip_parse     lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzip_parse
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ETreeXIncludeTestCase     lxml.tests.test_etree.ETreeXIncludeTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude    lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_etree.ETreeXIncludeTestCase.include     lxml.tests.test_etree.ETreeXIncludeTestCase-class.html#include
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_resolver   lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_resolver
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_text       lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_text
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.ElementIncludeTestCase    lxml.tests.test_etree.ElementIncludeTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.ElementIncludeTestCase.ElementInclude     lxml.ElementInclude-module.html
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude    lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_etree.ElementIncludeTestCase.include    lxml.tests.test_etree.ElementIncludeTestCase-class.html#include
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_resolver   lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_resolver
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_text       lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_text
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_etree.XIncludeTestCase  lxml.tests.test_etree.XIncludeTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude    lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_resolver   lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_resolver
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_etree.XIncludeTestCase.test_xinclude_text       lxml.tests.test_etree.XIncludeTestCase-class.html#test_xinclude_text
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_htmlparser.HtmlParserTestCase   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_broken   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_broken
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_cdata    lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_cdata
+lxml.tests.test_htmlparser.HtmlParserTestCase.tearDown  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#tearDown
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_subelement_name_colon   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_colon
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_element_name_quote      lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_quote
+lxml.tests.test_htmlparser.HtmlParserTestCase.uhtml_str lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#uhtml_str
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_parse_html_filelike   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_filelike
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_pretty_print     lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_pretty_print
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_subelement_name_empty   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_empty
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_parse_html_norecover  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_norecover
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_default_parser_HTML_broken   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_default_parser_HTML_broken
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_subelement_name_space   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_space
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_htmlparser.HtmlParserTestCase.etree     lxml.etree-module.html
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_iterparse       lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_unicode  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_unicode
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_parse_html    lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_element_name_colon      lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_colon
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_file_error      lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_file_error
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_subelement_name_quote   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_quote
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_parse_encoding_8bit_override lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_override
+lxml.tests.test_htmlparser.HtmlParserTestCase.broken_html_str   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#broken_html_str
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_parse_html_error      lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_error
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_iterparse_file  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_file
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML_access   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_access
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_parse_encoding_8bit_explicit lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_explicit
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_module_HTML  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_element_name_empty      lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_empty
+lxml.tests.test_htmlparser.HtmlParserTestCase.html_str  lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#html_str
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_htmlparser.HtmlParserTestCase.test_html_element_name_space      lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_space
+lxml.tests.test_htmlparser.HtmlParserTestCase.html_str_pretty   lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#html_str_pretty
+lxml.tests.test_io.ETreeIOTestCase      lxml.tests.test_io.ETreeIOTestCase-class.html
+lxml.tests.test_io.IOTestCaseBase.buildNodes    lxml.tests.test_io.IOTestCaseBase-class.html#buildNodes
+lxml.tests.test_io.IOTestCaseBase.tearDown      lxml.tests.test_io.IOTestCaseBase-class.html#tearDown
+lxml.tests.test_io.IOTestCaseBase.test_write_filename   lxml.tests.test_io.IOTestCaseBase-class.html#test_write_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_fileobject   lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_fileobject
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_gzipobject  lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_gzipobject
+lxml.tests.test_io.IOTestCaseBase.getTestFilePath       lxml.tests.test_io.IOTestCaseBase-class.html#getTestFilePath
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_error    lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_error
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_large_fileobject    lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_large_fileobject
+lxml.tests.test_io.ETreeIOTestCase.etree        lxml.etree-module.html
+lxml.tests.test_io.IOTestCaseBase.test_tree_io_latin1   lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io_latin1
+lxml.tests.test_io.IOTestCaseBase.setUp lxml.tests.test_io.IOTestCaseBase-class.html#setUp
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename     lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename_remove_previous     lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename_remove_previous
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_io.IOTestCaseBase.test_tree_io  lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_late_error       lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_late_error
+lxml.tests.test_io.IOTestCaseBase.test_write_invalid_filename   lxml.tests.test_io.IOTestCaseBase-class.html#test_write_invalid_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_unamed_fileobject    lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_unamed_fileobject
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_type_error       lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_type_error
+lxml.tests.test_io.ElementTreeIOTestCase        lxml.tests.test_io.ElementTreeIOTestCase-class.html
+lxml.tests.test_io.IOTestCaseBase.buildNodes    lxml.tests.test_io.IOTestCaseBase-class.html#buildNodes
+lxml.tests.test_io.IOTestCaseBase.tearDown      lxml.tests.test_io.IOTestCaseBase-class.html#tearDown
+lxml.tests.test_io.IOTestCaseBase.test_write_filename   lxml.tests.test_io.IOTestCaseBase-class.html#test_write_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_fileobject   lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_fileobject
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_gzipobject  lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_gzipobject
+lxml.tests.test_io.IOTestCaseBase.getTestFilePath       lxml.tests.test_io.IOTestCaseBase-class.html#getTestFilePath
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_error    lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_error
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_large_fileobject    lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_large_fileobject
+lxml.tests.test_io.ElementTreeIOTestCase.etree  xml.etree.ElementTree-module.html
+lxml.tests.test_io.IOTestCaseBase.test_tree_io_latin1   lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io_latin1
+lxml.tests.test_io.IOTestCaseBase.setUp lxml.tests.test_io.IOTestCaseBase-class.html#setUp
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename     lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename_remove_previous     lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename_remove_previous
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_io.IOTestCaseBase.test_tree_io  lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_late_error       lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_late_error
+lxml.tests.test_io.IOTestCaseBase.test_write_invalid_filename   lxml.tests.test_io.IOTestCaseBase-class.html#test_write_invalid_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_unamed_fileobject    lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_unamed_fileobject
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_type_error       lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_type_error
+lxml.tests.test_io.IOTestCaseBase       lxml.tests.test_io.IOTestCaseBase-class.html
+lxml.tests.test_io.IOTestCaseBase.buildNodes    lxml.tests.test_io.IOTestCaseBase-class.html#buildNodes
+lxml.tests.test_io.IOTestCaseBase.tearDown      lxml.tests.test_io.IOTestCaseBase-class.html#tearDown
+lxml.tests.test_io.IOTestCaseBase.test_write_filename   lxml.tests.test_io.IOTestCaseBase-class.html#test_write_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_fileobject   lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_fileobject
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_gzipobject  lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_gzipobject
+lxml.tests.test_io.IOTestCaseBase.getTestFilePath       lxml.tests.test_io.IOTestCaseBase-class.html#getTestFilePath
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_error    lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_error
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_large_fileobject    lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_large_fileobject
+lxml.tests.test_io.IOTestCaseBase.etree lxml.tests.test_io.IOTestCaseBase-class.html#etree
+lxml.tests.test_io.IOTestCaseBase.test_tree_io_latin1   lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io_latin1
+lxml.tests.test_io.IOTestCaseBase.setUp lxml.tests.test_io.IOTestCaseBase-class.html#setUp
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename     lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_filename_remove_previous     lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_filename_remove_previous
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_io.IOTestCaseBase.test_tree_io  lxml.tests.test_io.IOTestCaseBase-class.html#test_tree_io
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_late_error       lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_late_error
+lxml.tests.test_io.IOTestCaseBase.test_write_invalid_filename   lxml.tests.test_io.IOTestCaseBase-class.html#test_write_invalid_filename
+lxml.tests.test_io.IOTestCaseBase.test_class_parse_unamed_fileobject    lxml.tests.test_io.IOTestCaseBase-class.html#test_class_parse_unamed_fileobject
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_io.IOTestCaseBase.test_module_parse_fileobject_type_error       lxml.tests.test_io.IOTestCaseBase-class.html#test_module_parse_fileobject_type_error
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase        lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_store_xslt     lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_xslt
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_call   lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_call
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_validate       lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_validate
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_from_element   lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_element
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_invalid_schema_namespace       lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_namespace
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_from_file      lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_file
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_assertValid    lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_assertValid
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_customization  lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_customization
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_phases_kwarg   lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases_kwarg
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_error_log      lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_error_log
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_invalid_schema_empty   lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_empty
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_result_report  lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_result_report
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_empty_pattern  lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_empty_pattern
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_store_schematron       lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_schematron
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_invalid_args   lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_args
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_elementtree_error      lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_elementtree_error
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_relaxng_embedded       lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_relaxng_embedded
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron        lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_abstract       lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_abstract
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_phases lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_xmlschema_embedded     lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_xmlschema_embedded
+lxml.tests.test_isoschematron.ETreeISOSchematronTestCase.test_schematron_from_tree      lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_tree
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_ns_classes lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_ns_classes
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.tearDown        lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#tearDown
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_create_element_default     lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element_default
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class   lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class-class.html
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_default_tagname    lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_default_tagname
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class      lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.setUp   lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#setUp
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_create_element     lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_element_creation   lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_element_creation
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class     lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.test_registry   lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_registry
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class     lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class.bluff       lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html#bluff
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class   lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class      lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html
+lxml.etree._Element.getprevious lxml.etree._Element-class.html#getprevious
+lxml.etree._Element.set lxml.etree._Element-class.html#set
+lxml.etree._Element.getparent   lxml.etree._Element-class.html#getparent
+lxml.etree._Element.sourceline  lxml.etree._Element-class.html#sourceline
+lxml.etree._Element.text        lxml.etree._Element-class.html#text
+lxml.etree._Element.iterfind    lxml.etree._Element-class.html#iterfind
+lxml.etree._Element._init       lxml.etree._Element-class.html#_init
+lxml.etree._Element.nsmap       lxml.etree._Element-class.html#nsmap
+lxml.etree._Element.replace     lxml.etree._Element-class.html#replace
+lxml.etree._Element.prefix      lxml.etree._Element-class.html#prefix
+lxml.etree._Element.tag lxml.etree._Element-class.html#tag
+lxml.etree._Element.iter        lxml.etree._Element-class.html#iter
+lxml.etree._Element.addnext     lxml.etree._Element-class.html#addnext
+lxml.etree._Element.addprevious lxml.etree._Element-class.html#addprevious
+lxml.etree._Element.find        lxml.etree._Element-class.html#find
+lxml.etree._Element.append      lxml.etree._Element-class.html#append
+lxml.etree._Element.getnext     lxml.etree._Element-class.html#getnext
+lxml.etree._Element.index       lxml.etree._Element-class.html#index
+lxml.etree.ElementBase.__new__  lxml.etree.ElementBase-class.html#__new__
+lxml.etree._Element.__contains__        lxml.etree._Element-class.html#__contains__
+lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class.maeh lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html#maeh
+lxml.etree._Element.findtext    lxml.etree._Element-class.html#findtext
+lxml.etree._Element.tail        lxml.etree._Element-class.html#tail
+lxml.etree._Element.getroottree lxml.etree._Element-class.html#getroottree
+lxml.etree._Element.iterdescendants     lxml.etree._Element-class.html#iterdescendants
+lxml.etree._Element.getchildren lxml.etree._Element-class.html#getchildren
+lxml.etree.ElementBase.__init__ lxml.etree.ElementBase-class.html#__init__
+lxml.etree._Element.__len__     lxml.etree._Element-class.html#__len__
+lxml.etree._Element.xpath       lxml.etree._Element-class.html#xpath
+lxml.etree._Element.__getitem__ lxml.etree._Element-class.html#__getitem__
+lxml.etree._Element.get lxml.etree._Element-class.html#get
+lxml.etree._Element.keys        lxml.etree._Element-class.html#keys
+lxml.etree._Element.__deepcopy__        lxml.etree._Element-class.html#__deepcopy__
+lxml.etree._Element.makeelement lxml.etree._Element-class.html#makeelement
+lxml.etree._Element.__iter__    lxml.etree._Element-class.html#__iter__
+lxml.etree._Element.base        lxml.etree._Element-class.html#base
+lxml.etree._Element.insert      lxml.etree._Element-class.html#insert
+lxml.etree._Element.iterchildren        lxml.etree._Element-class.html#iterchildren
+lxml.etree._Element.iterancestors       lxml.etree._Element-class.html#iterancestors
+lxml.etree._Element.extend      lxml.etree._Element-class.html#extend
+lxml.etree._Element.__delitem__ lxml.etree._Element-class.html#__delitem__
+lxml.etree._Element.__reversed__        lxml.etree._Element-class.html#__reversed__
+lxml.etree._Element.itersiblings        lxml.etree._Element-class.html#itersiblings
+lxml.etree._Element.__nonzero__ lxml.etree._Element-class.html#__nonzero__
+lxml.etree._Element.items       lxml.etree._Element-class.html#items
+lxml.etree._Element.clear       lxml.etree._Element-class.html#clear
+lxml.etree._Element.itertext    lxml.etree._Element-class.html#itertext
+lxml.etree._Element.findall     lxml.etree._Element-class.html#findall
+lxml.etree._Element.__setitem__ lxml.etree._Element-class.html#__setitem__
+lxml.etree._Element.remove      lxml.etree._Element-class.html#remove
+lxml.etree._Element.values      lxml.etree._Element-class.html#values
+lxml.etree._Element.__repr__    lxml.etree._Element-class.html#__repr__
+lxml.etree._Element.getiterator lxml.etree._Element-class.html#getiterator
+lxml.etree._Element.attrib      lxml.etree._Element-class.html#attrib
+lxml.etree._Element.__copy__    lxml.etree._Element-class.html#__copy__
+lxml.tests.test_objectify.ObjectifyTestCase     lxml.tests.test_objectify.ObjectifyTestCase-class.html
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_nested        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_nested
+lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_partial_allneg        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_allneg
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_bool_cmp  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool_cmp
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_floattelement   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_floattelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_unregistered      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_unregistered
+lxml.tests.test_objectify.ObjectifyTestCase.test_xml_base       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base
+lxml.tests.test_objectify.ObjectifyTestCase.test_pytype_annotation_use_old      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_use_old
+lxml.tests.test_objectify.ObjectifyTestCase.test_registered_types       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_types
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_data_element_nsmap_custom  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_element_nsmap_default      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_default
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_nonexistant      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_nonexistant
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_list       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_xsiannotate_ignore_old lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsiannotate_ignore_old
+lxml.tests.test_objectify.ObjectifyTestCase.test_schema_types   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_attrib_attributes_precedence      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_attrib_attributes_precedence
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_dot        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot
+lxml.tests.test_objectify.ObjectifyTestCase.test_pyannotate_use_old     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_use_old
+lxml.tests.test_objectify.ObjectifyTestCase.test_build_tree     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_build_tree
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str
+lxml.tests.test_objectify.ObjectifyTestCase.test_element_nsmap_empty    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_empty
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_dot_root_list      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_float_hash        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash
+lxml.tests.test_objectify.ObjectifyTestCase.test_setitem_string lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_hash  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_hash
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_dot_list   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_pytypes   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytypes
+lxml.tests.test_objectify.ObjectifyTestCase.test_xml_base_attribute     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base_attribute
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr_create_element     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_element
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_invalid_pytype   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_pytype
+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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_addattr_element        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr_element
+lxml.tests.test_objectify.ObjectifyTestCase.test_pyannotate_ignore_old  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_ignore_old
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_fail       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_ns lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns
+lxml.tests.test_objectify.ObjectifyTestCase.test_pyannotate_empty       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_empty
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_attrib        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_attrib
+lxml.tests.test_objectify.ObjectifyTestCase.test_class_lookup   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_class_lookup
+lxml.tests.test_objectify.ObjectifyTestCase.test_change_pytype_attribute        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_change_pytype_attribute
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_index_fail_lookup  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_lookup
+lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_partial       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path
+lxml.tests.test_objectify.ObjectifyTestCase.test_addattr_list   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_partial_wrong_length  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_wrong_length
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_default_absolute   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_absolute
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_index_fail_parse   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_parse
+lxml.tests.test_objectify.ObjectifyTestCase.test_findall_ns     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall_ns
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_ns_list    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_descendant_paths_prefix        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_prefix
+lxml.tests.test_objectify.ObjectifyTestCase.tearDown    lxml.tests.test_objectify.ObjectifyTestCase-class.html#tearDown
+lxml.tests.test_objectify.ObjectifyTestCase.test_pytype_xsitype_annotation      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_xsitype_annotation
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_elementtree     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_elementtree
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_int_hash  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int_hash
+lxml.tests.test_objectify.ObjectifyTestCase.test_parse_stringio_base_url        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_stringio_base_url
+lxml.tests.test_objectify.ObjectifyTestCase.test_setitem_string_special lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string_special
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_intliteral   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_intliteral
+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_root   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_root
+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
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_bool  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_bool
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_intelement      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_intelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_xsitypes  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle
+lxml.tests.test_objectify.ObjectifyTestCase._test_pickle        lxml.tests.test_objectify.ObjectifyTestCase-class.html#_test_pickle
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_index      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_set_create lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_element_nsmap_custom       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr
+lxml.tests.test_objectify.ObjectifyTestCase.test_xsinil_deannotate      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsinil_deannotate
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_float     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float
+lxml.tests.test_objectify.ObjectifyTestCase.test_dataelement_xsi_prefix_error   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_prefix_error
+lxml.tests.test_objectify.ObjectifyTestCase.setUp       lxml.tests.test_objectify.ObjectifyTestCase-class.html#setUp
+lxml.tests.test_objectify.ObjectifyTestCase.test_setattr        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_cmp   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_cmp
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_pytype_none      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_none
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_element_nsmap_custom_prefixes      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom_prefixes
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_index_list lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr_element    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_element
+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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_data_element_nsmap_empty   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_empty
+lxml.tests.test_objectify.ObjectifyTestCase.test_getslice_partial       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_partial
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_str       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_xsitype  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_xsitype
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_sequence      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_sequence
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr_create     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_set_element        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_element
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_str_intliteral    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_intliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_str   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_str
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_ustr      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_none  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_none
+lxml.tests.test_objectify.ObjectifyTestCase.test_str    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_str
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_syntax     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_syntax
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_bool      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_NoneType  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_NoneType
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_NoneType  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_NoneType
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_getattr_empty_ns lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr_empty_ns
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_xsitypes_xsdprefixed      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_xsdprefixed
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_float lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_float
+lxml.tests.test_objectify.ObjectifyTestCase.test_element_nsmap_default  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_default
+lxml.tests.test_objectify.ObjectifyTestCase.test_pytype_annotation_empty        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_empty
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_addattr  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_addattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_setslice_complete      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_complete
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_xsitypes_prefixed lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_prefixed
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_addattr_create_list        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_list
+lxml.tests.test_objectify.ObjectifyTestCase.XML lxml.tests.test_objectify.ObjectifyTestCase-class.html#XML
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_data_element_nsmap_custom_prefixes lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom_prefixes
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_invalid_xsi       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_invalid_xsi
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_boolelement     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_boolelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_dataelement_xsi        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi
+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_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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_floatliteral lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_floatliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_noneelement     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_noneelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_addattr        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_XML_set_base_url_docinfo       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_XML_set_base_url_docinfo
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_set        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_int       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int
+lxml.tests.test_objectify.ObjectifyTestCase.test_registered_type_stringify      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_type_stringify
+lxml.tests.test_objectify.ObjectifyTestCase.test_dir    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dir
+lxml.tests.test_objectify.ObjectifyTestCase.test_findall        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_add  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_add
+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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_int       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_unregistered      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_unregistered
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_str_floatliteral  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_floatliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_mul   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_mul
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_ustr_intliteral   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr_intliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_set_create_element lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_element
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_add   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_add
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_float     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_pytype   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_ustr_mul  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_mul
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg_invalid_xsi      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_xsi
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_getattr  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr
+lxml.tests.test_objectify.ObjectifyTestCase.test_sub_data_element_nsmap_default lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_default
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_objectify.ObjectifyTestCase.test_descendant_paths_child lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_child
+lxml.tests.test_objectify.ObjectifyTestCase.test_object_path_fail_parse_empty_list      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty_list
+lxml.tests.test_objectify.ObjectifyTestCase.test_pytype_annotation      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_int_cmp   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int_cmp
+lxml.tests.test_objectify.ObjectifyTestCase.test_pickle_strelement      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_strelement
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_set_ro   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_set_ro
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_intliteral    lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_intliteral
+lxml.tests.test_objectify.ObjectifyTestCase.test_element_nsmap_custom_prefixes  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_custom_prefixes
+lxml.tests.test_objectify.ObjectifyTestCase.test_data_element_data_element_arg  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg
+lxml.tests.test_objectify.ObjectifyTestCase.test_vars   lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_vars
+lxml.tests.test_objectify.ObjectifyTestCase.test_child  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child
+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_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_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
+lxml.tests.test_objectify.ObjectifyTestCase.test_descendant_paths       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths
+lxml.tests.test_objectify.ObjectifyTestCase.test_type_str_as_float      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_float
+lxml.tests.test_objectify.ObjectifyTestCase.test_deannotate     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_deannotate
+lxml.tests.test_objectify.ObjectifyTestCase.test_getslice_complete      lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_complete
+lxml.tests.test_objectify.ObjectifyTestCase.test_efactory_unicode       lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_unicode
+lxml.tests.test_objectify.ObjectifyTestCase.test_set_string     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_set_string
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_index_neg        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_index_neg
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_objectify.ObjectifyTestCase.test_standard_lookup        lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_standard_lookup
+lxml.tests.test_objectify.ObjectifyTestCase.test_child_iter     lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_iter
+lxml.tests.test_objectify.ObjectifyTestCase.test_countchildren  lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_countchildren
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_get_default     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get_default
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_attrib  lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_attrib
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.tearDown    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#tearDown
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getitem_neg     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem_neg
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser      lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase._setClassLookup     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#_setClassLookup
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getparent       lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getparent
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_iterchildren    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_len     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_len
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getnext lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getnext
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_iterchildren_tag        lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren_tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_prefix  lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_prefix
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getprevious     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getprevious
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_text    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_text
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase._buildElementClass  lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#_buildElementClass
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_bool    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_bool
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_tag     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.etree       lxml.etree-module.html
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getitem lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_keep_ref_assertion      lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_keep_ref_assertion
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getchildren     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getchildren
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_tail    lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tail
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_get     lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_getslice        lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getslice
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_sourceline      lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_sourceline
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.test_lookup_iter_children   lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iter_children
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase    lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_multiple_elementrees  lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_multiple_elementrees
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng       lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_stringio      lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_stringio
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_invalid_schema        lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_shortcut      lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_shortcut
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_invalid_schema4       lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema4
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_invalid_schema2       lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema2
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_invalid_schema3       lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema3
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_include       lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_include
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_elementtree_error     lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_elementtree_error
+lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_error lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_error
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_sax.ETreeSaxTestCase    lxml.tests.test_sax.ETreeSaxTestCase-class.html
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_comment     lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment
+lxml.tests.test_sax.ETreeSaxTestCase.test_element_sax_ns        lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax_ns
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_sax.ETreeSaxTestCase._saxify_unsaxify   lxml.tests.test_sax.ETreeSaxTestCase-class.html#_saxify_unsaxify
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_comment_root        lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment_root
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_error       lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_error2      lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error2
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_pi_root     lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi_root
+lxml.tests.test_sax.ETreeSaxTestCase.test_element_sax   lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_redefine_ns lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_redefine_ns
+lxml.tests.test_sax.ETreeSaxTestCase._saxify_serialize  lxml.tests.test_sax.ETreeSaxTestCase-class.html#_saxify_serialize
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_pi  lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_simple      lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_simple
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_double      lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_double
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_ns1 lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns1
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_attributes  lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_attributes
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_ns2 lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns2
+lxml.tests.test_sax.ETreeSaxTestCase.test_sax_to_pulldom        lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_sax_to_pulldom
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_handler_default_ns  lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_handler_default_ns
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_no_ns       lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_schematron.ETreeSchematronTestCase      lxml.tests.test_schematron.ETreeSchematronTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron      lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron_invalid_schema_empty lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_empty
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron_invalid_schema       lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron_elementtree_error    lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_elementtree_error
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_schematron.ETreeSchematronTestCase.test_schematron_invalid_schema_namespace     lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_namespace
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_threading.ThreadPipelineTestCase        lxml.tests.test_threading.ThreadPipelineTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.xml    lxml.tests.test_threading.ThreadPipelineTestCase-class.html#xml
+lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker   lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.item_count     lxml.tests.test_threading.ThreadPipelineTestCase-class.html#item_count
+lxml.tests.test_threading.ThreadPipelineTestCase._build_pipeline        lxml.tests.test_threading.ThreadPipelineTestCase-class.html#_build_pipeline
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker    lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker  lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker   lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker        lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.test_thread_pipeline_global_parse      lxml.tests.test_threading.ThreadPipelineTestCase-class.html#test_thread_pipeline_global_parse
+lxml.tests.test_threading.ThreadPipelineTestCase.etree  lxml.etree-module.html
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_threading.ThreadPipelineTestCase.test_thread_pipeline_thread_parse      lxml.tests.test_threading.ThreadPipelineTestCase-class.html#test_thread_pipeline_thread_parse
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker   lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__        lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.XML       lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html#XML
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run     lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.handle    lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker    lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__        lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker.XML        lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html#XML
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run     lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker.handle     lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker  lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__        lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run     lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker.handle   lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker   lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__        lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run     lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker.handle    lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker        lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__        lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run     lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker.handle lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html#handle
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.__init__        lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#__init__
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.run     lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#run
+lxml.tests.test_threading.ThreadingTestCase     lxml.tests.test_threading.ThreadingTestCase-class.html
+lxml.tests.test_threading.ThreadingTestCase.test_concurrent_class_lookup        lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_class_lookup
+lxml.tests.test_threading.ThreadingTestCase.test_thread_mix     lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_mix
+lxml.tests.test_threading.ThreadingTestCase.test_subtree_copy_thread    lxml.tests.test_threading.ThreadingTestCase-class.html#test_subtree_copy_thread
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_threading.ThreadingTestCase.test_main_xslt_in_thread    lxml.tests.test_threading.ThreadingTestCase-class.html#test_main_xslt_in_thread
+lxml.tests.test_threading.ThreadingTestCase._run_thread lxml.tests.test_threading.ThreadingTestCase-class.html#_run_thread
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_threading.ThreadingTestCase.test_concurrent_proxies     lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_proxies
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_threading.ThreadingTestCase.test_thread_create_xslt     lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_create_xslt
+lxml.tests.test_threading.ThreadingTestCase.etree       lxml.etree-module.html
+lxml.tests.test_threading.ThreadingTestCase.test_thread_xslt_attr_replace       lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_xslt_attr_replace
+lxml.tests.test_threading.ThreadingTestCase.test_thread_xslt    lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_xslt
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_threading.ThreadingTestCase.test_thread_error_log       lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_error_log
+lxml.tests.test_unicode.UnicodeTestCase lxml.tests.test_unicode.UnicodeTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_qname      lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_qname
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_xml_broken lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_xml_broken
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_nstag      lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_nstag
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_ns_invalid lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_ns_invalid
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_qname_invalid      lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_qname_invalid
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_attr       lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_attr
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_comment    lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_comment
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_tag        lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_tag
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_nstag_invalid      lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_nstag_invalid
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_parse_stringio     lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_parse_stringio
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_tag_invalid        lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_tag_invalid
+lxml.tests.test_unicode.UnicodeTestCase.test_unicode_xml        lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_xml
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase       lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.resolver_schema_int2  lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#resolver_schema_int2
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.test_xmlschema_resolvers_noroot       lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers_noroot
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver       lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.test_xmlschema_resolvers      lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.test_xmlschema_resolvers_root lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers_root
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.test_xmlschema_nested_resolvers       lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_nested_resolvers
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.resolver_schema_ext   lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#resolver_schema_ext
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.resolver_schema_int   lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#resolver_schema_int
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver       lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver.resolve       lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html#resolve
+lxml.etree.Resolver.resolve_filename    lxml.etree.Resolver-class.html#resolve_filename
+lxml.etree.Resolver.__new__     lxml.etree.Resolver-class.html#__new__
+lxml.etree.Resolver.resolve_string      lxml.etree.Resolver-class.html#resolve_string
+lxml.etree.Resolver.resolve_file        lxml.etree.Resolver-class.html#resolve_file
+lxml.etree.Resolver.resolve_empty       lxml.etree.Resolver-class.html#resolve_empty
+lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver.__init__      lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html#__init__
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase        lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_stringio        lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_stringio
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_import_file     lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_import_file
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_invalid_schema2 lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_invalid_schema2
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_invalid_schema1 lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_invalid_schema1
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_parse   lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_shortcut        lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_shortcut
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_iterparse_fail  lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_iterparse_fail
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_elementtree_error       lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_elementtree_error
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_default_attributes      lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_default_attributes
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_file    lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_file
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_parse_default_attributes_schema_config  lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_default_attributes_schema_config
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_parse_fixed_attributes  lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_fixed_attributes
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_iterparse       lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_iterparse
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase.test_xmlschema_parse_default_attributes        lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_default_attributes
+lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase        lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase.test_xpath_compile_ns  lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html#test_xpath_compile_ns
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase._test_xpath_compile_unicode    lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html#_test_xpath_compile_unicode
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase  lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_compile_vars  lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_vars
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_elementtree_error     lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_elementtree_error
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_compile_doc   lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_doc
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_compile_error lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_error
+lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase.test_xpath_compile_element       lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_element
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase  lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html
+lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase.test_xpath_exslt_functions_date  lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html#test_xpath_exslt_functions_date
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase.NSMAP    lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html#NSMAP
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase.test_xpath_exslt_functions_strings       lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html#test_xpath_exslt_functions_strings
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase       lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_comment       lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_comment
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_boolean    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_boolean
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_prefix_error       lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_prefix_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_elementtree_getpath_partial      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath_partial
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_evaluator_element  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_element
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_attribute_parent      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute_parent
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_elementtree_getpath      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_text_parent   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text_parent
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_error      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_variables  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_variables
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_eval_context_propagation   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_eval_context_propagation
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_elements      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_elements
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_namespace  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_namespace
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_evaluator_tree     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_tree
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_unicode_text_parent   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_unicode_text_parent
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_mix     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_mix
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_attribute     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_namespace_empty    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_namespace_empty
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_eval_context_clear lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_eval_context_clear
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_nothing       lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_nothing
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_class_error        lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_class_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_nodes   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_variables_nodeset  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_variables_nodeset
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_nodes_append2   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes_append2
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_string     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_string
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_ns_none    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns_none
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_text  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_attribute_parent_no_smart_strings     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute_parent_no_smart_strings
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_document_root      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_document_root
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_wrong_args      lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_wrong_args
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_evaluator  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_text_from_other_document   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_text_from_other_document
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_number     lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_number
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_ns_empty   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns_empty
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_rel_xpath_list_elements  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_list_elements
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_nodes_append    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes_append
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_list_text_parent_no_smart_strings  lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text_parent_no_smart_strings
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_rel_xpath_boolean        lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_boolean
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_evaluator_tree_absolute    lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_tree_absolute
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_class_prefix_error lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_class_prefix_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_context_node       lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_context_node
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_extensions_error   lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_error
+lxml.tests.test_xpathevaluator.ETreeXPathTestCase.test_xpath_ns lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase        lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_content lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_content
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node     lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase._test_extension_element_attribute_context      lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#_test_extension_element_attribute_context
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_append_only
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_apply_templates lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_process_children        lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node_doc
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise     lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_read_only_raise
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context      lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_comment_pi_context
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_doc_context     lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_doc_context
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_raise   lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_raise
+lxml.tests.test_xslt.ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element      lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_with_subextension_element
+lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase   lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase.test_extensions2  lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions2
+lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase.test_extensions1  lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions1
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment        lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_variable_result_tree_fragment
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xslt.ETreeXSLTTestCase  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameter_xpath        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_default_parameters     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_default_parameters
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_repeat_transform       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_repeat_transform
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_set_replace lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_replace
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get_all     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_html_output    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_html_output
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_match  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_match
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameter_invalid      lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_invalid
+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_exslt_regexp_match1 lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_match1
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_message        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_match2 lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_match2
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_str   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_str
+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
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_resolver_url_building  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_resolver_url_building
+lxml.tests.test_xslt.ETreeXSLTTestCase._test_exslt_regexp_match4        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#_test_exslt_regexp_match4
+lxml.tests.test_xslt.ETreeXSLTTestCase._test_exslt_regexp_match3        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#_test_exslt_regexp_match3
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_replace        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_replace
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_broken lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_broken
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_copy   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_copy
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_input_none     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_none
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameter_xpath_object lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath_object
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get_unknown lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_unknown
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_multiple_transforms    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_transforms
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_test   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_test
+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_exslt_math  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_math
+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
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_multiple_elementrees        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_multiple_elementrees
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_input_partial_doc      lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_partial_doc
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_include        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_str_attribute_replace lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_str_attribute_replace
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_embedded_id lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_id
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_exslt_regexp_match_groups   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_exslt_regexp_match_groups
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_parse_deny    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_XML_resolver  lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML_resolver
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_move_result    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_move_result
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_string_parameters      lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_string_parameters
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_parse_deny_all        lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny_all
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_elementtree   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_elementtree
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_multiple_parameters    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_parameters
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameters     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameters
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_XML   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid      lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_xmlid
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_set_new     lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_new
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_document_parse lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_utf8   lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_utf8
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_encoding       lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_encoding
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get_all_reversed    lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all_reversed
+lxml.tests.test_xslt.Py3XSLTTestCase    lxml.tests.test_xslt.Py3XSLTTestCase-class.html
+lxml.tests.common_imports.HelperTestCase.tearDown       lxml.tests.common_imports.HelperTestCase-class.html#tearDown
+lxml.tests.common_imports.HelperTestCase.parse  lxml.tests.common_imports.HelperTestCase-class.html#parse
+unittest.TestCase.failureException      exceptions.AssertionError-class.html
+lxml.tests.test_xslt.Py3XSLTTestCase.test_xslt_result_bytearray lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytearray
+lxml.tests.test_xslt.Py3XSLTTestCase.test_xslt_result_memoryview        lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_memoryview
+lxml.tests.common_imports.HelperTestCase._rootstring    lxml.tests.common_imports.HelperTestCase-class.html#_rootstring
+lxml.tests.test_xslt.Py3XSLTTestCase.test_xslt_result_bytes     lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytes
+lxml.tests.common_imports.HelperTestCase.assertFalse    lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
+xml.etree.ElementTree.ElementTree       xml.etree.ElementTree.ElementTree-class.html
+xml.etree.ElementTree.ElementTree.parse xml.etree.ElementTree.ElementTree-class.html#parse
+xml.etree.ElementTree.ElementTree.getroot       xml.etree.ElementTree.ElementTree-class.html#getroot
+xml.etree.ElementTree.ElementTree.getiterator   xml.etree.ElementTree.ElementTree-class.html#getiterator
+xml.etree.ElementTree.ElementTree.findtext      xml.etree.ElementTree.ElementTree-class.html#findtext
+xml.etree.ElementTree.ElementTree.find  xml.etree.ElementTree.ElementTree-class.html#find
+xml.etree.ElementTree.ElementTree.write xml.etree.ElementTree.ElementTree-class.html#write
+xml.etree.ElementTree.ElementTree._setroot      xml.etree.ElementTree.ElementTree-class.html#_setroot
+xml.etree.ElementTree.ElementTree._write        xml.etree.ElementTree.ElementTree-class.html#_write
+xml.etree.ElementTree.ElementTree.findall       xml.etree.ElementTree.ElementTree-class.html#findall
+xml.etree.ElementTree.ElementTree.__init__      xml.etree.ElementTree.ElementTree-class.html#__init__
+xml.etree.ElementTree.QName     xml.etree.ElementTree.QName-class.html
+xml.etree.ElementTree.QName.__hash__    xml.etree.ElementTree.QName-class.html#__hash__
+xml.etree.ElementTree.QName.__str__     xml.etree.ElementTree.QName-class.html#__str__
+xml.etree.ElementTree.QName.__init__    xml.etree.ElementTree.QName-class.html#__init__
+xml.etree.ElementTree.QName.__cmp__     xml.etree.ElementTree.QName-class.html#__cmp__
+xml.etree.ElementTree.TreeBuilder       xml.etree.ElementTree.TreeBuilder-class.html
+xml.etree.ElementTree.TreeBuilder.end   xml.etree.ElementTree.TreeBuilder-class.html#end
+xml.etree.ElementTree.TreeBuilder.start xml.etree.ElementTree.TreeBuilder-class.html#start
+xml.etree.ElementTree.TreeBuilder._flush        xml.etree.ElementTree.TreeBuilder-class.html#_flush
+xml.etree.ElementTree.TreeBuilder.close xml.etree.ElementTree.TreeBuilder-class.html#close
+xml.etree.ElementTree.TreeBuilder.data  xml.etree.ElementTree.TreeBuilder-class.html#data
+xml.etree.ElementTree.TreeBuilder.__init__      xml.etree.ElementTree.TreeBuilder-class.html#__init__
+xml.etree.ElementTree.XMLTreeBuilder    xml.etree.ElementTree.XMLTreeBuilder-class.html
+xml.etree.ElementTree.XMLTreeBuilder.feed       xml.etree.ElementTree.XMLTreeBuilder-class.html#feed
+xml.etree.ElementTree.XMLTreeBuilder._start     xml.etree.ElementTree.XMLTreeBuilder-class.html#_start
+xml.etree.ElementTree.XMLTreeBuilder.doctype    xml.etree.ElementTree.XMLTreeBuilder-class.html#doctype
+xml.etree.ElementTree.XMLTreeBuilder._end       xml.etree.ElementTree.XMLTreeBuilder-class.html#_end
+xml.etree.ElementTree.XMLTreeBuilder._fixtext   xml.etree.ElementTree.XMLTreeBuilder-class.html#_fixtext
+xml.etree.ElementTree.XMLTreeBuilder._fixname   xml.etree.ElementTree.XMLTreeBuilder-class.html#_fixname
+xml.etree.ElementTree.XMLTreeBuilder.close      xml.etree.ElementTree.XMLTreeBuilder-class.html#close
+xml.etree.ElementTree.XMLTreeBuilder._data      xml.etree.ElementTree.XMLTreeBuilder-class.html#_data
+xml.etree.ElementTree.XMLTreeBuilder._start_list        xml.etree.ElementTree.XMLTreeBuilder-class.html#_start_list
+xml.etree.ElementTree.XMLTreeBuilder._default   xml.etree.ElementTree.XMLTreeBuilder-class.html#_default
+xml.etree.ElementTree.XMLTreeBuilder.__init__   xml.etree.ElementTree.XMLTreeBuilder-class.html#__init__
+xml.etree.ElementTree._ElementInterface xml.etree.ElementTree._ElementInterface-class.html
+xml.etree.ElementTree._ElementInterface.set     xml.etree.ElementTree._ElementInterface-class.html#set
+xml.etree.ElementTree._ElementInterface.__getslice__    xml.etree.ElementTree._ElementInterface-class.html#__getslice__
+xml.etree.ElementTree._ElementInterface.text    xml.etree.ElementTree._ElementInterface-class.html#text
+xml.etree.ElementTree._ElementInterface.tag     xml.etree.ElementTree._ElementInterface-class.html#tag
+xml.etree.ElementTree._ElementInterface.find    xml.etree.ElementTree._ElementInterface-class.html#find
+xml.etree.ElementTree._ElementInterface.__init__        xml.etree.ElementTree._ElementInterface-class.html#__init__
+xml.etree.ElementTree._ElementInterface.__delslice__    xml.etree.ElementTree._ElementInterface-class.html#__delslice__
+xml.etree.ElementTree._ElementInterface.findtext        xml.etree.ElementTree._ElementInterface-class.html#findtext
+xml.etree.ElementTree._ElementInterface.tail    xml.etree.ElementTree._ElementInterface-class.html#tail
+xml.etree.ElementTree._ElementInterface.findall xml.etree.ElementTree._ElementInterface-class.html#findall
+xml.etree.ElementTree._ElementInterface.getchildren     xml.etree.ElementTree._ElementInterface-class.html#getchildren
+xml.etree.ElementTree._ElementInterface.append  xml.etree.ElementTree._ElementInterface-class.html#append
+xml.etree.ElementTree._ElementInterface.__delitem__     xml.etree.ElementTree._ElementInterface-class.html#__delitem__
+xml.etree.ElementTree._ElementInterface.__len__ xml.etree.ElementTree._ElementInterface-class.html#__len__
+xml.etree.ElementTree._ElementInterface.__getitem__     xml.etree.ElementTree._ElementInterface-class.html#__getitem__
+xml.etree.ElementTree._ElementInterface.get     xml.etree.ElementTree._ElementInterface-class.html#get
+xml.etree.ElementTree._ElementInterface.keys    xml.etree.ElementTree._ElementInterface-class.html#keys
+xml.etree.ElementTree._ElementInterface.makeelement     xml.etree.ElementTree._ElementInterface-class.html#makeelement
+xml.etree.ElementTree._ElementInterface.__setitem__     xml.etree.ElementTree._ElementInterface-class.html#__setitem__
+xml.etree.ElementTree._ElementInterface.insert  xml.etree.ElementTree._ElementInterface-class.html#insert
+xml.etree.ElementTree._ElementInterface.items   xml.etree.ElementTree._ElementInterface-class.html#items
+xml.etree.ElementTree._ElementInterface.__setslice__    xml.etree.ElementTree._ElementInterface-class.html#__setslice__
+xml.etree.ElementTree._ElementInterface.remove  xml.etree.ElementTree._ElementInterface-class.html#remove
+xml.etree.ElementTree._ElementInterface.__repr__        xml.etree.ElementTree._ElementInterface-class.html#__repr__
+xml.etree.ElementTree._ElementInterface.getiterator     xml.etree.ElementTree._ElementInterface-class.html#getiterator
+xml.etree.ElementTree._ElementInterface.attrib  xml.etree.ElementTree._ElementInterface-class.html#attrib
+xml.etree.ElementTree._ElementInterface.clear   xml.etree.ElementTree._ElementInterface-class.html#clear
+xml.etree.ElementTree._SimpleElementPath        xml.etree.ElementTree._SimpleElementPath-class.html
+xml.etree.ElementTree._SimpleElementPath.findtext       xml.etree.ElementTree._SimpleElementPath-class.html#findtext
+xml.etree.ElementTree._SimpleElementPath.find   xml.etree.ElementTree._SimpleElementPath-class.html#find
+xml.etree.ElementTree._SimpleElementPath.findall        xml.etree.ElementTree._SimpleElementPath-class.html#findall
+xml.etree.ElementTree.iterparse xml.etree.ElementTree.iterparse-class.html
+xml.etree.ElementTree.iterparse.__iter__        xml.etree.ElementTree.iterparse-class.html#__iter__
+xml.etree.ElementTree.iterparse.__init__        xml.etree.ElementTree.iterparse-class.html#__init__
+xml.etree.ElementTree.iterparse.next    xml.etree.ElementTree.iterparse-class.html#next</p>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="../../main.html">
+              <img class="logo" src="../../_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="../../_sources/html/api/api-objects.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="../../search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../../genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="../../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/html5parser.html b/doc/sphinx/html5parser.html
new file mode 100644 (file)
index 0000000..7bc4924
--- /dev/null
@@ -0,0 +1,163 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>html5lib Parser &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="html5lib-parser">
+<h1>html5lib Parser<a class="headerlink" href="#html5lib-parser" title="Permalink to this headline">¶</a></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
+HTML5 specification</a>.</p>
+<p>lxml can benefit from the parsing capabilities of <cite>html5lib</cite> through
+the <tt class="docutils literal"><span class="pre">lxml.html.html5parser</span></tt> module.  It provides a similar interface
+to the <tt class="docutils literal"><span class="pre">lxml.html</span></tt> module by providing <tt class="docutils literal"><span class="pre">fromstring()</span></tt>,
+<tt class="docutils literal"><span class="pre">parse()</span></tt>, <tt class="docutils literal"><span class="pre">document_fromstring()</span></tt>, <tt class="docutils literal"><span class="pre">fragment_fromstring()</span></tt> and
+<tt class="docutils literal"><span class="pre">fragments_fromstring()</span></tt> that work like the regular html parsing
+functions.</p>
+<div class="section" id="differences-to-regular-html-parsing">
+<h2>Differences to regular HTML parsing<a class="headerlink" href="#differences-to-regular-html-parsing" title="Permalink to this headline">¶</a></h2>
+<p>There are a few differences in the returned tree to the regular HTML
+parsing functions from <tt class="docutils literal"><span class="pre">lxml.html</span></tt>.  html5lib normalizes some elements
+and element structures to a common format.  For example even if a tables
+does not have a <cite>tbody</cite> html5lib will inject one automatically:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html</span> <span class="kn">import</span> <span class="n">tostring</span><span class="p">,</span> <span class="n">html5parser</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tostring</span><span class="p">(</span><span class="n">html5parser</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&lt;table&gt;&lt;td&gt;foo&quot;</span><span class="p">))</span>
+<span class="go">&#39;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;foo&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#39;</span>
+</pre></div>
+</div>
+<p>Also the parameters the functions accept are different.</p>
+</div>
+<div class="section" id="function-reference">
+<h2>Function Reference<a class="headerlink" href="#function-reference" title="Permalink to this headline">¶</a></h2>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">parse(filename_url_or_file)</span></tt>:</dt>
+<dd>Parses the named file or url, or if the object has a <tt class="docutils literal"><span class="pre">.read()</span></tt>
+method, parses from that.</dd>
+<dt><tt class="docutils literal"><span class="pre">document_fromstring(html,</span> <span class="pre">guess_charset=True)</span></tt>:</dt>
+<dd><p class="first">Parses a document from the given string.  This always creates a
+correct HTML document, which means the parent node is <tt class="docutils literal"><span class="pre">&lt;html&gt;</span></tt>,
+and there is a body and possibly a head.</p>
+<p class="last">If a bytestring is passed and <tt class="docutils literal"><span class="pre">guess_charset</span></tt> is true the chardet
+library (if installed) will guess the charset if ambiguities exist.</p>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">fragment_fromstring(string,</span> <span class="pre">create_parent=False,</span> <span class="pre">guess_charset=False)</span></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"><span class="pre">create_parent</span></tt> is given;
+e.g,. <tt class="docutils literal"><span class="pre">fragment_fromstring(string,</span> <span class="pre">create_parent='div')</span></tt> will
+wrap the element in a <tt class="docutils literal"><span class="pre">&lt;div&gt;</span></tt>.  If <tt class="docutils literal"><span class="pre">create_parent</span></tt> is true the
+default parent tag (div) is used.</p>
+<p class="last">If a bytestring is passed and <tt class="docutils literal"><span class="pre">guess_charset</span></tt> is true the chardet
+library (if installed) will guess the charset if ambiguities exist.</p>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">fragments_fromstring(string,</span> <span class="pre">no_leading_text=False,</span> <span class="pre">parser=None)</span></tt>:</dt>
+<dd><p class="first">Returns a list of the elements found in the fragment.  The first item in
+the list may be a string.  If <tt class="docutils literal"><span class="pre">no_leading_text</span></tt> is true, then it will
+be an error if there is leading text, and it will always be a list of
+only elements.</p>
+<p class="last">If a bytestring is passed and <tt class="docutils literal"><span class="pre">guess_charset</span></tt> is true the chardet
+library (if installed) will guess the charset if ambiguities exist.</p>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">fromstring(string)</span></tt>:</dt>
+<dd>Returns <tt class="docutils literal"><span class="pre">document_fromstring</span></tt> or <tt class="docutils literal"><span class="pre">fragment_fromstring</span></tt>, based
+on whether the string looks like a full document, or just a
+fragment.</dd>
+</dl>
+<p>Additionally all parsing functions accept an <tt class="docutils literal"><span class="pre">parser</span></tt> keyword argument
+that can be set to a custom parser instance.  To create custom parsers
+you can subclass the <tt class="docutils literal"><span class="pre">HTMLParser</span></tt> and <tt class="docutils literal"><span class="pre">XHTMLParser</span></tt> from the same
+module.  Note that these are the parser classes provided by html5lib.</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">html5lib Parser</a><ul>
+<li><a class="reference internal" href="#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li>
+<li><a class="reference internal" href="#function-reference">Function Reference</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/html5parser.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/index.html b/doc/sphinx/index.html
new file mode 100644 (file)
index 0000000..8dc3835
--- /dev/null
@@ -0,0 +1,257 @@
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title><no title> &mdash; lxml v2.3 documentation</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="shortcut icon" href="_static/favicon.ico"/>
+    <link rel="top" title="lxml v2.3 documentation" href="#" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 documentation</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <p>Contents:</p>
+<ul>
+<li class="toctree-l1"><a class="reference external" href="api.html">APIs specific to lxml.etree</a><ul>
+<li class="toctree-l2"><a class="reference external" href="api.html#lxml-etree">lxml.etree</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#other-element-apis">Other Element APIs</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#trees-and-documents">Trees and Documents</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#iteration">Iteration</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#error-logging">Error logging</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#serialisation">Serialisation</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#cdata">CDATA</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="build.html">How to build lxml from source</a><ul>
+<li class="toctree-l2"><a class="reference external" href="build.html#cython">Cython</a></li>
+<li class="toctree-l2"><a class="reference external" href="build.html#github-git-and-hg">Github, git and hg</a></li>
+<li class="toctree-l2"><a class="reference external" href="build.html#id2">Setuptools</a></li>
+<li class="toctree-l2"><a class="reference external" href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li>
+<li class="toctree-l2"><a class="reference external" href="build.html#building-an-egg">Building an egg</a></li>
+<li class="toctree-l2"><a class="reference external" href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li>
+<li class="toctree-l2"><a class="reference external" href="build.html#static-linking-on-windows">Static linking on Windows</a></li>
+<li class="toctree-l2"><a class="reference external" href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="capi.html">The public C-API of lxml.etree</a><ul>
+<li class="toctree-l2"><a class="reference external" href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li>
+<li class="toctree-l2"><a class="reference external" href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="compatibility.html">ElementTree compatibility of lxml.etree</a></li>
+<li class="toctree-l1"><a class="reference external" href="cssselect.html">lxml.cssselect</a><ul>
+<li class="toctree-l2"><a class="reference external" href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li>
+<li class="toctree-l2"><a class="reference external" href="cssselect.html#css-selectors">CSS Selectors</a></li>
+<li class="toctree-l2"><a class="reference external" href="cssselect.html#namespaces">Namespaces</a></li>
+<li class="toctree-l2"><a class="reference external" href="cssselect.html#limitations">Limitations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="element_classes.html">Using custom Element classes in lxml</a><ul>
+<li class="toctree-l2"><a class="reference external" href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li>
+<li class="toctree-l2"><a class="reference external" href="element_classes.html#element-initialization">Element initialization</a></li>
+<li class="toctree-l2"><a class="reference external" href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li>
+<li class="toctree-l2"><a class="reference external" href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li>
+<li class="toctree-l2"><a class="reference external" href="element_classes.html#id1">Implementing namespaces</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="elementsoup.html">BeautifulSoup Parser</a><ul>
+<li class="toctree-l2"><a class="reference external" href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li>
+<li class="toctree-l2"><a class="reference external" href="elementsoup.html#entity-handling">Entity handling</a></li>
+<li class="toctree-l2"><a class="reference external" href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li>
+<li class="toctree-l2"><a class="reference external" href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="extensions.html">Python extensions for XPath and XSLT</a><ul>
+<li class="toctree-l2"><a class="reference external" href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li>
+<li class="toctree-l2"><a class="reference external" href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul>
+<li class="toctree-l2"><a class="reference external" href="FAQ.html#general-questions">General Questions</a></li>
+<li class="toctree-l2"><a class="reference external" href="FAQ.html#installation">Installation</a></li>
+<li class="toctree-l2"><a class="reference external" href="FAQ.html#contributing">Contributing</a></li>
+<li class="toctree-l2"><a class="reference external" href="FAQ.html#bugs">Bugs</a></li>
+<li class="toctree-l2"><a class="reference external" href="FAQ.html#id1">Threading</a></li>
+<li class="toctree-l2"><a class="reference external" href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li>
+<li class="toctree-l2"><a class="reference external" href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="html5parser.html">html5lib Parser</a><ul>
+<li class="toctree-l2"><a class="reference external" href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li>
+<li class="toctree-l2"><a class="reference external" href="html5parser.html#function-reference">Function Reference</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="intro.html">Why lxml?</a><ul>
+<li class="toctree-l2"><a class="reference external" href="intro.html#motto">Motto</a></li>
+<li class="toctree-l2"><a class="reference external" href="intro.html#aims">Aims</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="lxml2.html">What&#8217;s new in lxml 2.0?</a><ul>
+<li class="toctree-l2"><a class="reference external" href="lxml2.html#changes-in-etree-and-objectify">Changes in etree and objectify</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxml2.html#new-modules">New modules</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="lxmlhtml.html">lxml.html</a><ul>
+<li class="toctree-l2"><a class="reference external" href="lxmlhtml.html#parsing-html">Parsing HTML</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxmlhtml.html#working-with-links">Working with links</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxmlhtml.html#forms">Forms</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxmlhtml.html#html-diff">HTML Diff</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxmlhtml.html#examples">Examples</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="lxml-source-howto.html">How to read the source of lxml</a><ul>
+<li class="toctree-l2"><a class="reference external" href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxml-source-howto.html#where-to-start">Where to start?</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxml-source-howto.html#python-modules">Python modules</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li>
+<li class="toctree-l2"><a class="reference external" href="lxml-source-howto.html#lxml-html">lxml.html</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="memorymanagement.html">Memory management</a></li>
+<li class="toctree-l1"><a class="reference external" href="objectify.html">lxml.objectify</a><ul>
+<li class="toctree-l2"><a class="reference external" href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li>
+<li class="toctree-l2"><a class="reference external" href="objectify.html#asserting-a-schema">Asserting a Schema</a></li>
+<li class="toctree-l2"><a class="reference external" href="objectify.html#objectpath">ObjectPath</a></li>
+<li class="toctree-l2"><a class="reference external" href="objectify.html#python-data-types">Python data types</a></li>
+<li class="toctree-l2"><a class="reference external" href="objectify.html#how-data-types-are-matched">How data types are matched</a></li>
+<li class="toctree-l2"><a class="reference external" href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="parsing.html">Parsing XML and HTML with lxml</a><ul>
+<li class="toctree-l2"><a class="reference external" href="parsing.html#parsers">Parsers</a></li>
+<li class="toctree-l2"><a class="reference external" href="parsing.html#the-target-parser-interface">The target parser interface</a></li>
+<li class="toctree-l2"><a class="reference external" href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li>
+<li class="toctree-l2"><a class="reference external" href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li>
+<li class="toctree-l2"><a class="reference external" href="parsing.html#python-unicode-strings">Python unicode strings</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="performance.html">Benchmarks and Speed</a><ul>
+<li class="toctree-l2"><a class="reference external" href="performance.html#general-notes">General notes</a></li>
+<li class="toctree-l2"><a class="reference external" href="performance.html#how-to-read-the-timings">How to read the timings</a></li>
+<li class="toctree-l2"><a class="reference external" href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li>
+<li class="toctree-l2"><a class="reference external" href="performance.html#the-elementtree-api">The ElementTree API</a></li>
+<li class="toctree-l2"><a class="reference external" href="performance.html#xpath">XPath</a></li>
+<li class="toctree-l2"><a class="reference external" href="performance.html#a-longer-example">A longer example</a></li>
+<li class="toctree-l2"><a class="reference external" href="performance.html#lxml-objectify">lxml.objectify</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="resolvers.html">Document loading and URL resolving</a><ul>
+<li class="toctree-l2"><a class="reference external" href="resolvers.html#xml-catalogs">XML Catalogs</a></li>
+<li class="toctree-l2"><a class="reference external" href="resolvers.html#uri-resolvers">URI Resolvers</a></li>
+<li class="toctree-l2"><a class="reference external" href="resolvers.html#document-loading-in-context">Document loading in context</a></li>
+<li class="toctree-l2"><a class="reference external" href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="sax.html">Sax support</a><ul>
+<li class="toctree-l2"><a class="reference external" href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li>
+<li class="toctree-l2"><a class="reference external" href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li>
+<li class="toctree-l2"><a class="reference external" href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="tutorial.html">The lxml.etree Tutorial</a><ul>
+<li class="toctree-l2"><a class="reference external" href="tutorial.html#the-element-class">The Element class</a></li>
+<li class="toctree-l2"><a class="reference external" href="tutorial.html#the-elementtree-class">The ElementTree class</a></li>
+<li class="toctree-l2"><a class="reference external" href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li>
+<li class="toctree-l2"><a class="reference external" href="tutorial.html#namespaces">Namespaces</a></li>
+<li class="toctree-l2"><a class="reference external" href="tutorial.html#the-e-factory">The E-factory</a></li>
+<li class="toctree-l2"><a class="reference external" href="tutorial.html#elementpath">ElementPath</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="validation.html">Validation with lxml</a><ul>
+<li class="toctree-l2"><a class="reference external" href="validation.html#validation-at-parse-time">Validation at parse time</a></li>
+<li class="toctree-l2"><a class="reference external" href="validation.html#id1">DTD</a></li>
+<li class="toctree-l2"><a class="reference external" href="validation.html#relaxng">RelaxNG</a></li>
+<li class="toctree-l2"><a class="reference external" href="validation.html#xmlschema">XMLSchema</a></li>
+<li class="toctree-l2"><a class="reference external" href="validation.html#id2">Schematron</a></li>
+<li class="toctree-l2"><a class="reference external" href="validation.html#id3">(Pre-ISO-Schematron)</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external" href="xpathxslt.html">XPath and XSLT with lxml</a><ul>
+<li class="toctree-l2"><a class="reference external" href="xpathxslt.html#xpath">XPath</a></li>
+<li class="toctree-l2"><a class="reference external" href="xpathxslt.html#xslt">XSLT</a></li>
+</ul>
+</li>
+</ul>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="_sources/index.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 documentation</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/intro.html b/doc/sphinx/intro.html
new file mode 100644 (file)
index 0000000..524a57b
--- /dev/null
@@ -0,0 +1,157 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Why lxml? &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="why-lxml">
+<h1><a class="toc-backref" href="#id1">Why lxml?</a><a class="headerlink" href="#why-lxml" title="Permalink to this headline">¶</a></h1>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#why-lxml" id="id1">Why lxml?</a><ul>
+<li><a class="reference internal" href="#motto" id="id2">Motto</a></li>
+<li><a class="reference internal" href="#aims" id="id3">Aims</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="motto">
+<h2><a class="toc-backref" href="#id2">Motto</a><a class="headerlink" href="#motto" title="Permalink to this headline">¶</a></h2>
+<p>&#8220;the thrills without the strangeness&#8221;</p>
+<p>To explain the motto:</p>
+<p>&#8220;Programming with libxml2 is like the thrilling embrace of an exotic stranger.
+It seems to have the potential to fulfill your wildest dreams, but there&#8217;s a
+nagging voice somewhere in your head warning you that you&#8217;re about to get
+screwed in the worst way.&#8221;  (<a class="reference external" href="http://diveintomark.org/archives/2004/02/18/libxml2">a quote by Mark Pilgrim</a>)</p>
+<p>Mark Pilgrim was describing in particular the experience a Python programmer
+has when dealing with libxml2.  The default Python bindings of libxml2 are
+fast, thrilling, powerful, and your code might fail in some horrible way that
+you really shouldn&#8217;t have to worry about when writing Python code.  lxml
+combines the power of libxml2 with the ease of use of Python.</p>
+</div>
+<div class="section" id="aims">
+<h2><a class="toc-backref" href="#id3">Aims</a><a class="headerlink" href="#aims" title="Permalink to this headline">¶</a></h2>
+<p>The C libraries <a class="reference external" href="http://www.xmlsoft.org">libxml2</a> and <a class="reference external" href="http://xmlsoft.org/XSLT">libxslt</a> have huge benefits:</p>
+<ul class="simple">
+<li>Standards-compliant XML support.</li>
+<li>Support for (broken) HTML.</li>
+<li>Full-featured.</li>
+<li>Actively maintained by XML experts.</li>
+<li>fast. fast! FAST!</li>
+</ul>
+<p>These libraries already ship with Python bindings, but these Python bindings
+mimic the C-level interface.  This yields a number of problems:</p>
+<ul class="simple">
+<li>very low level and C-ish (not Pythonic).</li>
+<li>underdocumented and huge, you get lost in them.</li>
+<li>UTF-8 in API, instead of Python unicode strings.</li>
+<li>Can easily cause segfaults from Python.</li>
+<li>Require manual memory management!</li>
+</ul>
+<p>lxml is a new Python binding for libxml2 and libxslt, completely independent
+from these existing Python bindings.  Its aims:</p>
+<ul class="simple">
+<li>Pythonic API.</li>
+<li>Documented.</li>
+<li>Use Python unicode strings in API.</li>
+<li>Safe (no segfaults).</li>
+<li>No manual memory management!</li>
+</ul>
+<p>lxml aims to provide a Pythonic API by following as much as possible the
+<a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree API</a>.  We&#8217;re trying to avoid inventing too many new APIs, or you
+having to learn new things &#8211; XML is complicated enough.</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Why lxml?</a><ul>
+<li><a class="reference internal" href="#motto">Motto</a></li>
+<li><a class="reference internal" href="#aims">Aims</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/intro.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/licenses/BSD.html b/doc/sphinx/licenses/BSD.html
new file mode 100644 (file)
index 0000000..e312bb5
--- /dev/null
@@ -0,0 +1,115 @@
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title><no title> &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '2.3',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="shortcut icon" href="../_static/favicon.ico"/>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="../index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <p>Copyright (c) 2004 Infrae. All rights reserved.</p>
+<p>Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:</p>
+<blockquote>
+<ol class="arabic simple">
+<li>Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.</li>
+<li>Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.</li>
+<li>Neither the name of Infrae nor the names of its contributors may
+be used to endorse or promote products derived from this software
+without specific prior written permission.</li>
+</ol>
+</blockquote>
+<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+&#8220;AS IS&#8221; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INFRAE OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="../main.html">
+              <img class="logo" src="../_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../_sources/licenses/BSD.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/licenses/GPL.html b/doc/sphinx/licenses/GPL.html
new file mode 100644 (file)
index 0000000..429180f
--- /dev/null
@@ -0,0 +1,457 @@
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title><no title> &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '2.3',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="shortcut icon" href="../_static/favicon.ico"/>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="../index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <blockquote>
+<blockquote>
+<dl class="docutils">
+<dt>GNU GENERAL PUBLIC LICENSE</dt>
+<dd>Version 2, June 1991</dd>
+</dl>
+</blockquote>
+<dl class="docutils">
+<dt>Copyright (C) 1989, 1991 Free Software Foundation, Inc.</dt>
+<dd>59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</dd>
+</dl>
+<p>Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.</p>
+<blockquote>
+<blockquote>
+Preamble</blockquote>
+<p>The licenses for most software are designed to take away your</p>
+</blockquote>
+</blockquote>
+<p>freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software&#8211;to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation&#8217;s software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.</p>
+<blockquote>
+When we speak of free software, we are referring to freedom, not</blockquote>
+<p>price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.</p>
+<blockquote>
+To protect your rights, we need to make restrictions that forbid</blockquote>
+<p>anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.</p>
+<blockquote>
+For example, if you distribute copies of such a program, whether</blockquote>
+<p>gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.</p>
+<blockquote>
+We protect your rights with two steps: (1) copyright the software, and</blockquote>
+<p>(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.</p>
+<blockquote>
+Also, for each author&#8217;s protection and ours, we want to make certain</blockquote>
+<p>that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors&#8217; reputations.</p>
+<blockquote>
+Finally, any free program is threatened constantly by software</blockquote>
+<p>patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone&#8217;s free use or not licensed at all.</p>
+<blockquote>
+The precise terms and conditions for copying, distribution and</blockquote>
+<p>modification follow.</p>
+<blockquote>
+<blockquote>
+<blockquote>
+GNU GENERAL PUBLIC LICENSE</blockquote>
+<p>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</p>
+</blockquote>
+<ol class="arabic simple" start="0">
+<li>This License applies to any program or other work which contains</li>
+</ol>
+</blockquote>
+<p>a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The &#8220;Program&#8221;, below,
+refers to any such program or work, and a &#8220;work based on the Program&#8221;
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term &#8220;modification&#8221;.)  Each licensee is addressed as &#8220;you&#8221;.</p>
+<p>Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.</p>
+<blockquote>
+<ol class="arabic simple">
+<li>You may copy and distribute verbatim copies of the Program&#8217;s</li>
+</ol>
+</blockquote>
+<p>source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.</p>
+<p>You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.</p>
+<blockquote>
+<ol class="arabic simple" start="2">
+<li>You may modify your copy or copies of the Program or any portion</li>
+</ol>
+</blockquote>
+<p>of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:</p>
+<blockquote>
+<p>a) You must cause the modified files to carry prominent notices
+stating that you changed the files and the date of any change.</p>
+<p>b) You must cause any work that you distribute or publish, that in
+whole or in part contains or is derived from the Program or any
+part thereof, to be licensed as a whole at no charge to all third
+parties under the terms of this License.</p>
+<p>c) If the modified program normally reads commands interactively
+when run, you must cause it, when started running for such
+interactive use in the most ordinary way, to print or display an
+announcement including an appropriate copyright notice and a
+notice that there is no warranty (or else, saying that you provide
+a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this
+License.  (Exception: if the Program itself is interactive but
+does not normally print such an announcement, your work based on
+the Program is not required to print an announcement.)</p>
+</blockquote>
+<p>These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.</p>
+<p>Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.</p>
+<p>In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.</p>
+<blockquote>
+<ol class="arabic simple" start="3">
+<li>You may copy and distribute the Program (or a work based on it,</li>
+</ol>
+</blockquote>
+<p>under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:</p>
+<blockquote>
+<p>a) Accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of Sections
+1 and 2 above on a medium customarily used for software interchange; or,</p>
+<p>b) Accompany it with a written offer, valid for at least three
+years, to give any third party, for a charge no more than your
+cost of physically performing source distribution, a complete
+machine-readable copy of the corresponding source code, to be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,</p>
+<p>c) Accompany it with the information you received as to the offer
+to distribute corresponding source code.  (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form with such
+an offer, in accord with Subsection b above.)</p>
+</blockquote>
+<p>The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.</p>
+<p>If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.</p>
+<blockquote>
+<ol class="arabic simple" start="4">
+<li>You may not copy, modify, sublicense, or distribute the Program</li>
+</ol>
+</blockquote>
+<p>except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.</p>
+<blockquote>
+<ol class="arabic simple" start="5">
+<li>You are not required to accept this License, since you have not</li>
+</ol>
+</blockquote>
+<p>signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.</p>
+<blockquote>
+<ol class="arabic simple" start="6">
+<li>Each time you redistribute the Program (or any work based on the</li>
+</ol>
+</blockquote>
+<p>Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients&#8217; exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.</p>
+<blockquote>
+<ol class="arabic simple" start="7">
+<li>If, as a consequence of a court judgment or allegation of patent</li>
+</ol>
+</blockquote>
+<p>infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.</p>
+<p>If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.</p>
+<p>It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.</p>
+<p>This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.</p>
+<blockquote>
+<ol class="arabic simple" start="8">
+<li>If the distribution and/or use of the Program is restricted in</li>
+</ol>
+</blockquote>
+<p>certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.</p>
+<blockquote>
+<ol class="arabic simple" start="9">
+<li>The Free Software Foundation may publish revised and/or new versions</li>
+</ol>
+</blockquote>
+<p>of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.</p>
+<p>Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and &#8220;any
+later version&#8221;, you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.</p>
+<blockquote>
+<ol class="arabic simple" start="10">
+<li>If you wish to incorporate parts of the Program into other free</li>
+</ol>
+</blockquote>
+<p>programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.</p>
+<blockquote>
+<blockquote>
+NO WARRANTY</blockquote>
+<ol class="arabic simple" start="11">
+<li>BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY</li>
+</ol>
+</blockquote>
+<p>FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM &#8220;AS IS&#8221; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.</p>
+<blockquote>
+<ol class="arabic simple" start="12">
+<li>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING</li>
+</ol>
+</blockquote>
+<p>WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.</p>
+<blockquote>
+<blockquote>
+<blockquote>
+END OF TERMS AND CONDITIONS</blockquote>
+<p>How to Apply These Terms to Your New Programs</p>
+</blockquote>
+<p>If you develop a new program, and you want it to be of the greatest</p>
+</blockquote>
+<p>possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.</p>
+<blockquote>
+To do so, attach the following notices to the program.  It is safest</blockquote>
+<p>to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the &#8220;copyright&#8221; line and a pointer to where the full notice is found.</p>
+<blockquote>
+<p>&lt;one line to give the program&#8217;s name and a brief idea of what it does.&gt;
+Copyright (C) &lt;year&gt;  &lt;name of author&gt;</p>
+<p>This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.</p>
+<p>This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.</p>
+<p>You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</p>
+</blockquote>
+<p>Also add information on how to contact you by electronic and paper mail.</p>
+<p>If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:</p>
+<blockquote>
+Gnomovision version 69, Copyright (C) year  name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type <a href="#id1"><span class="problematic" id="id2">`</span></a>show w&#8217;.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type <a href="#id3"><span class="problematic" id="id4">`</span></a>show c&#8217; for details.</blockquote>
+<p>The hypothetical commands <a href="#id5"><span class="problematic" id="id6">`</span></a>show w&#8217; and <a href="#id7"><span class="problematic" id="id8">`</span></a>show c&#8217; should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than <a href="#id9"><span class="problematic" id="id10">`</span></a>show w&#8217; and <a href="#id11"><span class="problematic" id="id12">`</span></a>show c&#8217;; they could even be
+mouse-clicks or menu items&#8211;whatever suits your program.</p>
+<p>You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a &#8220;copyright disclaimer&#8221; for the program, if
+necessary.  Here is a sample; alter the names:</p>
+<blockquote>
+<p>Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+<a href="#id13"><span class="problematic" id="id14">`</span></a>Gnomovision&#8217; (which makes passes at compilers) written by James Hacker.</p>
+<p>&lt;signature of Ty Coon&gt;, 1 April 1989
+Ty Coon, President of Vice</p>
+</blockquote>
+<p>This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.</p>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="../main.html">
+              <img class="logo" src="../_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../_sources/licenses/GPL.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/licenses/ZopePublicLicense.html b/doc/sphinx/licenses/ZopePublicLicense.html
new file mode 100644 (file)
index 0000000..3cd3adc
--- /dev/null
@@ -0,0 +1,138 @@
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Zope Public License (ZPL) Version 2.0 &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '2.3',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="shortcut icon" href="../_static/favicon.ico"/>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="../index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="zope-public-license-zpl-version-2-0">
+<h1>Zope Public License (ZPL) Version 2.0<a class="headerlink" href="#zope-public-license-zpl-version-2-0" title="Permalink to this headline">¶</a></h1>
+<p>This software is Copyright (c) Zope Corporation (tm) and
+Contributors. All rights reserved.</p>
+<p>This license has been certified as open source. It has also
+been designated as GPL compatible by the Free Software
+Foundation (FSF).</p>
+<p>Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the
+following conditions are met:</p>
+<ol class="arabic simple">
+<li>Redistributions in source code must retain the above
+copyright notice, this list of conditions, and the following
+disclaimer.</li>
+<li>Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions, and the following
+disclaimer in the documentation and/or other materials
+provided with the distribution.</li>
+<li>The name Zope Corporation (tm) must not be used to
+endorse or promote products derived from this software
+without prior written permission from Zope Corporation.</li>
+<li>The right to distribute this software or to use it for
+any purpose does not give you the right to use Servicemarks
+(sm) or Trademarks (tm) of Zope Corporation. Use of them is
+covered in a separate agreement (see
+<a class="reference external" href="http://www.zope.com/Marks">http://www.zope.com/Marks</a>).</li>
+<li>If any files are modified, you must cause the modified
+files to carry prominent notices stating that you changed
+the files and the date of any change.</li>
+</ol>
+<p>Disclaimer</p>
+<blockquote>
+THIS SOFTWARE IS PROVIDED BY ZOPE CORPORATION <a href="#id1"><span class="problematic" id="id2">``</span></a>AS IS&#8217;&#8217;
+AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+NO EVENT SHALL ZOPE CORPORATION OR ITS CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.</blockquote>
+<p>This software consists of contributions made by Zope
+Corporation and many individuals on behalf of Zope
+Corporation.  Specific attributions are listed in the
+accompanying credits file.</p>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="../main.html">
+              <img class="logo" src="../_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../_sources/licenses/ZopePublicLicense.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/licenses/elementtree.html b/doc/sphinx/licenses/elementtree.html
new file mode 100644 (file)
index 0000000..90af998
--- /dev/null
@@ -0,0 +1,108 @@
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title><no title> &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '2.3',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="shortcut icon" href="../_static/favicon.ico"/>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="../index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <p>The ElementTree / XML Toys Library is</p>
+<p>Copyright (c) 1999-2003 by Secret Labs AB
+Copyright (c) 1999-2003 by Fredrik Lundh</p>
+<p>By obtaining, using, and/or copying this software and/or its
+associated documentation, you agree that you have read, understood,
+and will comply with the following terms and conditions:</p>
+<p>Permission to use, copy, modify, and distribute this software and its
+associated documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appears in all
+copies, and that both that copyright notice and this permission notice
+appear in supporting documentation, and that the name of Secret Labs
+AB or the author not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.</p>
+<p>SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS.  IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</p>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="../main.html">
+              <img class="logo" src="../_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="../_sources/licenses/elementtree.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="../search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/lxml-source-howto.html b/doc/sphinx/lxml-source-howto.html
new file mode 100644 (file)
index 0000000..878743b
--- /dev/null
@@ -0,0 +1,366 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <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" />
+
+    <title>How to read the source of lxml &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="how-to-read-the-source-of-lxml">
+<h1><a class="toc-backref" href="#id1">How to read the source of lxml</a><a class="headerlink" href="#how-to-read-the-source-of-lxml" title="Permalink to this headline">¶</a></h1>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Author:</th><td class="field-body">Stefan Behnel</td>
+</tr>
+</tbody>
+</table>
+<p>This document describes how to read the source code of <a class="reference external" href="http://codespeak.net/lxml/">lxml</a> and how
+to start working on it.  You might also be interested in the companion
+document that describes <a class="reference external" href="build.html">how to build lxml from sources</a>.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#how-to-read-the-source-of-lxml" id="id1">How to read the source of lxml</a><ul>
+<li><a class="reference internal" href="#what-is-cython" id="id2">What is Cython?</a></li>
+<li><a class="reference internal" href="#where-to-start" id="id3">Where to start?</a><ul>
+<li><a class="reference internal" href="#concepts" id="id4">Concepts</a></li>
+<li><a class="reference internal" href="#the-documentation" id="id5">The documentation</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#lxml-etree" id="id6">lxml.etree</a></li>
+<li><a class="reference internal" href="#python-modules" id="id7">Python modules</a></li>
+<li><a class="reference internal" href="#lxml-objectify" id="id8">lxml.objectify</a></li>
+<li><a class="reference internal" href="#lxml-html" id="id9">lxml.html</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="what-is-cython">
+<h2><a class="toc-backref" href="#id2">What is Cython?</a><a class="headerlink" href="#what-is-cython" title="Permalink to this headline">¶</a></h2>
+<p><a class="reference external" href="http://cython.org/">Cython</a> is the language that lxml is written in.  It is a very
+Python-like language that was specifically designed for writing Python
+extension modules.</p>
+<p>The reason why Cython (or actually its predecessor <a class="reference external" href="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/">Pyrex</a> at the time)
+was chosen as an implementation language for lxml, is that it makes it
+very easy to interface with both the Python world and external C code.
+Cython generates all the necessary glue code for the Python API,
+including Python types, calling conventions and reference counting.
+On the other side of the table, calling into C code is not more than
+declaring the signature of the function and maybe some variables as
+being C types, pointers or structs, and then calling it.  The rest of
+the code is just plain Python code.</p>
+<p>The Cython language is so close to Python that the Cython compiler can
+actually compile many, many Python programs to C without major
+modifications.  But the real speed gains of a C compilation come from
+type annotations that were added to the language and that allow Cython
+to generate very efficient C code.</p>
+<p>Even if you are not familiar with Cython, you should keep in mind that
+a slow implementation of a feature is better than none.  So, if you
+want to contribute and have an idea what code you want to write, feel
+free to start with a pure Python implementation.  Chances are, if you
+get the change officially accepted and integrated, others will take
+the time to optimise it so that it runs fast in Cython.</p>
+</div>
+<div class="section" id="where-to-start">
+<h2><a class="toc-backref" href="#id3">Where to start?</a><a class="headerlink" href="#where-to-start" title="Permalink to this headline">¶</a></h2>
+<p>First of all, read <a class="reference external" href="build.html">how to build lxml from sources</a> to learn how to
+retrieve the source code from the Subversion repository and how to
+build it.  The source code lives in the subdirectory <tt class="docutils literal"><span class="pre">src</span></tt> of the
+checkout.</p>
+<p>The main extension modules in lxml are <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> and
+<tt class="docutils literal"><span class="pre">lxml.objectify</span></tt>.  All main modules have the file extension
+<tt class="docutils literal"><span class="pre">.pyx</span></tt>, which shows the descendence from Pyrex.  As usual in Python,
+the main files start with a short description and a couple of imports.
+Cython distinguishes between the run-time <tt class="docutils literal"><span class="pre">import</span></tt> statement (as
+known from Python) and the compile-time <tt class="docutils literal"><span class="pre">cimport</span></tt> statement, which
+imports C declarations, either from external libraries or from other
+Cython modules.</p>
+<div class="section" id="concepts">
+<h3><a class="toc-backref" href="#id4">Concepts</a><a class="headerlink" href="#concepts" title="Permalink to this headline">¶</a></h3>
+<p>lxml&#8217;s tree API is based on proxy objects.  That means, every Element
+object (or rather <tt class="docutils literal"><span class="pre">_Element</span></tt> object) is a proxy for a libxml2 node
+structure.  The class declaration is (mainly):</p>
+<div class="highlight-python"><pre>cdef class _Element:
+    cdef _Document _doc
+    cdef xmlNode* _c_node</pre>
+</div>
+<p>It is a naming convention that C variables and C level class members
+that are passed into libxml2 start with a prefixed <tt class="docutils literal"><span class="pre">c_</span></tt> (commonly
+libxml2 struct pointers), and that C level class members are prefixed
+with an underscore.  So you will often see names like <tt class="docutils literal"><span class="pre">c_doc</span></tt> for an
+<tt class="docutils literal"><span class="pre">xmlDoc*</span></tt> variable (or <tt class="docutils literal"><span class="pre">c_node</span></tt> for an <tt class="docutils literal"><span class="pre">xmlNode*</span></tt>), or the above
+<tt class="docutils literal"><span class="pre">_c_node</span></tt> for a class member that points to an <tt class="docutils literal"><span class="pre">xmlNode</span></tt> struct
+(or <tt class="docutils literal"><span class="pre">_c_doc</span></tt> for an <tt class="docutils literal"><span class="pre">xmlDoc*</span></tt>).</p>
+<p>It is important to know that every proxy in lxml has a factory
+function that properly sets up C level members.  Proxy objects must
+<em>never</em> be instantiated outside of that factory.  For example, to
+instantiate an _Element object or its subclasses, you must always call
+its factory function:</p>
+<div class="highlight-python"><pre>cdef xmlNode* c_node
+cdef _Document doc
+cdef _Element element
+...
+element = _elementFactory(doc, c_node)</pre>
+</div>
+<p>A good place to see how this factory is used are the Element methods
+<tt class="docutils literal"><span class="pre">getparent()</span></tt>, <tt class="docutils literal"><span class="pre">getnext()</span></tt> and <tt class="docutils literal"><span class="pre">getprevious()</span></tt>.</p>
+</div>
+<div class="section" id="the-documentation">
+<h3><a class="toc-backref" href="#id5">The documentation</a><a class="headerlink" href="#the-documentation" title="Permalink to this headline">¶</a></h3>
+<p>An important part of lxml is the documentation that lives in the
+<tt class="docutils literal"><span class="pre">doc</span></tt> directory.  It describes a large part of the API and comprises
+a lot of example code in the form of doctests.</p>
+<p>The documentation is written in the <a class="reference external" href="http://docutils.sourceforge.net/rst.html">ReStructured Text</a> format, a
+very powerful text markup language that looks almost like plain text.
+It is part of the <a class="reference external" href="http://docutils.sourceforge.net/">docutils</a> package.</p>
+<p>The project web site of <a class="reference external" href="http://codespeak.net/lxml/">lxml</a> is completely generated from these text
+documents.  Even the side menu is just collected from the table of
+contents that the ReST processor writes into each HTML page.
+Obviously, we use lxml for this.</p>
+<p>The easiest way to generate the HTML pages is by calling:</p>
+<div class="highlight-python"><pre>make html</pre>
+</div>
+<p>This will call the script <tt class="docutils literal"><span class="pre">doc/mkhtml.py</span></tt> to run the ReST processor
+on the files.  After generating an HTML page the script parses it back
+in to build the side menu, and injects the complete menu into each
+page at the very end.</p>
+<p>Running the <tt class="docutils literal"><span class="pre">make</span></tt> command will also generate the API documentation
+if you have <a class="reference external" href="http://epydoc.sourceforge.net/">epydoc</a> installed.  The epydoc package will import and
+introspect the extension modules and also introspect and parse the
+Python modules of lxml.  The aggregated information will then be
+written out into an HTML documentation site.</p>
+</div>
+</div>
+<div class="section" id="lxml-etree">
+<h2><a class="toc-backref" href="#id6">lxml.etree</a><a class="headerlink" href="#lxml-etree" title="Permalink to this headline">¶</a></h2>
+<p>The main module, <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>, is in the file <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/src/lxml/lxml.etree.pyx">lxml.etree.pyx</a>.  It
+implements the main functions and types of the ElementTree API, as
+well as all the factory functions for proxies.  It is the best place
+to start if you want to find out how a specific feature is
+implemented.</p>
+<p>At the very end of the file, it contains a series of <tt class="docutils literal"><span class="pre">include</span></tt>
+statements that merge the rest of the implementation into the
+generated C code.  Yes, you read right: no importing, no source file
+namespacing, just plain good old include and a huge C code result of
+more than 100,000 lines that we throw right into the C compiler.</p>
+<p>The main include files are:</p>
+<dl class="docutils">
+<dt>apihelpers.pxi</dt>
+<dd>Private C helper functions.  Except for the factory functions,
+most of the little functions that are used all over the place are
+defined here.  This includes things like reading out the text
+content of a libxml2 tree node, checking input from the API level,
+creating a new Element node or handling attribute values.  If you
+want to work on the lxml code, you should keep these functions in
+the back of your head, as they will definitely make your life
+easier.</dd>
+<dt>classlookup.pxi</dt>
+<dd>Element class lookup mechanisms.  The main API and engines for
+those who want to define custom Element classes and inject them
+into lxml.</dd>
+<dt>docloader.pxi</dt>
+<dd>Support for custom document loaders.  Base class and registry for
+custom document resolvers.</dd>
+<dt>extensions.pxi</dt>
+<dd>Infrastructure for extension functions in XPath/XSLT, including
+XPath value conversion and function registration.</dd>
+<dt>iterparse.pxi</dt>
+<dd>Incremental XML parsing.  An iterator class that builds iterparse
+events while parsing.</dd>
+<dt>nsclasses.pxi</dt>
+<dd>Namespace implementation and registry.  The registry and engine
+for Element classes that use the ElementNamespaceClassLookup
+scheme.</dd>
+<dt>parser.pxi</dt>
+<dd>Parsers for XML and HTML.  This is the main parser engine.  It&#8217;s
+the reason why you can parse a document from various sources in
+two lines of Python code.  It&#8217;s definitely not the right place to
+start reading lxml&#8217;s soure code.</dd>
+<dt>parsertarget.pxi</dt>
+<dd>An ElementTree compatible parser target implementation based on
+the SAX2 interface of libxml2.</dd>
+<dt>proxy.pxi</dt>
+<dd>Very low-level functions for memory allocation/deallocation
+and Element proxy handling.  Ignoring this for the beginning
+will safe your head from exploding.</dd>
+<dt>public-api.pxi</dt>
+<dd>The set of C functions that are exported to other extension
+modules at the C level.  For example, <tt class="docutils literal"><span class="pre">lxml.objectify</span></tt> makes use
+of these.  See the <cite>C-level API</cite> documentation.</dd>
+<dt>readonlytree.pxi</dt>
+<dd>A separate read-only implementation of the Element API.  This is
+used in places where non-intrusive access to a tree is required,
+such as the <tt class="docutils literal"><span class="pre">PythonElementClassLookup</span></tt> or XSLT extension
+elements.</dd>
+<dt>saxparser.pxi</dt>
+<dd>SAX-like parser interfaces as known from ElementTree&#8217;s TreeBuilder.</dd>
+<dt>serializer.pxi</dt>
+<dd>XML output functions.  Basically everything that creates byte
+sequences from XML trees.</dd>
+<dt>xinclude.pxi</dt>
+<dd>XInclude support.</dd>
+<dt>xmlerror.pxi</dt>
+<dd><p class="first">Error log handling.  All error messages that libxml2 generates
+internally walk through the code in this file to end up in lxml&#8217;s
+Python level error logs.</p>
+<p class="last">At the end of the file, you will find a long list of named error
+codes.  It is generated from the libxml2 HTML documentation (using
+lxml, of course).  See the script <tt class="docutils literal"><span class="pre">update-error-constants.py</span></tt>
+for this.</p>
+</dd>
+<dt>xmlid.pxi</dt>
+<dd>XMLID and IDDict, a dictionary-like way to find Elements by their
+XML-ID attribute.</dd>
+<dt>xpath.pxi</dt>
+<dd>XPath evaluators.</dd>
+<dt>xslt.pxi</dt>
+<dd>XSL transformations, including the <tt class="docutils literal"><span class="pre">XSLT</span></tt> class, document lookup
+handling and access control.</dd>
+</dl>
+<p>The different schema languages (DTD, RelaxNG, XML Schema and
+Schematron) are implemented in the following include files:</p>
+<ul class="simple">
+<li>dtd.pxi</li>
+<li>relaxng.pxi</li>
+<li>schematron.pxi</li>
+<li>xmlschema.pxi</li>
+</ul>
+</div>
+<div class="section" id="python-modules">
+<h2><a class="toc-backref" href="#id7">Python modules</a><a class="headerlink" href="#python-modules" title="Permalink to this headline">¶</a></h2>
+<p>The <tt class="docutils literal"><span class="pre">lxml</span></tt> package also contains a number of pure Python modules:</p>
+<dl class="docutils">
+<dt>builder.py</dt>
+<dd>The E-factory and the ElementBuilder class.  These provide a
+simple interface to XML tree generation.</dd>
+<dt>cssselect.py</dt>
+<dd>A CSS selector implementation based on XPath.  The main class is
+called <tt class="docutils literal"><span class="pre">CSSSelector</span></tt>.</dd>
+<dt>doctestcompare.py</dt>
+<dd>A relaxed comparison scheme for XML/HTML markup in doctest.</dd>
+<dt>ElementInclude.py</dt>
+<dd>XInclude-like document inclusion, compatible with ElementTree.</dd>
+<dt>_elementpath.py</dt>
+<dd>XPath-like path language, compatible with ElementTree.</dd>
+<dt>sax.py</dt>
+<dd>SAX2 compatible interfaces to copy lxml trees from/to SAX compatible
+tools.</dd>
+<dt>usedoctest.py</dt>
+<dd>Wrapper module for <tt class="docutils literal"><span class="pre">doctestcompare.py</span></tt> that simplifies its usage
+from inside a doctest.</dd>
+</dl>
+</div>
+<div class="section" id="lxml-objectify">
+<h2><a class="toc-backref" href="#id8">lxml.objectify</a><a class="headerlink" href="#lxml-objectify" title="Permalink to this headline">¶</a></h2>
+<p>A Cython implemented extension module that uses the public C-API of
+lxml.etree.  It provides a Python object-like interface to XML trees.
+The implementation resides in the file <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/src/lxml/lxml.objectify.pyx">lxml.objectify.pyx</a>.</p>
+</div>
+<div class="section" id="lxml-html">
+<h2><a class="toc-backref" href="#id9">lxml.html</a><a class="headerlink" href="#lxml-html" title="Permalink to this headline">¶</a></h2>
+<p>A specialised toolkit for HTML handling, based on lxml.etree.  This is
+implemented in pure Python.</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">How to read the source of lxml</a><ul>
+<li><a class="reference internal" href="#what-is-cython">What is Cython?</a></li>
+<li><a class="reference internal" href="#where-to-start">Where to start?</a><ul>
+<li><a class="reference internal" href="#concepts">Concepts</a></li>
+<li><a class="reference internal" href="#the-documentation">The documentation</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#lxml-etree">lxml.etree</a></li>
+<li><a class="reference internal" href="#python-modules">Python modules</a></li>
+<li><a class="reference internal" href="#lxml-objectify">lxml.objectify</a></li>
+<li><a class="reference internal" href="#lxml-html">lxml.html</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/lxml-source-howto.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/lxml2.html b/doc/sphinx/lxml2.html
new file mode 100644 (file)
index 0000000..fd4c6a5
--- /dev/null
@@ -0,0 +1,336 @@
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>What’s new in lxml 2.0? &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="shortcut icon" href="_static/favicon.ico"/>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="what-s-new-in-lxml-2-0">
+<h1><a class="toc-backref" href="#id3">What&#8217;s new in lxml 2.0?</a><a class="headerlink" href="#what-s-new-in-lxml-2-0" title="Permalink to this headline">¶</a></h1>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#what-s-new-in-lxml-2-0" id="id3">What&#8217;s new in lxml 2.0?</a><ul>
+<li><a class="reference internal" href="#changes-in-etree-and-objectify" id="id4">Changes in etree and objectify</a><ul>
+<li><a class="reference internal" href="#incompatible-changes" id="id5">Incompatible changes</a></li>
+<li><a class="reference internal" href="#enhancements" id="id6">Enhancements</a></li>
+<li><a class="reference internal" href="#deprecation" id="id7">Deprecation</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#new-modules" id="id8">New modules</a><ul>
+<li><a class="reference internal" href="#lxml-usedoctest" id="id9">lxml.usedoctest</a></li>
+<li><a class="reference internal" href="#lxml-html" id="id10">lxml.html</a></li>
+<li><a class="reference internal" href="#lxml-cssselect" id="id11">lxml.cssselect</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<p>During the development of the lxml 1.x series, a couple of quirks were
+discovered in the design that made the API less obvious and its future
+extensions harder than necessary. lxml 2.0 is a soft evolution of lxml 1.x
+towards a simpler, more consistent and more powerful API - with some major
+extensions.  Wherever possible, lxml 1.3 comes close to the semantics of lxml
+2.0, so that migrating should be easier for code that currently runs with 1.3.</p>
+<p>One of the important internal changes was the switch from the <a class="reference external" href="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/">Pyrex</a>
+compiler to <a class="reference external" href="http://www.cython.org/">Cython</a>, which provides better optimisation and improved
+support for newer Python language features.  This allows the code of
+lxml to become more Python-like again, while the performance improves
+as Cython continues its own development.  The code simplification,
+which will continue throughout the 2.x series, will hopefully make it
+even easier for users to contribute.</p>
+<div class="section" id="changes-in-etree-and-objectify">
+<h2><a class="toc-backref" href="#id4">Changes in etree and objectify</a><a class="headerlink" href="#changes-in-etree-and-objectify" title="Permalink to this headline">¶</a></h2>
+<p>A graduation towards a more consistent API cannot go without a certain amount
+of incompatible changes.  The following is a list of those differences that
+applications need to take into account when migrating from lxml 1.x to lxml
+2.0.</p>
+<div class="section" id="incompatible-changes">
+<h3><a class="toc-backref" href="#id5">Incompatible changes</a><a class="headerlink" href="#incompatible-changes" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>lxml 0.9 introduced a feature called <a class="reference external" href="element_classes.html#implementing-namespaces">namespace implementation</a>.  The
+global <tt class="docutils literal"><span class="pre">Namespace</span></tt> factory was added to register custom element classes
+and have lxml.etree look them up automatically.  However, the later
+development of further class lookup mechanisms made it appear less and less
+adequate to register this mapping at a global level, so lxml 1.1 first
+removed the namespace based lookup from the default setup and lxml 2.0
+finally removes the global namespace registry completely.  As all other
+lookup mechanisms, the namespace lookup is now local to a parser, including
+the registry itself.  Applications that use a module-level parser can easily
+map its <tt class="docutils literal"><span class="pre">get_namespace()</span></tt> method to a global <tt class="docutils literal"><span class="pre">Namespace</span></tt> function to
+mimic the old behaviour.</li>
+<li>Some API functions now require passing options as keyword arguments,
+as opposed to positional arguments.  This restriction was introduced
+to make the API usage independent of future extensions such as the
+addition of new positional arguments.  Users should not rely on the
+position of an optional argument in function signatures and instead
+pass it explicitly named.  This also improves code readability - it
+is common good practice to pass options in a consistent way
+independent of their position, so many people may not even notice
+the change in their code.  Another important reason is compatibility
+with cElementTree, which also enforces keyword-only arguments in a
+couple of places.</li>
+<li>XML tag names are validated when creating an Element.  This does not
+apply to HTML tags, where only HTML special characters are
+forbidden.  The distinction is made by the <tt class="docutils literal"><span class="pre">SubElement()</span></tt> factory,
+which tests if the tree it works on is an HTML tree, and by the
+<tt class="docutils literal"><span class="pre">.makeelement()</span></tt> methods of parsers, which behave differently for
+the <tt class="docutils literal"><span class="pre">XMLParser()</span></tt> and the <tt class="docutils literal"><span class="pre">HTMLParser()</span></tt>.</li>
+<li>XPath now raises exceptions specific to the part of the execution that
+failed: <tt class="docutils literal"><span class="pre">XPathSyntaxError</span></tt> for parser errors and <tt class="docutils literal"><span class="pre">XPathEvalError</span></tt> for
+errors that occurred during the evaluation.  Note that the distinction only
+works for the <tt class="docutils literal"><span class="pre">XPath()</span></tt> class.  The other two evaluators only have a
+single evaluation call that includes the parsing step, and will therefore
+only raise an <tt class="docutils literal"><span class="pre">XPathEvalError</span></tt>.  Applications can catch both exceptions
+through the common base class <tt class="docutils literal"><span class="pre">XPathError</span></tt> (which also exists in earlier
+lxml versions).</li>
+<li>Network access in parsers is now disabled by default, i.e. the
+<tt class="docutils literal"><span class="pre">no_network</span></tt> option defaults to True.  Due to a somewhat &#8216;interesting&#8217;
+implementation in libxml2, this does not affect the first document (i.e. the
+URL that is parsed), but only subsequent documents, such as a DTD when
+parsing with validation.  This means that you will have to check the URL you
+pass, instead of relying on lxml to prevent <em>any</em> access to external
+resources.  As this can be helpful in some use cases, lxml does not work
+around it.</li>
+<li>The type annotations in lxml.objectify (the <tt class="docutils literal"><span class="pre">pytype</span></tt> attribute) now use
+<tt class="docutils literal"><span class="pre">NoneType</span></tt> for the None value as this is the correct Python type name.
+Previously, lxml 1.x used a lower case <tt class="docutils literal"><span class="pre">none</span></tt>.</li>
+<li>Another change in objectify regards the way it deals with ambiguous types.
+Previously, setting a value like the string <tt class="docutils literal"><span class="pre">&quot;3&quot;</span></tt> through normal attribute
+access would let it come back as an integer when reading the object
+attribute.  lxml 2.0 prevents this by always setting the <tt class="docutils literal"><span class="pre">pytype</span></tt>
+attribute to the type the user passed in, so <tt class="docutils literal"><span class="pre">&quot;3&quot;</span></tt> will come back as a
+string, while the number <tt class="docutils literal"><span class="pre">3</span></tt> will come back as a number.  To remove the
+type annotation on serialisation, you can use the <tt class="docutils literal"><span class="pre">deannotate()</span></tt> function.</li>
+<li>The C-API function <tt class="docutils literal"><span class="pre">findOrBuildNodeNs()</span></tt> was replaced by the more generic
+<tt class="docutils literal"><span class="pre">findOrBuildNodeNsPrefix()</span></tt> that accepts an additional default prefix.</li>
+</ul>
+</div>
+<div class="section" id="enhancements">
+<h3><a class="toc-backref" href="#id6">Enhancements</a><a class="headerlink" href="#enhancements" title="Permalink to this headline">¶</a></h3>
+<p>Most of the enhancements of lxml 2.0 were made under the hood.  Most people
+won&#8217;t even notice them, but they make the maintenance of lxml easier and thus
+facilitate further enhancements and an improved integration between lxml&#8217;s
+features.</p>
+<ul class="simple">
+<li>lxml.objectify now has its own implementation of the <a class="reference external" href="objectify.html#tree-generation-with-the-e-factory">E factory</a>.  It uses
+the built-in type lookup mechanism of lxml.objectify, thus removing the need
+for an additional type registry mechanism (as previously available through
+the <tt class="docutils literal"><span class="pre">typemap</span></tt> parameter).</li>
+<li>XML entities are supported through the <tt class="docutils literal"><span class="pre">Entity()</span></tt> factory, an Entity
+element class and a parser option <tt class="docutils literal"><span class="pre">resolve_entities</span></tt> that allows to keep
+entities in the element tree when set to False.  Also, the parser will now
+report undefined entities as errors if it needs to resolve them (which is
+still the default, as in lxml 1.x).</li>
+<li>A major part of the XPath code was rewritten and can now benefit from a
+bigger overlap with the XSLT code.  The main benefits are improved thread
+safety in the XPath evaluators and Python RegExp support in standard XPath.</li>
+<li>The string results of an XPath evaluation have become &#8216;smart&#8217; string
+subclasses.  Formerly, there was no easy way to find out where a
+string originated from.  In lxml 2.0, you can call its
+<tt class="docutils literal"><span class="pre">getparent()</span></tt> method to <a class="reference external" href="tutorial.html#using-xpath-to-find-text">find the Element that carries it</a>.  This
+works for attributes (<tt class="docutils literal"><span class="pre">//&#64;attribute</span></tt>) and for <tt class="docutils literal"><span class="pre">text()</span></tt> nodes,
+i.e. Element text and tails.  Strings that were constructed in the
+path expression, e.g. by the <tt class="docutils literal"><span class="pre">string()</span></tt> function or extension
+functions, will return None as their parent.</li>
+<li>Setting a <tt class="docutils literal"><span class="pre">QName</span></tt> object as value of the <tt class="docutils literal"><span class="pre">.text</span></tt> property or as
+an attribute value will resolve its prefix in the respective context</li>
+<li>Following ElementTree 1.3, the <tt class="docutils literal"><span class="pre">iterfind()</span></tt> method supports
+efficient iteration based on XPath-like expressions.</li>
+</ul>
+<p>The parsers also received some major enhancements:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">iterparse()</span></tt> can parse HTML when passing the boolean <tt class="docutils literal"><span class="pre">html</span></tt>
+keyword.</li>
+<li>Parse time XML Schema validation by passing an
+XMLSchema object to the <tt class="docutils literal"><span class="pre">schema</span></tt> keyword argument of a parser.</li>
+<li>Support for a <tt class="docutils literal"><span class="pre">target</span></tt> object that implements ElementTree&#8217;s
+<a class="reference external" href="http://effbot.org/elementtree/elementtree-treebuilder.htm">TreeBuilder interface</a>.</li>
+<li>The <tt class="docutils literal"><span class="pre">encoding</span></tt> keyword allows overriding the document encoding.</li>
+</ul>
+</div>
+<div class="section" id="deprecation">
+<h3><a class="toc-backref" href="#id7">Deprecation</a><a class="headerlink" href="#deprecation" title="Permalink to this headline">¶</a></h3>
+<p>The following functions and methods are now deprecated.  They are
+still available in lxml 2.0 and will be removed in lxml 2.1:</p>
+<ul>
+<li><p class="first">The <tt class="docutils literal"><span class="pre">tounicode()</span></tt> function was replaced by the call
+<tt class="docutils literal"><span class="pre">tostring(encoding=unicode)</span></tt>.</p>
+</li>
+<li><p class="first">CamelCaseNamed module functions and methods were renamed to their
+underscore equivalents to follow <a class="reference external" href="http://www.python.org/dev/peps/pep-0008/">PEP 8</a> in naming.</p>
+<ul>
+<li><p class="first"><tt class="docutils literal"><span class="pre">etree.clearErrorLog()</span></tt>, use <tt class="docutils literal"><span class="pre">etree.clear_error_log()</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">etree.useGlobalPythonLog()</span></tt>, use
+<tt class="docutils literal"><span class="pre">etree.use_global_python_log()</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">etree.ElementClassLookup.setFallback()</span></tt>, use
+<tt class="docutils literal"><span class="pre">etree.ElementClassLookup.set_fallback()</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">etree.getDefaultParser()</span></tt>, use <tt class="docutils literal"><span class="pre">etree.get_default_parser()</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">etree.setDefaultParser()</span></tt>, use <tt class="docutils literal"><span class="pre">etree.set_default_parser()</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">etree.setElementClassLookup()</span></tt>, use
+<tt class="docutils literal"><span class="pre">etree.set_element_class_lookup()</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">XMLParser.setElementClassLookup()</span></tt>, use <tt class="docutils literal"><span class="pre">.set_element_class_lookup()</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">HTMLParser.setElementClassLookup()</span></tt>, use <tt class="docutils literal"><span class="pre">.set_element_class_lookup()</span></tt></p>
+<p>Note that <tt class="docutils literal"><span class="pre">parser.setElementClassLookup()</span></tt> has not been removed
+yet, although <tt class="docutils literal"><span class="pre">parser.set_element_class_lookup()</span></tt> should be used
+instead.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">xpath_evaluator.registerNamespace()</span></tt>, use
+<tt class="docutils literal"><span class="pre">xpath_evaluator.register_namespace()</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">xpath_evaluator.registerNamespaces()</span></tt>, use
+<tt class="docutils literal"><span class="pre">xpath_evaluator.register_namespaces()</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">objectify.setPytypeAttributeTag</span></tt>, use
+<tt class="docutils literal"><span class="pre">objectify.set_pytype_attribute_tag</span></tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">objectify.setDefaultParser()</span></tt>, use
+<tt class="docutils literal"><span class="pre">objectify.set_default_parser()</span></tt></p>
+</li>
+</ul>
+</li>
+<li><p class="first">The <tt class="docutils literal"><span class="pre">.getiterator()</span></tt> method on Elements and ElementTrees was
+renamed to <tt class="docutils literal"><span class="pre">.iter()</span></tt> to follow ElementTree 1.3.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="new-modules">
+<h2><a class="toc-backref" href="#id8">New modules</a><a class="headerlink" href="#new-modules" title="Permalink to this headline">¶</a></h2>
+<p>The most visible changes in lxml 2.0 regard the new modules that were added.</p>
+<div class="section" id="lxml-usedoctest">
+<h3><a class="toc-backref" href="#id9">lxml.usedoctest</a><a class="headerlink" href="#lxml-usedoctest" title="Permalink to this headline">¶</a></h3>
+<p>A very useful module for doctests based on XML or HTML is
+<tt class="docutils literal"><span class="pre">lxml.doctestcompare</span></tt>.  It provides a relaxed comparison mechanism
+for XML and HTML in doctests.  Using it for XML comparisons is as
+simple as:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">lxml.usedoctest</span>
+</pre></div>
+</div>
+<p>and for HTML comparisons:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">lxml.html.usedoctest</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="lxml-html">
+<h3><a class="toc-backref" href="#id10">lxml.html</a><a class="headerlink" href="#lxml-html" title="Permalink to this headline">¶</a></h3>
+<p>The largest new package that was added to lxml 2.0 is <a class="reference external" href="lxmlhtml.html">lxml.html</a>.  It
+contains various tools and modules for HTML handling.  The major features
+include support for cleaning up HTML (removing unwanted content), a readable
+HTML diff and various tools for working with links.</p>
+</div>
+<div class="section" id="lxml-cssselect">
+<h3><a class="toc-backref" href="#id11">lxml.cssselect</a><a class="headerlink" href="#lxml-cssselect" title="Permalink to this headline">¶</a></h3>
+<p>The Cascading Stylesheet Language (<a class="reference external" href="http://www.w3.org/Style/CSS/">CSS</a>) has a very short and generic path
+language for pointing at elements in XML/HTML trees (<a class="reference external" href="http://www.w3.org/TR/CSS21/selector.html">CSS selectors</a>).  The module
+<a class="reference external" href="cssselect.html">lxml.cssselect</a> provides an implementation based on XPath.</p>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+            <h3><a href="main.html">Table Of Contents</a></h3>
+            <ul>
+<li><a class="reference external" href="#">What&#8217;s new in lxml 2.0?</a><ul>
+<li><a class="reference external" href="#changes-in-etree-and-objectify">Changes in etree and objectify</a><ul>
+<li><a class="reference external" href="#incompatible-changes">Incompatible changes</a></li>
+<li><a class="reference external" href="#enhancements">Enhancements</a></li>
+<li><a class="reference external" href="#deprecation">Deprecation</a></li>
+</ul>
+</li>
+<li><a class="reference external" href="#new-modules">New modules</a><ul>
+<li><a class="reference external" href="#lxml-usedoctest">lxml.usedoctest</a></li>
+<li><a class="reference external" href="#lxml-html">lxml.html</a></li>
+<li><a class="reference external" href="#lxml-cssselect">lxml.cssselect</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="_sources/lxml2.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/lxmlhtml.html b/doc/sphinx/lxmlhtml.html
new file mode 100644 (file)
index 0000000..d4ba83a
--- /dev/null
@@ -0,0 +1,808 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>lxml.html &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="lxml-html">
+<h1><a class="toc-backref" href="#id1">lxml.html</a><a class="headerlink" href="#lxml-html" title="Permalink to this headline">¶</a></h1>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Author:</th><td class="field-body">Ian Bicking</td>
+</tr>
+</tbody>
+</table>
+<p>Since version 2.0, lxml comes with a dedicated Python package for
+dealing with HTML: <tt class="docutils literal"><span class="pre">lxml.html</span></tt>.  It is based on lxml&#8217;s HTML parser,
+but provides a special Element API for HTML elements, as well as a
+number of utilities for common HTML processing tasks.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#lxml-html" id="id1">lxml.html</a><ul>
+<li><a class="reference internal" href="#parsing-html" id="id2">Parsing HTML</a><ul>
+<li><a class="reference internal" href="#parsing-html-fragments" id="id3">Parsing HTML fragments</a></li>
+<li><a class="reference internal" href="#really-broken-pages" id="id4">Really broken pages</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#html-element-methods" id="id5">HTML Element Methods</a></li>
+<li><a class="reference internal" href="#running-html-doctests" id="id6">Running HTML doctests</a></li>
+<li><a class="reference internal" href="#creating-html-with-the-e-factory" id="id7">Creating HTML with the E-factory</a><ul>
+<li><a class="reference internal" href="#viewing-your-html" id="id8">Viewing your HTML</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#working-with-links" id="id9">Working with links</a><ul>
+<li><a class="reference internal" href="#functions" id="id10">Functions</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#forms" id="id11">Forms</a><ul>
+<li><a class="reference internal" href="#form-filling-example" id="id12">Form Filling Example</a></li>
+<li><a class="reference internal" href="#form-submission" id="id13">Form Submission</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#cleaning-up-html" id="id14">Cleaning up HTML</a><ul>
+<li><a class="reference internal" href="#autolink" id="id15">autolink</a></li>
+<li><a class="reference internal" href="#wordwrap" id="id16">wordwrap</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#html-diff" id="id17">HTML Diff</a></li>
+<li><a class="reference internal" href="#examples" id="id18">Examples</a><ul>
+<li><a class="reference internal" href="#microformat-example" id="id19">Microformat Example</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<p>The main API is based on the <a class="reference external" href="tutorial.html">lxml.etree</a> API, and thus, on the <a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a>
+API.</p>
+<div class="section" id="parsing-html">
+<h2><a class="toc-backref" href="#id2">Parsing HTML</a><a class="headerlink" href="#parsing-html" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="parsing-html-fragments">
+<h3><a class="toc-backref" href="#id3">Parsing HTML fragments</a><a class="headerlink" href="#parsing-html-fragments" title="Permalink to this headline">¶</a></h3>
+<p>There are several functions available to parse HTML:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">parse(filename_url_or_file)</span></tt>:</dt>
+<dd><p class="first">Parses the named file or url, or if the object has a <tt class="docutils literal"><span class="pre">.read()</span></tt>
+method, parses from that.</p>
+<p class="last">If you give a URL, or if the object has a <tt class="docutils literal"><span class="pre">.geturl()</span></tt> method (as
+file-like objects from <tt class="docutils literal"><span class="pre">urllib.urlopen()</span></tt> have), then that URL
+is used as the base URL.  You can also provide an explicit
+<tt class="docutils literal"><span class="pre">base_url</span></tt> keyword argument.</p>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">document_fromstring(string)</span></tt>:</dt>
+<dd>Parses a document from the given string.  This always creates a
+correct HTML document, which means the parent node is <tt class="docutils literal"><span class="pre">&lt;html&gt;</span></tt>,
+and there is a body and possibly a head.</dd>
+<dt><tt class="docutils literal"><span class="pre">fragment_fromstring(string,</span> <span class="pre">create_parent=False)</span></tt>:</dt>
+<dd>Returns an HTML fragment from a string.  The fragment must contain
+just a single element, unless <tt class="docutils literal"><span class="pre">create_parent</span></tt> is given;
+e.g,. <tt class="docutils literal"><span class="pre">fragment_fromstring(string,</span> <span class="pre">create_parent='div')</span></tt> will
+wrap the element in a <tt class="docutils literal"><span class="pre">&lt;div&gt;</span></tt>.</dd>
+<dt><tt class="docutils literal"><span class="pre">fragments_fromstring(string)</span></tt>:</dt>
+<dd>Returns a list of the elements found in the fragment.</dd>
+<dt><tt class="docutils literal"><span class="pre">fromstring(string)</span></tt>:</dt>
+<dd>Returns <tt class="docutils literal"><span class="pre">document_fromstring</span></tt> or <tt class="docutils literal"><span class="pre">fragment_fromstring</span></tt>, based
+on whether the string looks like a full document, or just a
+fragment.</dd>
+</dl>
+</div>
+<div class="section" id="really-broken-pages">
+<h3><a class="toc-backref" href="#id4">Really broken pages</a><a class="headerlink" href="#really-broken-pages" title="Permalink to this headline">¶</a></h3>
+<p>The normal HTML parser is capable of handling broken HTML, but for
+pages that are far enough from HTML to call them &#8216;tag soup&#8217;, it may
+still fail to parse the page in a useful way.  A way to deal with this
+is <a class="reference external" href="elementsoup.html">ElementSoup</a>, which deploys the well-known <a class="reference external" href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a> parser to
+build an lxml HTML tree.</p>
+<p>However, note that the most common problem with web pages is the lack
+of (or the existence of incorrect) encoding declarations.  It is
+therefore often sufficient to only use the encoding detection of
+BeautifulSoup, called UnicodeDammit, and to leave the rest to lxml&#8217;s
+own HTML parser, which is several times faster.</p>
+</div>
+</div>
+<div class="section" id="html-element-methods">
+<h2><a class="toc-backref" href="#id5">HTML Element Methods</a><a class="headerlink" href="#html-element-methods" title="Permalink to this headline">¶</a></h2>
+<p>HTML elements have all the methods that come with ElementTree, but
+also include some extra methods:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">.drop_tree()</span></tt>:</dt>
+<dd>Drops the element and all its children.  Unlike
+<tt class="docutils literal"><span class="pre">el.getparent().remove(el)</span></tt> this does <em>not</em> remove the tail
+text; with <tt class="docutils literal"><span class="pre">drop_tree</span></tt> the tail text is merged with the previous
+element.</dd>
+<dt><tt class="docutils literal"><span class="pre">.drop_tag()</span></tt>:</dt>
+<dd>Drops the tag, but keeps its children and text.</dd>
+<dt><tt class="docutils literal"><span class="pre">.find_class(class_name)</span></tt>:</dt>
+<dd>Returns a list of all the elements with the given CSS class name.
+Note that class names are space separated in HTML, so
+<tt class="docutils literal"><span class="pre">doc.find_class_name('highlight')</span></tt> will find an element like
+<tt class="docutils literal"><span class="pre">&lt;div</span> <span class="pre">class=&quot;sidebar</span> <span class="pre">highlight&quot;&gt;</span></tt>.  Class names <em>are</em> case
+sensitive.</dd>
+<dt><tt class="docutils literal"><span class="pre">.find_rel_links(rel)</span></tt>:</dt>
+<dd>Returns a list of all the <tt class="docutils literal"><span class="pre">&lt;a</span> <span class="pre">rel=&quot;{rel}&quot;&gt;</span></tt> elements.  E.g.,
+<tt class="docutils literal"><span class="pre">doc.find_rel_links('tag')</span></tt> returns all the links <a class="reference external" href="http://microformats.org/wiki/rel-tag">marked as
+tags</a>.</dd>
+<dt><tt class="docutils literal"><span class="pre">.get_element_by_id(id,</span> <span class="pre">default=None)</span></tt>:</dt>
+<dd>Return the element with the given <tt class="docutils literal"><span class="pre">id</span></tt>, or the <tt class="docutils literal"><span class="pre">default</span></tt> if
+none is found.  If there are multiple elements with the same id
+(which there shouldn&#8217;t be, but there often is), this returns only
+the first.</dd>
+<dt><tt class="docutils literal"><span class="pre">.text_content()</span></tt>:</dt>
+<dd>Returns the text content of the element, including the text
+content of its children, with no markup.</dd>
+<dt><tt class="docutils literal"><span class="pre">.cssselect(expr)</span></tt>:</dt>
+<dd>Select elements from this element and its children, using a CSS
+selector expression.  (Note that <tt class="docutils literal"><span class="pre">.xpath(expr)</span></tt> is also
+available as on all lxml elements.)</dd>
+<dt><tt class="docutils literal"><span class="pre">.label</span></tt>:</dt>
+<dd>Returns the corresponding <tt class="docutils literal"><span class="pre">&lt;label&gt;</span></tt> element for this element, if
+any exists (None if there is none).  Label elements have a
+<tt class="docutils literal"><span class="pre">label.for_element</span></tt> attribute that points back to the element.</dd>
+<dt><tt class="docutils literal"><span class="pre">.base_url</span></tt>:</dt>
+<dd>The base URL for this element, if one was saved from the parsing.
+This attribute is not settable.  Is None when no base URL was
+saved.</dd>
+</dl>
+</div>
+<div class="section" id="running-html-doctests">
+<h2><a class="toc-backref" href="#id6">Running HTML doctests</a><a class="headerlink" href="#running-html-doctests" title="Permalink to this headline">¶</a></h2>
+<p>One of the interesting modules in the <tt class="docutils literal"><span class="pre">lxml.html</span></tt> package deals with
+doctests.  It can be hard to compare two HTML pages for equality, as
+whitespace differences aren&#8217;t meaningful and the structural formatting
+can differ.  This is even more a problem in doctests, where output is
+tested for equality and small differences in whitespace or the order
+of attributes can let a test fail.  And given the verbosity of
+tag-based languages, it may take more than a quick look to find the
+actual differences in the doctest output.</p>
+<p>Luckily, lxml provides the <tt class="docutils literal"><span class="pre">lxml.doctestcompare</span></tt> module that
+supports relaxed comparison of XML and HTML pages and provides a
+readable diff in the output when a test fails.  The HTML comparison is
+most easily used by importing the <tt class="docutils literal"><span class="pre">usedoctest</span></tt> module in a doctest:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">lxml.html.usedoctest</span>
+</pre></div>
+</div>
+<p>Now, if you have a HTML document and want to compare it to an expected result
+document in a doctest, you can do the following:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">lxml.html</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">html</span> <span class="o">=</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">   &lt;html&gt;&lt;body onload=&quot;&quot; color=&quot;white&quot;&gt;</span>
+<span class="gp">... </span><span class="s">     &lt;p&gt;Hi  !&lt;/p&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;/body&gt;&lt;/html&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">&lt;html&gt;&lt;body onload=&quot;&quot; color=&quot;white&quot;&gt;&lt;p&gt;Hi !&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">&lt;html&gt; &lt;body color=&quot;white&quot; onload=&quot;&quot;&gt; &lt;p&gt;Hi    !&lt;/p&gt; &lt;/body&gt; &lt;/html&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">&lt;html&gt;</span>
+<span class="go">  &lt;body color=&quot;white&quot; onload=&quot;&quot;&gt;</span>
+<span class="go">    &lt;p&gt;Hi !&lt;/p&gt;</span>
+<span class="go">  &lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>In documentation, you would likely prefer the pretty printed HTML output, as
+it is the most readable.  However, the three documents are equivalent from the
+point of view of an HTML tool, so the doctest will silently accept any of the
+above.  This allows you to concentrate on readability in your doctests, even
+if the real output is a straight ugly HTML one-liner.</p>
+<p>Note that there is also an <tt class="docutils literal"><span class="pre">lxml.usedoctest</span></tt> module which you can
+import for XML comparisons.  The HTML parser notably ignores
+namespaces and some other XMLisms.</p>
+</div>
+<div class="section" id="creating-html-with-the-e-factory">
+<h2><a class="toc-backref" href="#id7">Creating HTML with the E-factory</a><a class="headerlink" href="#creating-html-with-the-e-factory" title="Permalink to this headline">¶</a></h2>
+<p>lxml.html comes with a predefined HTML vocabulary for the <a class="reference external" href="http://online.effbot.org/2006_11_01_archive.htm#et-builder">E-factory</a>,
+originally written by Fredrik Lundh.  This allows you to quickly generate HTML
+pages and fragments:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html</span> <span class="kn">import</span> <span class="n">builder</span> <span class="k">as</span> <span class="n">E</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html</span> <span class="kn">import</span> <span class="n">usedoctest</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">html</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">HTML</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="n">E</span><span class="o">.</span><span class="n">HEAD</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="n">E</span><span class="o">.</span><span class="n">LINK</span><span class="p">(</span><span class="n">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span><span class="p">,</span> <span class="n">href</span><span class="o">=</span><span class="s">&quot;great.css&quot;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">&quot;text/css&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">E</span><span class="o">.</span><span class="n">TITLE</span><span class="p">(</span><span class="s">&quot;Best Page Ever&quot;</span><span class="p">)</span>
+<span class="gp">... </span>  <span class="p">),</span>
+<span class="gp">... </span>  <span class="n">E</span><span class="o">.</span><span class="n">BODY</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="n">E</span><span class="o">.</span><span class="n">H1</span><span class="p">(</span><span class="n">E</span><span class="o">.</span><span class="n">CLASS</span><span class="p">(</span><span class="s">&quot;heading&quot;</span><span class="p">),</span> <span class="s">&quot;Top News&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">E</span><span class="o">.</span><span class="n">P</span><span class="p">(</span><span class="s">&quot;World News only on this page&quot;</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="s">&quot;font-size: 200%&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="s">&quot;Ah, and here&#39;s some more text, by the way.&quot;</span><span class="p">,</span>
+<span class="gp">... </span>    <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;... and this is a parsed fragment ...&lt;/p&gt;&quot;</span><span class="p">)</span>
+<span class="gp">... </span>  <span class="p">)</span>
+<span class="gp">... </span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">lxml</span><span class="o">.</span><span class="n">html</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">&lt;html&gt;</span>
+<span class="go">  &lt;head&gt;</span>
+<span class="go">    &lt;link href=&quot;great.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;</span>
+<span class="go">    &lt;title&gt;Best Page Ever&lt;/title&gt;</span>
+<span class="go">  &lt;/head&gt;</span>
+<span class="go">  &lt;body&gt;</span>
+<span class="go">    &lt;h1 class=&quot;heading&quot;&gt;Top News&lt;/h1&gt;</span>
+<span class="go">    &lt;p style=&quot;font-size: 200%&quot;&gt;World News only on this page&lt;/p&gt;</span>
+<span class="go">    Ah, and here&#39;s some more text, by the way.</span>
+<span class="go">    &lt;p&gt;... and this is a parsed fragment ...&lt;/p&gt;</span>
+<span class="go">  &lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>Note that you should use <tt class="docutils literal"><span class="pre">lxml.html.tostring</span></tt> and <strong>not</strong>
+<tt class="docutils literal"><span class="pre">lxml.tostring</span></tt>.  <tt class="docutils literal"><span class="pre">lxml.tostring(doc)</span></tt> will return the XML
+representation of the document, which is not valid HTML.  In
+particular, things like <tt class="docutils literal"><span class="pre">&lt;script</span> <span class="pre">src=&quot;...&quot;&gt;&lt;/script&gt;</span></tt> will be
+serialized as <tt class="docutils literal"><span class="pre">&lt;script</span> <span class="pre">src=&quot;...&quot;</span> <span class="pre">/&gt;</span></tt>, which completely confuses
+browsers.</p>
+<div class="section" id="viewing-your-html">
+<h3><a class="toc-backref" href="#id8">Viewing your HTML</a><a class="headerlink" href="#viewing-your-html" title="Permalink to this headline">¶</a></h3>
+<p>A handy method for viewing your HTML:
+<tt class="docutils literal"><span class="pre">lxml.html.open_in_browser(lxml_doc)</span></tt> will write the document to
+disk and open it in a browser (with the <a class="reference external" href="http://python.org/doc/current/lib/module-webbrowser.html">webbrowser module</a>).</p>
+</div>
+</div>
+<div class="section" id="working-with-links">
+<h2><a class="toc-backref" href="#id9">Working with links</a><a class="headerlink" href="#working-with-links" title="Permalink to this headline">¶</a></h2>
+<p>There are several methods on elements that allow you to see and modify
+the links in a document.</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">.iterlinks()</span></tt>:</dt>
+<dd><p class="first">This yields <tt class="docutils literal"><span class="pre">(element,</span> <span class="pre">attribute,</span> <span class="pre">link,</span> <span class="pre">pos)</span></tt> for every link in
+the document.  <tt class="docutils literal"><span class="pre">attribute</span></tt> may be None if the link is in the
+text (as will be the case with a <tt class="docutils literal"><span class="pre">&lt;style&gt;</span></tt> tag with
+<tt class="docutils literal"><span class="pre">&#64;import</span></tt>).</p>
+<p>This finds any link in an <tt class="docutils literal"><span class="pre">action</span></tt>, <tt class="docutils literal"><span class="pre">archive</span></tt>, <tt class="docutils literal"><span class="pre">background</span></tt>,
+<tt class="docutils literal"><span class="pre">cite</span></tt>, <tt class="docutils literal"><span class="pre">classid</span></tt>, <tt class="docutils literal"><span class="pre">codebase</span></tt>, <tt class="docutils literal"><span class="pre">data</span></tt>, <tt class="docutils literal"><span class="pre">href</span></tt>,
+<tt class="docutils literal"><span class="pre">longdesc</span></tt>, <tt class="docutils literal"><span class="pre">profile</span></tt>, <tt class="docutils literal"><span class="pre">src</span></tt>, <tt class="docutils literal"><span class="pre">usemap</span></tt>, <tt class="docutils literal"><span class="pre">dynsrc</span></tt>, or
+<tt class="docutils literal"><span class="pre">lowsrc</span></tt> attribute.  It also searches <tt class="docutils literal"><span class="pre">style</span></tt> attributes for
+<tt class="docutils literal"><span class="pre">url(link)</span></tt>, and <tt class="docutils literal"><span class="pre">&lt;style&gt;</span></tt> tags for <tt class="docutils literal"><span class="pre">&#64;import</span></tt> and <tt class="docutils literal"><span class="pre">url()</span></tt>.</p>
+<p class="last">This function does <em>not</em> pay attention to <tt class="docutils literal"><span class="pre">&lt;base</span> <span class="pre">href&gt;</span></tt>.</p>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">.resolve_base_href()</span></tt>:</dt>
+<dd>This function will modify the document in-place to take account of
+<tt class="docutils literal"><span class="pre">&lt;base</span> <span class="pre">href&gt;</span></tt> if the document contains that tag.  In the process
+it will also remove that tag from the document.</dd>
+<dt><tt class="docutils literal"><span class="pre">.make_links_absolute(base_href,</span> <span class="pre">resolve_base_href=True)</span></tt>:</dt>
+<dd><p class="first">This makes all links in the document absolute, assuming that
+<tt class="docutils literal"><span class="pre">base_href</span></tt> is the URL of the document.  So if you pass
+<tt class="docutils literal"><span class="pre">base_href=&quot;http://localhost/foo/bar.html&quot;</span></tt> and there is a link
+to <tt class="docutils literal"><span class="pre">baz.html</span></tt> that will be rewritten as
+<tt class="docutils literal"><span class="pre">http://localhost/foo/baz.html</span></tt>.</p>
+<p class="last">If <tt class="docutils literal"><span class="pre">resolve_base_href</span></tt> is true, then any <tt class="docutils literal"><span class="pre">&lt;base</span> <span class="pre">href&gt;</span></tt> tag
+will be taken into account (just calling
+<tt class="docutils literal"><span class="pre">self.resolve_base_href()</span></tt>).</p>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">.rewrite_links(link_repl_func,</span> <span class="pre">resolve_base_href=True,</span> <span class="pre">base_href=None)</span></tt>:</dt>
+<dd><p class="first">This rewrites all the links in the document using your given link
+replacement function.  If you give a <tt class="docutils literal"><span class="pre">base_href</span></tt> value, all
+links will be passed in after they are joined with this URL.</p>
+<p>For each link <tt class="docutils literal"><span class="pre">link_repl_func(link)</span></tt> is called.  That function
+then returns the new link, or None to remove the attribute or tag
+that contains the link.  Note that all links will be passed in,
+including links like <tt class="docutils literal"><span class="pre">&quot;#anchor&quot;</span></tt> (which is purely internal), and
+things like <tt class="docutils literal"><span class="pre">&quot;mailto:bob&#64;example.com&quot;</span></tt> (or <tt class="docutils literal"><span class="pre">javascript:...</span></tt>).</p>
+<p class="last">If you want access to the context of the link, you should use
+<tt class="docutils literal"><span class="pre">.iterlinks()</span></tt> instead.</p>
+</dd>
+</dl>
+<div class="section" id="functions">
+<h3><a class="toc-backref" href="#id10">Functions</a><a class="headerlink" href="#functions" title="Permalink to this headline">¶</a></h3>
+<p>In addition to these methods, there are corresponding functions:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">iterlinks(html)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">make_links_absolute(html,</span> <span class="pre">base_href,</span> <span class="pre">...)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">rewrite_links(html,</span> <span class="pre">link_repl_func,</span> <span class="pre">...)</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">resolve_base_href(html)</span></tt></li>
+</ul>
+<p>These functions will parse <tt class="docutils literal"><span class="pre">html</span></tt> if it is a string, then return the new
+HTML as a string.  If you pass in a document, the document will be copied
+(except for <tt class="docutils literal"><span class="pre">iterlinks()</span></tt>), the method performed, and the new document
+returned.</p>
+</div>
+</div>
+<div class="section" id="forms">
+<h2><a class="toc-backref" href="#id11">Forms</a><a class="headerlink" href="#forms" title="Permalink to this headline">¶</a></h2>
+<p>Any <tt class="docutils literal"><span class="pre">&lt;form&gt;</span></tt> elements in a document are available through
+the list <tt class="docutils literal"><span class="pre">doc.forms</span></tt> (e.g., <tt class="docutils literal"><span class="pre">doc.forms[0]</span></tt>).  Form, input, select,
+and textarea elements each have special methods.</p>
+<p>Input elements (including <tt class="docutils literal"><span class="pre">&lt;select&gt;</span></tt> and <tt class="docutils literal"><span class="pre">&lt;textarea&gt;</span></tt>) have these
+attributes:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">.name</span></tt>:</dt>
+<dd>The name of the element.</dd>
+<dt><tt class="docutils literal"><span class="pre">.value</span></tt>:</dt>
+<dd><p class="first">The value of an input, the content of a textarea, the selected
+option(s) of a select.  This attribute can be set.</p>
+<p class="last">In the case of a select that takes multiple options (<tt class="docutils literal"><span class="pre">&lt;select</span>
+<span class="pre">multiple&gt;</span></tt>) this will be a set of the selected options; you can
+add or remove items to select and unselect the options.</p>
+</dd>
+</dl>
+<p>Select attributes:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">.value_options</span></tt>:</dt>
+<dd>For select elements, this is all the <em>possible</em> values (the values
+of all the options).</dd>
+<dt><tt class="docutils literal"><span class="pre">.multiple</span></tt>:</dt>
+<dd>For select elements, true if this is a <tt class="docutils literal"><span class="pre">&lt;select</span> <span class="pre">multiple&gt;</span></tt>
+element.</dd>
+</dl>
+<p>Input attributes:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">.type</span></tt>:</dt>
+<dd>The type attribute in <tt class="docutils literal"><span class="pre">&lt;input&gt;</span></tt> elements.</dd>
+<dt><tt class="docutils literal"><span class="pre">.checkable</span></tt>:</dt>
+<dd>True if this can be checked (i.e., true for type=radio and
+type=checkbox).</dd>
+<dt><tt class="docutils literal"><span class="pre">.checked</span></tt>:</dt>
+<dd>If this element is checkable, the checked state.  Raises
+AttributeError on non-checkable inputs.</dd>
+</dl>
+<p>The form itself has these attributes:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">.inputs</span></tt>:</dt>
+<dd>A dictionary-like object that can be used to access input elements
+by name.  When there are multiple input elements with the same
+name, this returns list-like structures that can also be used to
+access the options and their values as a group.</dd>
+<dt><tt class="docutils literal"><span class="pre">.fields</span></tt>:</dt>
+<dd><p class="first">A dictionary-like object used to access <em>values</em> by their name.
+<tt class="docutils literal"><span class="pre">form.inputs</span></tt> returns elements, this only returns values.
+Setting values in this dictionary will effect the form inputs.
+Basically <tt class="docutils literal"><span class="pre">form.fields[x]</span></tt> is equivalent to
+<tt class="docutils literal"><span class="pre">form.inputs[x].value</span></tt> and <tt class="docutils literal"><span class="pre">form.fields[x]</span> <span class="pre">=</span> <span class="pre">y</span></tt> is equivalent
+to <tt class="docutils literal"><span class="pre">form.inputs[x].value</span> <span class="pre">=</span> <span class="pre">y</span></tt>.  (Note that sometimes
+<tt class="docutils literal"><span class="pre">form.inputs[x]</span></tt> returns a compound object, but these objects
+also have <tt class="docutils literal"><span class="pre">.value</span></tt> attributes.)</p>
+<p class="last">If you set this attribute, it is equivalent to
+<tt class="docutils literal"><span class="pre">form.fields.clear();</span> <span class="pre">form.fields.update(new_value)</span></tt></p>
+</dd>
+<dt><tt class="docutils literal"><span class="pre">.form_values()</span></tt>:</dt>
+<dd>Returns a list of <tt class="docutils literal"><span class="pre">[(name,</span> <span class="pre">value),</span> <span class="pre">...]</span></tt>, suitable to be passed
+to <tt class="docutils literal"><span class="pre">urllib.urlencode()</span></tt> for form submission.</dd>
+<dt><tt class="docutils literal"><span class="pre">.action</span></tt>:</dt>
+<dd>The <tt class="docutils literal"><span class="pre">action</span></tt> attribute.  This is resolved to an absolute URL if
+possible.</dd>
+<dt><tt class="docutils literal"><span class="pre">.method</span></tt>:</dt>
+<dd>The <tt class="docutils literal"><span class="pre">method</span></tt> attribute, which defaults to <tt class="docutils literal"><span class="pre">GET</span></tt>.</dd>
+</dl>
+<div class="section" id="form-filling-example">
+<h3><a class="toc-backref" href="#id12">Form Filling Example</a><a class="headerlink" href="#form-filling-example" title="Permalink to this headline">¶</a></h3>
+<p>Note that you can change any of these attributes (values, method,
+action, etc) and then serialize the form to see the updated values.
+You can, for instance, do:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html</span> <span class="kn">import</span> <span class="n">fromstring</span><span class="p">,</span> <span class="n">tostring</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">form_page</span> <span class="o">=</span> <span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&#39;&#39;&lt;html&gt;&lt;body&gt;&lt;form&gt;</span>
+<span class="gp">... </span><span class="s">  Your name: &lt;input type=&quot;text&quot; name=&quot;name&quot;&gt; &lt;br&gt;</span>
+<span class="gp">... </span><span class="s">  Your phone: &lt;input type=&quot;text&quot; name=&quot;phone&quot;&gt; &lt;br&gt;</span>
+<span class="gp">... </span><span class="s">  Your favorite pets: &lt;br&gt;</span>
+<span class="gp">... </span><span class="s">  Dogs: &lt;input type=&quot;checkbox&quot; name=&quot;interest&quot; value=&quot;dogs&quot;&gt; &lt;br&gt;</span>
+<span class="gp">... </span><span class="s">  Cats: &lt;input type=&quot;checkbox&quot; name=&quot;interest&quot; value=&quot;cats&quot;&gt; &lt;br&gt;</span>
+<span class="gp">... </span><span class="s">  Llamas: &lt;input type=&quot;checkbox&quot; name=&quot;interest&quot; value=&quot;llamas&quot;&gt; &lt;br&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;input type=&quot;submit&quot;&gt;&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">form</span> <span class="o">=</span> <span class="n">form_page</span><span class="o">.</span><span class="n">forms</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">form</span><span class="o">.</span><span class="n">fields</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="n">name</span><span class="o">=</span><span class="s">&#39;John Smith&#39;</span><span class="p">,</span>
+<span class="gp">... </span>    <span class="n">phone</span><span class="o">=</span><span class="s">&#39;555-555-3949&#39;</span><span class="p">,</span>
+<span class="gp">... </span>    <span class="n">interest</span><span class="o">=</span><span class="nb">set</span><span class="p">([</span><span class="s">&#39;cats&#39;</span><span class="p">,</span> <span class="s">&#39;llamas&#39;</span><span class="p">]))</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">tostring</span><span class="p">(</span><span class="n">form</span><span class="p">)</span>
+<span class="go">&lt;html&gt;</span>
+<span class="go">  &lt;body&gt;</span>
+<span class="go">    &lt;form&gt;</span>
+<span class="go">    Your name:</span>
+<span class="go">      &lt;input name=&quot;name&quot; type=&quot;text&quot; value=&quot;John Smith&quot;&gt;</span>
+<span class="go">      &lt;br&gt;Your phone:</span>
+<span class="go">      &lt;input name=&quot;phone&quot; type=&quot;text&quot; value=&quot;555-555-3949&quot;&gt;</span>
+<span class="go">      &lt;br&gt;Your favorite pets:</span>
+<span class="go">      &lt;br&gt;Dogs:</span>
+<span class="go">      &lt;input name=&quot;interest&quot; type=&quot;checkbox&quot; value=&quot;dogs&quot;&gt;</span>
+<span class="go">      &lt;br&gt;Cats:</span>
+<span class="go">      &lt;input checked name=&quot;interest&quot; type=&quot;checkbox&quot; value=&quot;cats&quot;&gt;</span>
+<span class="go">      &lt;br&gt;Llamas:</span>
+<span class="go">      &lt;input checked name=&quot;interest&quot; type=&quot;checkbox&quot; value=&quot;llamas&quot;&gt;</span>
+<span class="go">      &lt;br&gt;</span>
+<span class="go">      &lt;input type=&quot;submit&quot;&gt;</span>
+<span class="go">    &lt;/form&gt;</span>
+<span class="go">  &lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="form-submission">
+<h3><a class="toc-backref" href="#id13">Form Submission</a><a class="headerlink" href="#form-submission" title="Permalink to this headline">¶</a></h3>
+<p>You can submit a form with <tt class="docutils literal"><span class="pre">lxml.html.submit_form(form_element)</span></tt>.
+This will return a file-like object (the result of
+<tt class="docutils literal"><span class="pre">urllib.urlopen()</span></tt>).</p>
+<p>If you have extra input values you want to pass you can use the
+keyword argument <tt class="docutils literal"><span class="pre">extra_values</span></tt>, like <tt class="docutils literal"><span class="pre">extra_values={'submit':</span>
+<span class="pre">'Yes!'}</span></tt>.  This is the only way to get submit values into the form,
+as there is no state of &#8220;submitted&#8221; for these elements.</p>
+<p>You can pass in an alternate opener with the <tt class="docutils literal"><span class="pre">open_http</span></tt> keyword
+argument, which is a function with the signature <tt class="docutils literal"><span class="pre">open_http(method,</span>
+<span class="pre">url,</span> <span class="pre">values)</span></tt>.</p>
+<p>Example:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html</span> <span class="kn">import</span> <span class="n">parse</span><span class="p">,</span> <span class="n">submit_form</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">page</span> <span class="o">=</span> <span class="n">parse</span><span class="p">(</span><span class="s">&#39;http://tinyurl.com&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">page</span><span class="o">.</span><span class="n">forms</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">fields</span><span class="p">[</span><span class="s">&#39;url&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;http://codespeak.net/lxml/&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">parse</span><span class="p">(</span><span class="n">submit_form</span><span class="p">(</span><span class="n">page</span><span class="o">.</span><span class="n">forms</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span><span class="n">a</span><span class="o">.</span><span class="n">attrib</span><span class="p">[</span><span class="s">&#39;href&#39;</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;//a[@target=&#39;_blank&#39;]&quot;</span><span class="p">)]</span>
+<span class="go">[&#39;http://tinyurl.com/2xae8s&#39;, &#39;http://preview.tinyurl.com/2xae8s&#39;]</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="cleaning-up-html">
+<h2><a class="toc-backref" href="#id14">Cleaning up HTML</a><a class="headerlink" href="#cleaning-up-html" title="Permalink to this headline">¶</a></h2>
+<p>The module <tt class="docutils literal"><span class="pre">lxml.html.clean</span></tt> provides a <tt class="docutils literal"><span class="pre">Cleaner</span></tt> class for cleaning up
+HTML pages.  It supports removing embedded or script content, special tags,
+CSS style annotations and much more.</p>
+<p>Say, you have an evil web page from an untrusted source that contains lots of
+content that upsets browsers and tries to run evil code on the client side:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">html</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;html&gt;</span>
+<span class="gp">... </span><span class="s"> &lt;head&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;script type=&quot;text/javascript&quot; src=&quot;evil-site&quot;&gt;&lt;/script&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;link rel=&quot;alternate&quot; type=&quot;text/rss&quot; src=&quot;evil-rss&quot;&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;style&gt;</span>
+<span class="gp">... </span><span class="s">     body {background-image: url(javascript:do_evil)};</span>
+<span class="gp">... </span><span class="s">     div {color: expression(evil)};</span>
+<span class="gp">... </span><span class="s">   &lt;/style&gt;</span>
+<span class="gp">... </span><span class="s"> &lt;/head&gt;</span>
+<span class="gp">... </span><span class="s"> &lt;body onload=&quot;evil_function()&quot;&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;!-- I am interpreted for EVIL! --&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;a href=&quot;javascript:evil_function()&quot;&gt;a link&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;a href=&quot;#&quot; onclick=&quot;evil_function()&quot;&gt;another link&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;p onclick=&quot;evil_function()&quot;&gt;a paragraph&lt;/p&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;div style=&quot;display: none&quot;&gt;secret EVIL!&lt;/div&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;object&gt; of EVIL! &lt;/object&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;iframe src=&quot;evil-site&quot;&gt;&lt;/iframe&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;form action=&quot;evil-site&quot;&gt;</span>
+<span class="gp">... </span><span class="s">     Password: &lt;input type=&quot;password&quot; name=&quot;password&quot;&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;/form&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;blink&gt;annoying EVIL!&lt;/blink&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;a href=&quot;evil-site&quot;&gt;spam spam SPAM!&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;image src=&quot;evil!&quot;&gt;</span>
+<span class="gp">... </span><span class="s"> &lt;/body&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/html&gt;&#39;&#39;&#39;</span>
+</pre></div>
+</div>
+<p>To remove the all suspicious content from this unparsed document, use the
+<tt class="docutils literal"><span class="pre">clean_html</span></tt> function:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html.clean</span> <span class="kn">import</span> <span class="n">clean_html</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">clean_html</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">&lt;html&gt;</span>
+<span class="go">  &lt;body&gt;</span>
+<span class="go">    &lt;div&gt;</span>
+<span class="go">      &lt;style&gt;/* deleted */&lt;/style&gt;</span>
+<span class="go">      &lt;a href=&quot;&quot;&gt;a link&lt;/a&gt;</span>
+<span class="go">      &lt;a href=&quot;#&quot;&gt;another link&lt;/a&gt;</span>
+<span class="go">      &lt;p&gt;a paragraph&lt;/p&gt;</span>
+<span class="go">      &lt;div&gt;secret EVIL!&lt;/div&gt;</span>
+<span class="go">      of EVIL!</span>
+<span class="go">      Password:</span>
+<span class="go">      annoying EVIL!</span>
+<span class="go">      &lt;a href=&quot;evil-site&quot;&gt;spam spam SPAM!&lt;/a&gt;</span>
+<span class="go">      &lt;img src=&quot;evil!&quot;&gt;</span>
+<span class="go">    &lt;/div&gt;</span>
+<span class="go">  &lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>The <tt class="docutils literal"><span class="pre">Cleaner</span></tt> class supports several keyword arguments to control exactly
+which content is removed:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html.clean</span> <span class="kn">import</span> <span class="n">Cleaner</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">cleaner</span> <span class="o">=</span> <span class="n">Cleaner</span><span class="p">(</span><span class="n">page_structure</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">links</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">cleaner</span><span class="o">.</span><span class="n">clean_html</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">&lt;html&gt;</span>
+<span class="go">  &lt;head&gt;</span>
+<span class="go">    &lt;link rel=&quot;alternate&quot; src=&quot;evil-rss&quot; type=&quot;text/rss&quot;&gt;</span>
+<span class="go">    &lt;style&gt;/* deleted */&lt;/style&gt;</span>
+<span class="go">  &lt;/head&gt;</span>
+<span class="go">  &lt;body&gt;</span>
+<span class="go">    &lt;a href=&quot;&quot;&gt;a link&lt;/a&gt;</span>
+<span class="go">    &lt;a href=&quot;#&quot;&gt;another link&lt;/a&gt;</span>
+<span class="go">    &lt;p&gt;a paragraph&lt;/p&gt;</span>
+<span class="go">    &lt;div&gt;secret EVIL!&lt;/div&gt;</span>
+<span class="go">    of EVIL!</span>
+<span class="go">    Password:</span>
+<span class="go">    annoying EVIL!</span>
+<span class="go">    &lt;a href=&quot;evil-site&quot;&gt;spam spam SPAM!&lt;/a&gt;</span>
+<span class="go">    &lt;img src=&quot;evil!&quot;&gt;</span>
+<span class="go">  &lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">cleaner</span> <span class="o">=</span> <span class="n">Cleaner</span><span class="p">(</span><span class="n">style</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">links</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">add_nofollow</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
+<span class="gp">... </span>                  <span class="n">page_structure</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">safe_attrs_only</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">cleaner</span><span class="o">.</span><span class="n">clean_html</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">&lt;html&gt;</span>
+<span class="go">  &lt;head&gt;</span>
+<span class="go">  &lt;/head&gt;</span>
+<span class="go">  &lt;body&gt;</span>
+<span class="go">    &lt;a href=&quot;&quot;&gt;a link&lt;/a&gt;</span>
+<span class="go">    &lt;a href=&quot;#&quot;&gt;another link&lt;/a&gt;</span>
+<span class="go">    &lt;p&gt;a paragraph&lt;/p&gt;</span>
+<span class="go">    &lt;div&gt;secret EVIL!&lt;/div&gt;</span>
+<span class="go">    of EVIL!</span>
+<span class="go">    Password:</span>
+<span class="go">    annoying EVIL!</span>
+<span class="go">    &lt;a href=&quot;evil-site&quot; rel=&quot;nofollow&quot;&gt;spam spam SPAM!&lt;/a&gt;</span>
+<span class="go">    &lt;img src=&quot;evil!&quot;&gt;</span>
+<span class="go">  &lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>You can also whitelist some otherwise dangerous content with
+<tt class="docutils literal"><span class="pre">Cleaner(host_whitelist=['www.youtube.com'])</span></tt>, which would allow
+embedded media from YouTube, while still filtering out embedded media
+from other sites.</p>
+<p>See the docstring of <tt class="docutils literal"><span class="pre">Cleaner</span></tt> for the details of what can be
+cleaned.</p>
+<div class="section" id="autolink">
+<h3><a class="toc-backref" href="#id15">autolink</a><a class="headerlink" href="#autolink" title="Permalink to this headline">¶</a></h3>
+<p>In addition to cleaning up malicious HTML, <tt class="docutils literal"><span class="pre">lxml.html.clean</span></tt>
+contains functions to do other things to your HTML.  This includes
+autolinking:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">autolink</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+
+<span class="n">autolink_html</span><span class="p">(</span><span class="n">html</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This finds anything that looks like a link (e.g.,
+<tt class="docutils literal"><span class="pre">http://example.com</span></tt>) in the <em>text</em> of an HTML document, and
+turns it into an anchor.  It avoids making bad links.</p>
+<p>Links in the elements <tt class="docutils literal"><span class="pre">&lt;textarea&gt;</span></tt>, <tt class="docutils literal"><span class="pre">&lt;pre&gt;</span></tt>, <tt class="docutils literal"><span class="pre">&lt;code&gt;</span></tt>,
+anything in the head of the document.  You can pass in a list of
+elements to avoid in <tt class="docutils literal"><span class="pre">avoid_elements=['textarea',</span> <span class="pre">...]</span></tt>.</p>
+<p>Links to some hosts can be avoided.  By default links to
+<tt class="docutils literal"><span class="pre">localhost*</span></tt>, <tt class="docutils literal"><span class="pre">example.*</span></tt> and <tt class="docutils literal"><span class="pre">127.0.0.1</span></tt> are not
+autolinked.  Pass in <tt class="docutils literal"><span class="pre">avoid_hosts=[list_of_regexes]</span></tt> to control
+this.</p>
+<p>Elements with the <tt class="docutils literal"><span class="pre">nolink</span></tt> CSS class are not autolinked.  Pass
+in <tt class="docutils literal"><span class="pre">avoid_classes=['code',</span> <span class="pre">...]</span></tt> to control this.</p>
+<p>The <tt class="docutils literal"><span class="pre">autolink_html()</span></tt> version of the function parses the HTML
+string first, and returns a string.</p>
+</div>
+<div class="section" id="wordwrap">
+<h3><a class="toc-backref" href="#id16">wordwrap</a><a class="headerlink" href="#wordwrap" title="Permalink to this headline">¶</a></h3>
+<p>You can also wrap long words in your html:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">word_break</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">max_width</span><span class="o">=</span><span class="mi">40</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+
+<span class="n">word_break_html</span><span class="p">(</span><span class="n">html</span><span class="p">,</span> <span class="o">...</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This finds any long words in the text of the document and inserts
+<tt class="docutils literal"><span class="pre">&amp;#8203;</span></tt> in the document (which is the Unicode zero-width space).</p>
+<p>This avoids the elements <tt class="docutils literal"><span class="pre">&lt;pre&gt;</span></tt>, <tt class="docutils literal"><span class="pre">&lt;textarea&gt;</span></tt>, and <tt class="docutils literal"><span class="pre">&lt;code&gt;</span></tt>.
+You can control this with <tt class="docutils literal"><span class="pre">avoid_elements=['textarea',</span> <span class="pre">...]</span></tt>.</p>
+<p>It also avoids elements with the CSS class <tt class="docutils literal"><span class="pre">nobreak</span></tt>.  You can
+control this with <tt class="docutils literal"><span class="pre">avoid_classes=['code',</span> <span class="pre">...]</span></tt>.</p>
+<p>Lastly you can control the character that is inserted with
+<tt class="docutils literal"><span class="pre">break_character=u'\u200b'</span></tt>.  However, you cannot insert markup,
+only text.</p>
+<p><tt class="docutils literal"><span class="pre">word_break_html(html)</span></tt> parses the HTML document and returns a
+string.</p>
+</div>
+</div>
+<div class="section" id="html-diff">
+<h2><a class="toc-backref" href="#id17">HTML Diff</a><a class="headerlink" href="#html-diff" title="Permalink to this headline">¶</a></h2>
+<p>The module <tt class="docutils literal"><span class="pre">lxml.html.diff</span></tt> offers some ways to visualize
+differences in HTML documents.  These differences are <em>content</em>
+oriented.  That is, changes in markup are largely ignored; only
+changes in the content itself are highlighted.</p>
+<p>There are two ways to view differences: <tt class="docutils literal"><span class="pre">htmldiff</span></tt> and
+<tt class="docutils literal"><span class="pre">html_annotate</span></tt>.  One shows differences with <tt class="docutils literal"><span class="pre">&lt;ins&gt;</span></tt> and
+<tt class="docutils literal"><span class="pre">&lt;del&gt;</span></tt>, while the other annotates a set of changes similar to <tt class="docutils literal"><span class="pre">svn</span>
+<span class="pre">blame</span></tt>.  Both these functions operate on text, and work best with
+content fragments (only what goes in <tt class="docutils literal"><span class="pre">&lt;body&gt;</span></tt>), not complete
+documents.</p>
+<p>Example of <tt class="docutils literal"><span class="pre">htmldiff</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html.diff</span> <span class="kn">import</span> <span class="n">htmldiff</span><span class="p">,</span> <span class="n">html_annotate</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc1</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;&lt;p&gt;Here is some text.&lt;/p&gt;&#39;&#39;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc2</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;&lt;p&gt;Here is &lt;b&gt;a lot&lt;/b&gt; of &lt;i&gt;text&lt;/i&gt;.&lt;/p&gt;&#39;&#39;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc3</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;&lt;p&gt;Here is &lt;b&gt;a little&lt;/b&gt; &lt;i&gt;text&lt;/i&gt;.&lt;/p&gt;&#39;&#39;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">htmldiff</span><span class="p">(</span><span class="n">doc1</span><span class="p">,</span> <span class="n">doc2</span><span class="p">)</span>
+<span class="go">&lt;p&gt;Here is &lt;ins&gt;&lt;b&gt;a lot&lt;/b&gt; of &lt;i&gt;text&lt;/i&gt;.&lt;/ins&gt; &lt;del&gt;some text.&lt;/del&gt; &lt;/p&gt;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">html_annotate</span><span class="p">([(</span><span class="n">doc1</span><span class="p">,</span> <span class="s">&#39;author1&#39;</span><span class="p">),</span> <span class="p">(</span><span class="n">doc2</span><span class="p">,</span> <span class="s">&#39;author2&#39;</span><span class="p">),</span>
+<span class="gp">... </span>                     <span class="p">(</span><span class="n">doc3</span><span class="p">,</span> <span class="s">&#39;author3&#39;</span><span class="p">)])</span>
+<span class="go">&lt;p&gt;&lt;span title=&quot;author1&quot;&gt;Here is&lt;/span&gt;</span>
+<span class="go">   &lt;b&gt;&lt;span title=&quot;author2&quot;&gt;a&lt;/span&gt;</span>
+<span class="go">   &lt;span title=&quot;author3&quot;&gt;little&lt;/span&gt;&lt;/b&gt;</span>
+<span class="go">   &lt;i&gt;&lt;span title=&quot;author2&quot;&gt;text&lt;/span&gt;&lt;/i&gt;</span>
+<span class="go">   &lt;span title=&quot;author2&quot;&gt;.&lt;/span&gt;&lt;/p&gt;</span>
+</pre></div>
+</div>
+<p>As you can see, it is imperfect as such things tend to be.  On larger
+tracts of text with larger edits it will generally do better.</p>
+<p>The <tt class="docutils literal"><span class="pre">html_annotate</span></tt> function can also take an optional second
+argument, <tt class="docutils literal"><span class="pre">markup</span></tt>.  This is a function like <tt class="docutils literal"><span class="pre">markup(text,</span>
+<span class="pre">version)</span></tt> that returns the given text marked up with the given
+version.  The default version, the output of which you see in the
+example, looks like:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">default_markup</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="n">version</span><span class="p">):</span>
+    <span class="k">return</span> <span class="s">&#39;&lt;span title=&quot;</span><span class="si">%s</span><span class="s">&quot;&gt;</span><span class="si">%s</span><span class="s">&lt;/span&gt;&#39;</span> <span class="o">%</span> <span class="p">(</span>
+        <span class="n">cgi</span><span class="o">.</span><span class="n">escape</span><span class="p">(</span><span class="nb">unicode</span><span class="p">(</span><span class="n">version</span><span class="p">),</span> <span class="mi">1</span><span class="p">),</span> <span class="n">text</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="examples">
+<h2><a class="toc-backref" href="#id18">Examples</a><a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="microformat-example">
+<h3><a class="toc-backref" href="#id19">Microformat Example</a><a class="headerlink" href="#microformat-example" title="Permalink to this headline">¶</a></h3>
+<p>This example parses the <a class="reference external" href="http://microformats.org/wiki/hcard">hCard</a>
+microformat.</p>
+<p>First we get the page:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">urllib</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html</span> <span class="kn">import</span> <span class="n">fromstring</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">url</span> <span class="o">=</span> <span class="s">&#39;http://microformats.org/&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">content</span> <span class="o">=</span> <span class="n">urllib</span><span class="o">.</span><span class="n">urlopen</span><span class="p">(</span><span class="n">url</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">fromstring</span><span class="p">(</span><span class="n">content</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span><span class="o">.</span><span class="n">make_links_absolute</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Then we create some objects to put the information in:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">Card</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kw</span><span class="p">:</span>
+<span class="gp">... </span>            <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">Phone</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">phone</span><span class="p">,</span> <span class="n">types</span><span class="o">=</span><span class="p">()):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">phone</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span> <span class="o">=</span> <span class="n">phone</span><span class="p">,</span> <span class="n">types</span>
+</pre></div>
+</div>
+<p>And some generally handy functions for microformats:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">get_text</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">class_name</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="n">els</span> <span class="o">=</span> <span class="n">el</span><span class="o">.</span><span class="n">find_class</span><span class="p">(</span><span class="n">class_name</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="k">if</span> <span class="n">els</span><span class="p">:</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="n">els</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text_content</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">return</span> <span class="s">&#39;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">get_value</span><span class="p">(</span><span class="n">el</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">return</span> <span class="n">get_text</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="s">&#39;value&#39;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">el</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">get_all_texts</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">class_name</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">return</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">text_content</span><span class="p">()</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">els</span><span class="o">.</span><span class="n">find_class</span><span class="p">(</span><span class="n">class_name</span><span class="p">)]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">parse_addresses</span><span class="p">(</span><span class="n">el</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="c"># Ideally this would parse street, etc.</span>
+<span class="gp">... </span>    <span class="k">return</span> <span class="n">el</span><span class="o">.</span><span class="n">find_class</span><span class="p">(</span><span class="s">&#39;adr&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Then the parsing:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">doc</span><span class="o">.</span><span class="n">find_class</span><span class="p">(</span><span class="s">&#39;hcard&#39;</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="n">card</span> <span class="o">=</span> <span class="n">Card</span><span class="p">()</span>
+<span class="gp">... </span>    <span class="n">card</span><span class="o">.</span><span class="n">el</span> <span class="o">=</span> <span class="n">el</span>
+<span class="gp">... </span>    <span class="n">card</span><span class="o">.</span><span class="n">fn</span> <span class="o">=</span> <span class="n">get_text</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="s">&#39;fn&#39;</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="n">card</span><span class="o">.</span><span class="n">tels</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="gp">... </span>    <span class="k">for</span> <span class="n">tel_el</span> <span class="ow">in</span> <span class="n">card</span><span class="o">.</span><span class="n">find_class</span><span class="p">(</span><span class="s">&#39;tel&#39;</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">card</span><span class="o">.</span><span class="n">tels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Phone</span><span class="p">(</span><span class="n">get_value</span><span class="p">(</span><span class="n">tel_el</span><span class="p">),</span>
+<span class="gp">... </span>                               <span class="n">get_all_texts</span><span class="p">(</span><span class="n">tel_el</span><span class="p">,</span> <span class="s">&#39;type&#39;</span><span class="p">)))</span>
+<span class="gp">... </span>    <span class="n">card</span><span class="o">.</span><span class="n">addresses</span> <span class="o">=</span> <span class="n">parse_addresses</span><span class="p">(</span><span class="n">el</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">lxml.html</a><ul>
+<li><a class="reference internal" href="#parsing-html">Parsing HTML</a><ul>
+<li><a class="reference internal" href="#parsing-html-fragments">Parsing HTML fragments</a></li>
+<li><a class="reference internal" href="#really-broken-pages">Really broken pages</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#html-element-methods">HTML Element Methods</a></li>
+<li><a class="reference internal" href="#running-html-doctests">Running HTML doctests</a></li>
+<li><a class="reference internal" href="#creating-html-with-the-e-factory">Creating HTML with the E-factory</a><ul>
+<li><a class="reference internal" href="#viewing-your-html">Viewing your HTML</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#working-with-links">Working with links</a><ul>
+<li><a class="reference internal" href="#functions">Functions</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#forms">Forms</a><ul>
+<li><a class="reference internal" href="#form-filling-example">Form Filling Example</a></li>
+<li><a class="reference internal" href="#form-submission">Form Submission</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#cleaning-up-html">Cleaning up HTML</a><ul>
+<li><a class="reference internal" href="#autolink">autolink</a></li>
+<li><a class="reference internal" href="#wordwrap">wordwrap</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#html-diff">HTML Diff</a></li>
+<li><a class="reference internal" href="#examples">Examples</a><ul>
+<li><a class="reference internal" href="#microformat-example">Microformat Example</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/lxmlhtml.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/main.html b/doc/sphinx/main.html
new file mode 100644 (file)
index 0000000..1a0a6b5
--- /dev/null
@@ -0,0 +1,260 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <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" />
+
+    <title>lxml &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="#">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="lxml">
+<h1>lxml<a class="headerlink" href="#lxml" title="Permalink to this headline">¶</a></h1>
+<dl class="class">
+<dt id="pagequote">
+<em class="property">class </em><tt class="descname">pagequote</tt><a class="headerlink" href="#pagequote" title="Permalink to this definition">¶</a></dt>
+<dd></dd></dl>
+
+<div class="line-block">
+<div class="line"><a class="reference external" href="http://thread.gmane.org/gmane.comp.python.lxml.devel/3252/focus=3258">» lxml takes all the pain out of XML. Â«</a></div>
+<div class="line">Stephan Richter</div>
+</div>
+<dl class="class">
+<dt id="eyecatcher">
+<em class="property">class </em><tt class="descname">eyecatcher</tt><a class="headerlink" href="#eyecatcher" title="Permalink to this definition">¶</a></dt>
+<dd><p>lxml is the most feature-rich
+and easy-to-use library
+for processing XML and HTML
+in the Python language.</p>
+</dd></dl>
+
+<div class="section" id="introduction">
+<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
+<p>The lxml XML toolkit is a Pythonic binding for the C libraries
+<a class="reference external" href="http://xmlsoft.org/">libxml2</a> and <a class="reference external" href="http://xmlsoft.org/XSLT/">libxslt</a>.  It is unique in that it combines the speed and
+XML feature completeness of these libraries with the simplicity of a
+native Python API, mostly compatible but superior to the well-known
+<a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a> API.  See the <a class="reference external" href="intro.html">introduction</a> for more information about
+background and goals of the lxml project.  Some common questions are
+answered in the <a class="reference external" href="FAQ.html">FAQ</a>.</p>
+<p>For commercial consulting and customisations, please <a class="reference external" href="http://consulting.behnel.de/">contact Stefan Behnel</a>.</p>
+</div>
+<div class="section" id="documentation">
+<h2>Documentation<a class="headerlink" href="#documentation" title="Permalink to this headline">¶</a></h2>
+<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-2.3.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">
+<li>Tutorials:<ul>
+<li>the <a class="reference external" href="tutorial.html">lxml.etree tutorial for XML processing</a></li>
+<li>John Shipman&#8217;s tutorial on <a class="reference external" href="http://www.nmt.edu/tcc/help/pubs/pylxml/">Python XML processing with lxml</a></li>
+<li>Fredrik Lundh&#8217;s <a class="reference external" href="http://effbot.org/zone/element.htm">tutorial for ElementTree</a></li>
+</ul>
+</li>
+<li>ElementTree:<ul>
+<li><a class="reference external" href="http://effbot.org/zone/element-index.htm#documentation">ElementTree API</a></li>
+<li><a class="reference external" href="compatibility.html">compatibility</a> and differences of lxml.etree</li>
+<li><a class="reference external" href="performance.html">ElementTree performance</a> characteristics and comparison</li>
+</ul>
+</li>
+<li>lxml.etree:<ul>
+<li><a class="reference external" href="api.html">lxml.etree specific API</a> documentation</li>
+<li>the <a class="reference external" href="api/index.html">generated API documentation</a> as a reference</li>
+<li><a class="reference external" href="parsing.html">parsing</a> and <a class="reference external" href="validation.html">validating</a> XML</li>
+<li><a class="reference external" href="xpathxslt.html">XPath and XSLT</a> support</li>
+<li>Python <a class="reference external" href="extensions.html">XPath extension functions</a> for XPath and XSLT</li>
+<li><a class="reference external" href="element_classes.html">custom XML element classes</a> for custom XML APIs (see <a class="reference external" href="s5/lxml-ep2008.html">EuroPython 2008 talk</a>)</li>
+<li>a <a class="reference external" href="sax.html">SAX compliant API</a> for interfacing with other XML tools</li>
+<li>a <a class="reference external" href="capi.html">C-level API</a> for interfacing with external C/Cython modules</li>
+</ul>
+</li>
+<li>lxml.objectify:<ul>
+<li><a class="reference external" href="objectify.html">lxml.objectify</a> API documentation</li>
+<li>a brief comparison of <a class="reference external" href="FAQ.html#what-is-the-difference-between-lxml-etree-and-lxml-objectify">objectify and etree</a></li>
+</ul>
+</li>
+</ul>
+<p>lxml.etree follows the <a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a> API as much as possible, building
+it on top of the native libxml2 tree.  If you are new to ElementTree,
+start with the <a class="reference external" href="tutorial.html">lxml.etree tutorial for XML processing</a>.  See also the
+ElementTree <a class="reference external" href="compatibility.html">compatibility</a> overview and the <a class="reference external" href="performance.html">ElementTree performance</a>
+page comparing lxml to the original <a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a> and <a class="reference external" href="http://effbot.org/zone/celementtree.htm">cElementTree</a>
+implementations.</p>
+<p>Right after the <a class="reference external" href="tutorial.html">lxml.etree tutorial for XML processing</a> and the
+<a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a> documentation, the next place to look is the <a class="reference external" href="api.html">lxml.etree
+specific API</a> documentation.  It describes how lxml extends the
+ElementTree API to expose libxml2 and libxslt specific XML
+functionality, such as <a class="reference external" href="http://www.w3.org/TR/xpath/">XPath</a>, <a class="reference external" href="http://www.relaxng.org/">Relax NG</a>, <a class="reference external" href="http://www.w3.org/XML/Schema">XML Schema</a>, <a class="reference external" href="http://www.w3.org/TR/xslt">XSLT</a>, and
+<a class="reference external" href="http://www.w3.org/TR/xml-c14n">c14n</a>.  Python code can be called from XPath expressions and XSLT
+stylesheets through the use of <a class="reference external" href="extensions.html">XPath extension functions</a>.  lxml
+also offers a <a class="reference external" href="sax.html">SAX compliant API</a>, that works with the SAX support in
+the standard library.</p>
+<p>There is a separate module <a class="reference external" href="objectify.html">lxml.objectify</a> that implements a data-binding
+API on top of lxml.etree.  See the <a class="reference external" href="FAQ.html#what-is-the-difference-between-lxml-etree-and-lxml-objectify">objectify and etree</a> FAQ entry for a
+comparison.</p>
+<p>In addition to the ElementTree API, lxml also features a sophisticated
+API for <a class="reference external" href="element_classes.html">custom XML element classes</a>.  This is a simple way to write
+arbitrary XML driven APIs on top of lxml.  lxml.etree also has a
+<a class="reference external" href="capi.html">C-level API</a> that can be used to efficiently extend lxml.etree in
+external C modules, including fast custom element class support.</p>
+</div>
+<div class="section" id="download">
+<h2>Download<a class="headerlink" href="#download" title="Permalink to this headline">¶</a></h2>
+<p>The best way to download lxml is to visit <a class="reference external" href="http://pypi.python.org/pypi/lxml/">lxml at the Python Package
+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>.  Binary builds for
+MS Windows usually become available through PyPI a few days after a
+source release.  If you can&#8217;t wait, consider trying a less recent
+release version first.</p>
+<p>The latest version is <a class="reference external" href="/files/lxml-2.3.tgz">lxml 2.3</a>, released 2011-02-06
+(<a class="reference external" href="/changes-2.3.html">changes for 2.3</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>
+<p>This complete web site (including the generated API documentation) is
+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"><span class="pre">doc/html</span></tt> directory out of the source tree.</p>
+<p>It&#8217;s also possible to check out the latest development version of lxml
+from github directly, using a command like this (assuming you use hg
+and have hg-git installed):</p>
+<div class="highlight-python"><pre>hg clone https://github.com/lxml/lxml.git lxml</pre>
+</div>
+<p>You can also browse the <a class="reference external" href="https://github.com/lxml/lxml/">source repository</a> and its history through
+the web.  Please read <a class="reference external" href="build.html">how to build lxml from source</a> first.  The
+<a class="reference external" href="https://github.com/lxml/lxml/blob/master/CHANGES.txt">latest CHANGES</a> of the developer version are also accessible.  You
+can check there if a bug you found has been fixed or a feature you
+want has been implemented in the latest trunk version.</p>
+</div>
+<div class="section" id="mailing-list">
+<h2>Mailing list<a class="headerlink" href="#mailing-list" title="Permalink to this headline">¶</a></h2>
+<p>Questions? Suggestions? Code to contribute? We have a <a class="reference external" href="http://lxml.de/mailinglist/">mailing list</a>.</p>
+<p>You can search the archive with <a class="reference external" href="http://blog.gmane.org/gmane.comp.python.lxml.devel">Gmane</a> or <a class="reference external" href="http://www.google.com/webhp?q=site:comments.gmane.org%2Fgmane.comp.python.lxml.devel+">Google</a>.</p>
+</div>
+<div class="section" id="bug-tracker">
+<h2>Bug tracker<a class="headerlink" href="#bug-tracker" title="Permalink to this headline">¶</a></h2>
+<p>lxml uses the <a class="reference external" href="https://launchpad.net/lxml/">launchpad bug tracker</a>.  If you are sure you found a
+bug in lxml, please file a bug report there.  If you are not sure
+whether some unexpected behaviour of lxml is a bug or not, please
+check the documentation and ask on the <a class="reference external" href="http://lxml.de/mailinglist/">mailing list</a> first.  Do not
+forget to search the archive (e.g. with <a class="reference external" href="http://blog.gmane.org/gmane.comp.python.lxml.devel">Gmane</a>)!</p>
+</div>
+<div class="section" id="license">
+<h2>License<a class="headerlink" href="#license" title="Permalink to this headline">¶</a></h2>
+<p>The lxml library is shipped under a <a class="reference external" href="https://github.com/lxml/lxml/blob/master/doc/licenses/BSD.txt">BSD license</a>. libxml2 and libxslt2
+itself are shipped under the <a class="reference external" href="http://www.opensource.org/licenses/mit-license.html">MIT license</a>. There should therefore be no
+obstacle to using lxml in your codebase.</p>
+</div>
+<div class="section" id="old-versions">
+<h2>Old Versions<a class="headerlink" href="#old-versions" title="Permalink to this headline">¶</a></h2>
+<p>See the web sites of lxml <a class="reference external" href="http://lxml.de/1.3/">1.3</a>, <a class="reference external" href="http://lxml.de/2.0/">2.0</a>, <a class="reference external" href="http://lxml.de/2.1/">2.1</a>, <a class="reference external" href="http://lxml.de/2.2/">2.2</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-2.3beta1.tgz">lxml 2.3beta1</a>, released 2010-09-06 (<a class="reference external" href="/changes-2.3beta1.html">changes for 2.3beta1</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.3alpha2.tgz">lxml 2.3alpha2</a>, released 2010-07-24 (<a class="reference external" href="/changes-2.3alpha2.html">changes for 2.3alpha2</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.3alpha1.tgz">lxml 2.3alpha1</a>, released 2010-06-19 (<a class="reference external" href="/changes-2.3alpha1.html">changes for 2.3alpha1</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.2.8.tgz">lxml 2.2.8</a>, released 2010-09-02 (<a class="reference external" href="/changes-2.2.8.html">changes for 2.2.8</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.2.7.tgz">lxml 2.2.7</a>, released 2010-07-24 (<a class="reference external" href="/changes-2.2.7.html">changes for 2.2.7</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.2.6.tgz">lxml 2.2.6</a>, released 2010-03-02 (<a class="reference external" href="/changes-2.2.6.html">changes for 2.2.6</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.2.5.tgz">lxml 2.2.5</a>, released 2010-02-28 (<a class="reference external" href="/changes-2.2.5.html">changes for 2.2.5</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.2.4.tgz">lxml 2.2.4</a>, released 2009-11-11 (<a class="reference external" href="/changes-2.2.4.html">changes for 2.2.4</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.2.3.tgz">lxml 2.2.3</a>, released 2009-10-30 (<a class="reference external" href="/changes-2.2.3.html">changes for 2.2.3</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.2.2.tgz">lxml 2.2.2</a>, released 2009-06-21 (<a class="reference external" href="/changes-2.2.2.html">changes for 2.2.2</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.2.1.tgz">lxml 2.2.1</a>, released 2009-06-02 (<a class="reference external" href="/changes-2.2.1.html">changes for 2.2.1</a>)</li>
+<li><a class="reference external" href="/files/lxml-2.2.tgz">lxml 2.2</a>, released 2009-03-21 (<a class="reference external" href="/changes-2.2.html">changes for 2.2</a>)</li>
+<li><a class="reference external" href="http://lxml.de/2.2/#old-versions">older releases</a></li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="#">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="#">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">lxml</a><ul>
+<li><a class="reference internal" href="#introduction">Introduction</a></li>
+<li><a class="reference internal" href="#documentation">Documentation</a></li>
+<li><a class="reference internal" href="#download">Download</a></li>
+<li><a class="reference internal" href="#mailing-list">Mailing list</a></li>
+<li><a class="reference internal" href="#bug-tracker">Bug tracker</a></li>
+<li><a class="reference internal" href="#license">License</a></li>
+<li><a class="reference internal" href="#old-versions">Old Versions</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/main.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="#">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/memorymanagement.html b/doc/sphinx/memorymanagement.html
new file mode 100644 (file)
index 0000000..3f81706
--- /dev/null
@@ -0,0 +1,162 @@
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Memory management &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="shortcut icon" href="_static/favicon.ico"/>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="memory-management">
+<h1>Memory management<a class="headerlink" href="#memory-management" title="Permalink to this headline">¶</a></h1>
+<p>There can be two types of nodes:</p>
+<ul class="simple">
+<li>those connected to an existing tree</li>
+<li>those unconnected. These may be the top node of a tree</li>
+</ul>
+<p>Nodes consist of a C-level libxml2 node, Node for short, and
+optionally a Python-level proxy node, Proxy. Zero, one or more Proxies can
+exist for a single Node.</p>
+<p>Proxies are garbage collected automatically by Python. Nodes are not
+garbage collected at all. Instead, explicit mechanisms exist for
+Nodes to clear them and the tree they may be the top of.</p>
+<p>A Node can be safely freed when:</p>
+<ul class="simple">
+<li>no Proxy is connected to this Node</li>
+<li>no Proxy cannot be created for this Node</li>
+</ul>
+<p>A Proxy cannot be created to a CNode when:</p>
+<ul class="simple">
+<li>no Proxy exist for nodes that are connected to that Node</li>
+</ul>
+<p>This is the case when:</p>
+<ul class="simple">
+<li>the Node is in a tree that has no Proxy connected to any of the nodes.</li>
+</ul>
+<p>This means that the whole tree in such a condition can be freed.</p>
+<p>Detecting whether a Node is in a tree thas has no Proxies connected to
+it can be done by relying on Python&#8217;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
+the Document Proxy. When no more references exist in the system to the
+top Proxy, this means no more Proxies exist that point to the Node
+tree the top Proxy is the top of. If this Node tree is unconnected;
+i.e. it is not a subtree, this means that tree can be safely garbage
+collected.</p>
+<p>A special case exists for document references. Each Proxy will always
+have a reference to the Document Proxy, as any Node will have such a
+reference to the Document Node. This means that a Document Node can
+only be garbage collected when no more Proxies at all exist anymore
+which refer to the Document. This is a separate system from the
+top-Node references, even though the top-node in many cases will be
+the Document. This because there is no way to get to a node that is
+not connected to the Document tree from a Document Proxy.</p>
+<p>This approach requires a system that can keep track of the top of the
+tree in any case. Usually this is simple: when a Proxy gets connected,
+the tree top becomes the tree top of whatever node it is connected
+to.</p>
+<p>Sometimes this is more difficult: a Proxy may exist pointing to a node
+in a subtree that just got connected. The top reference cannot be
+updated. This is a problem in the following case:</p>
+<blockquote>
+<blockquote>
+a</blockquote>
+<p>b    c         h</p>
+</blockquote>
+<dl class="docutils">
+<dt>d  e  f  g     i  j</dt>
+<dd>k</dd>
+</dl>
+<p>now imagine we have a proxy to k, K, and a proxy of i, I. They both
+have a pointer to proxy H.</p>
+<p>Now imagine i gets moved under g through proxy I. Proxy I will have an
+updated pointer to proxy A. However, proxy K cannot be updated and still
+points to H, from which it is now in fact disconnected.</p>
+<p>proxy H cannot be removed now until proxy A is removed. In addition,
+proxy A has a refcount that is too low because proxy K doesn&#8217;t point
+to it but should.</p>
+<p>Another strategy involves having a reference count on the underlying
+nodes, one per proxy. A node can only be freed if there is no
+descendant-or-self that has the refcount higher than 0. A node, when
+no more Python references to it exist, will check for refcounts first.
+The drawback of this is potentially heavy tree-walking each time a proxy
+can be removed.</p>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="_sources/memorymanagement.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/objectify.html b/doc/sphinx/objectify.html
new file mode 100644 (file)
index 0000000..3d8a511
--- /dev/null
@@ -0,0 +1,1317 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>lxml.objectify &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="lxml-objectify">
+<h1><a class="toc-backref" href="#id1">lxml.objectify</a><a class="headerlink" href="#lxml-objectify" title="Permalink to this headline">¶</a></h1>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Authors:</th><td class="field-body">Stefan Behnel, Holger Joukl</td>
+</tr>
+</tbody>
+</table>
+<p>lxml supports an alternative API similar to the <a class="reference external" href="http://uche.ogbuji.net/tech/4suite/amara/">Amara</a> bindery or
+<a class="reference external" href="http://gnosis.cx/download/">gnosis.xml.objectify</a> through a custom Element implementation.  The main idea
+is to hide the usage of XML behind normal Python objects, sometimes referred
+to as data-binding.  It allows you to use XML as if you were dealing with a
+normal Python object hierarchy.</p>
+<p>Accessing the children of an XML element deploys object attribute access.  If
+there are multiple children with the same name, slicing and indexing can be
+used.  Python data types are extracted from XML content automatically and made
+available to the normal Python operators.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#lxml-objectify" id="id1">lxml.objectify</a><ul>
+<li><a class="reference internal" href="#the-lxml-objectify-api" id="id2">The lxml.objectify API</a><ul>
+<li><a class="reference internal" href="#creating-objectify-trees" id="id3">Creating objectify trees</a></li>
+<li><a class="reference internal" href="#element-access-through-object-attributes" id="id4">Element access through object attributes</a></li>
+<li><a class="reference internal" href="#tree-generation-with-the-e-factory" id="id5">Tree generation with the E-factory</a></li>
+<li><a class="reference internal" href="#namespace-handling" id="id6">Namespace handling</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#asserting-a-schema" id="id7">Asserting a Schema</a></li>
+<li><a class="reference internal" href="#objectpath" id="id8">ObjectPath</a></li>
+<li><a class="reference internal" href="#python-data-types" id="id9">Python data types</a><ul>
+<li><a class="reference internal" href="#recursive-tree-dump" id="id10">Recursive tree dump</a></li>
+<li><a class="reference internal" href="#recursive-string-representation-of-elements" id="id11">Recursive string representation of elements</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#how-data-types-are-matched" id="id12">How data types are matched</a><ul>
+<li><a class="reference internal" href="#type-annotations" id="id13">Type annotations</a></li>
+<li><a class="reference internal" href="#xml-schema-datatype-annotation" id="id14">XML Schema datatype annotation</a></li>
+<li><a class="reference internal" href="#the-dataelement-factory" id="id15">The DataElement factory</a></li>
+<li><a class="reference internal" href="#defining-additional-data-classes" id="id16">Defining additional data classes</a></li>
+<li><a class="reference internal" href="#advanced-element-class-lookup" id="id17">Advanced element class lookup</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#what-is-different-from-lxml-etree" id="id18">What is different from lxml.etree?</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<p>To set up and use <tt class="docutils literal"><span class="pre">objectify</span></tt>, you need both the <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>
+module and <tt class="docutils literal"><span class="pre">lxml.objectify</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">objectify</span>
+</pre></div>
+</div>
+<p>The objectify API is very different from the ElementTree API.  If it
+is used, it should not be mixed with other element implementations
+(such as trees parsed with <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>), to avoid non-obvious
+behaviour.</p>
+<p>The <a class="reference external" href="performance.html#lxml-objectify">benchmark page</a> has some hints on performance optimisation of
+code using lxml.objectify.</p>
+<p>To make the doctests in this document look a little nicer, we also use
+this:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">lxml.usedoctest</span>
+</pre></div>
+</div>
+<p>Imported from within a doctest, this relieves us from caring about the exact
+formatting of XML output.</p>
+<div class="section" id="the-lxml-objectify-api">
+<h2><a class="toc-backref" href="#id2">The lxml.objectify API</a><a class="headerlink" href="#the-lxml-objectify-api" title="Permalink to this headline">¶</a></h2>
+<p>In <tt class="docutils literal"><span class="pre">lxml.objectify</span></tt>, element trees provide an API that models the behaviour
+of normal Python object trees as closely as possible.</p>
+<div class="section" id="creating-objectify-trees">
+<h3><a class="toc-backref" href="#id3">Creating objectify trees</a><a class="headerlink" href="#creating-objectify-trees" title="Permalink to this headline">¶</a></h3>
+<p>As with <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>, you can either create an <tt class="docutils literal"><span class="pre">objectify</span></tt> tree by
+parsing an XML document or by building one from scratch.  To parse a
+document, just use the <tt class="docutils literal"><span class="pre">parse()</span></tt> or <tt class="docutils literal"><span class="pre">fromstring()</span></tt> functions of
+the module:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">fileobject</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;test/&gt;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">fileobject</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">(),</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&lt;test/&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>To build a new tree in memory, <tt class="docutils literal"><span class="pre">objectify</span></tt> replicates the standard
+factory function <tt class="docutils literal"><span class="pre">Element()</span></tt> from <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">obj_el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;new&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">obj_el</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>After creating such an Element, you can use the <a class="reference external" href="tutorial.html#the-element-class">usual API</a> of
+lxml.etree to add SubElements to the tree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">child</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">obj_el</span><span class="p">,</span> <span class="s">&quot;newchild&quot;</span><span class="p">,</span> <span class="n">attr</span><span class="o">=</span><span class="s">&quot;value&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>New subelements will automatically inherit the objectify behaviour
+from their tree.  However, all independent elements that you create
+through the <tt class="docutils literal"><span class="pre">Element()</span></tt> factory of lxml.etree (instead of objectify)
+will not support the <tt class="docutils literal"><span class="pre">objectify</span></tt> API by themselves:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">subel</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">obj_el</span><span class="p">,</span> <span class="s">&quot;sub&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">subel</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">independent_el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;new&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">independent_el</span><span class="p">,</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">))</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="element-access-through-object-attributes">
+<h3><a class="toc-backref" href="#id4">Element access through object attributes</a><a class="headerlink" href="#element-access-through-object-attributes" title="Permalink to this headline">¶</a></h3>
+<p>The main idea behind the <tt class="docutils literal"><span class="pre">objectify</span></tt> API is to hide XML element access
+behind the usual object attribute access pattern.  Asking an element for an
+attribute will return the sequence of children with corresponding tag names:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;b&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+<span class="go">0</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;b&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+<span class="go">1</span>
+</pre></div>
+</div>
+<p>For convenience, you can omit the index &#8216;0&#8217; to access the first child:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="p">)</span>
+<span class="go">0</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">del</span> <span class="n">root</span><span class="o">.</span><span class="n">b</span>
+</pre></div>
+</div>
+<p>Iteration and slicing also obey the requested tag:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">x1</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;x&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">x2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;x&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">x3</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;x&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">x</span> <span class="p">]</span>
+<span class="go">[&#39;x&#39;, &#39;x&#39;, &#39;x&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">3</span><span class="p">]</span> <span class="p">]</span>
+<span class="go">[&#39;x&#39;, &#39;x&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">:]</span> <span class="p">]</span>
+<span class="go">[&#39;x&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">del</span> <span class="n">root</span><span class="o">.</span><span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">x</span> <span class="p">]</span>
+<span class="go">[&#39;x&#39;, &#39;x&#39;]</span>
+</pre></div>
+</div>
+<p>If you want to iterate over all children or need to provide a specific
+namespace for the tag, use the <tt class="docutils literal"><span class="pre">iterchildren()</span></tt> method.  Like the other
+methods for iteration, it supports an optional tag keyword argument:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterchildren</span><span class="p">()</span> <span class="p">]</span>
+<span class="go">[&#39;b&#39;, &#39;x&#39;, &#39;x&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterchildren</span><span class="p">(</span><span class="n">tag</span><span class="o">=</span><span class="s">&#39;b&#39;</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[&#39;b&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">b</span> <span class="p">]</span>
+<span class="go">[&#39;b&#39;]</span>
+</pre></div>
+</div>
+<p>XML attributes are accessed as in the normal ElementTree API:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">c</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;c&quot;</span><span class="p">,</span> <span class="n">myattr</span><span class="o">=</span><span class="s">&quot;someval&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;myattr&quot;</span><span class="p">))</span>
+<span class="go">someval</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;c&quot;</span><span class="p">,</span> <span class="s">&quot;oh-oh&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;c&quot;</span><span class="p">))</span>
+<span class="go">oh-oh</span>
+</pre></div>
+</div>
+<p>In addition to the normal ElementTree API for appending elements to trees,
+subtrees can also be added by assigning them to object attributes.  In this
+case, the subtree is automatically deep copied and the tag name of its root is
+updated to match the attribute name:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;yet_another_child&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">new_child</span> <span class="o">=</span> <span class="n">el</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">new_child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">new_child</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">yet_another_child</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">y</span> <span class="o">=</span> <span class="p">[</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;y&quot;</span><span class="p">),</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;y&quot;</span><span class="p">)</span> <span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">y</span> <span class="p">]</span>
+<span class="go">[&#39;y&#39;, &#39;y&#39;]</span>
+</pre></div>
+</div>
+<p>The latter is a short form for operations on the full slice:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">y</span><span class="p">[:]</span> <span class="o">=</span> <span class="p">[</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;y&quot;</span><span class="p">)</span> <span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">y</span> <span class="p">]</span>
+<span class="go">[&#39;y&#39;]</span>
+</pre></div>
+</div>
+<p>You can also replace children that way:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">child1</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;child&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">child2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;child&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">child3</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;child&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;new_child&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">subel</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="s">&quot;sub&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">child</span> <span class="o">=</span> <span class="n">el</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">child</span><span class="o">.</span><span class="n">sub</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">sub</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">child</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">el</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">child</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">sub</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">sub</span>
+</pre></div>
+</div>
+<p>Note that special care must be taken when changing the tag name of an element:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span> <span class="o">=</span> <span class="s">&quot;notB&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">b</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AttributeError: no such child</span>: <span class="n">b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">notB</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">notB</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="tree-generation-with-the-e-factory">
+<h3><a class="toc-backref" href="#id5">Tree generation with the E-factory</a><a class="headerlink" href="#tree-generation-with-the-e-factory" title="Permalink to this headline">¶</a></h3>
+<p>To simplify the generation of trees even further, you can use the E-factory:</p>
+<div class="highlight-pycon"><div class="highlight"><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">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">&quot;how&quot;</span><span class="p">,</span> <span class="n">tell</span><span class="o">=</span><span class="s">&quot;me&quot;</span><span class="p">)</span>
+<span class="gp">... </span><span class="p">)</span>
+
+<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=&quot;http://codespeak.net/lxml/objectify/pytype&quot;&gt;</span>
+<span class="go">  &lt;a py:pytype=&quot;int&quot;&gt;5&lt;/a&gt;</span>
+<span class="go">  &lt;b py:pytype=&quot;float&quot;&gt;6.1&lt;/b&gt;</span>
+<span class="go">  &lt;c py:pytype=&quot;bool&quot;&gt;true&lt;/c&gt;</span>
+<span class="go">  &lt;d py:pytype=&quot;str&quot; tell=&quot;me&quot;&gt;how&lt;/d&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<p>This allows you to write up a specific language in tags:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">ROOT</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">E</span><span class="o">.</span><span class="n">root</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">TITLE</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">E</span><span class="o">.</span><span class="n">title</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">HOWMANY</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">E</span><span class="p">,</span> <span class="s">&quot;how-many&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">ROOT</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="n">TITLE</span><span class="p">(</span><span class="s">&quot;The title&quot;</span><span class="p">),</span>
+<span class="gp">... </span>  <span class="n">HOWMANY</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+<span class="gp">... </span><span class="p">)</span>
+
+<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=&quot;http://codespeak.net/lxml/objectify/pytype&quot;&gt;</span>
+<span class="go">  &lt;title py:pytype=&quot;str&quot;&gt;The title&lt;/title&gt;</span>
+<span class="go">  &lt;how-many py:pytype=&quot;int&quot;&gt;5&lt;/how-many&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<p><tt class="docutils literal"><span class="pre">objectify.E</span></tt> is an instance of <tt class="docutils literal"><span class="pre">objectify.ElementMaker</span></tt>.  By default, it
+creates pytype annotated Elements without a namespace.  You can switch off the
+pytype annotation by passing False to the <tt class="docutils literal"><span class="pre">annotate</span></tt> keyword argument of the
+constructor.  You can also pass a default namespace and an <tt class="docutils literal"><span class="pre">nsmap</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">myE</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ElementMaker</span><span class="p">(</span><span class="n">annotate</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
+<span class="gp">... </span>          <span class="n">namespace</span><span class="o">=</span><span class="s">&quot;http://my/ns&quot;</span><span class="p">,</span> <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="bp">None</span> <span class="p">:</span> <span class="s">&quot;http://my/ns&quot;</span><span class="p">})</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">myE</span><span class="o">.</span><span class="n">root</span><span class="p">(</span> <span class="n">myE</span><span class="o">.</span><span class="n">someint</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="p">)</span>
+
+<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=&quot;http://my/ns&quot;&gt;</span>
+<span class="go">  &lt;someint&gt;2&lt;/someint&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="namespace-handling">
+<h3><a class="toc-backref" href="#id6">Namespace handling</a><a class="headerlink" href="#namespace-handling" title="Permalink to this headline">¶</a></h3>
+<p>During tag lookups, namespaces are handled mostly behind the scenes.
+If you access a child of an Element without specifying a namespace,
+the lookup will use the namespace of the parent:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;{http://ns/}root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;{http://ns/}b&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">c</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;{http://other/}c&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}b</span>
+</pre></div>
+</div>
+<p>Note that the <tt class="docutils literal"><span class="pre">SubElement()</span></tt> factory of <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> does not
+inherit any namespaces when creating a new subelement.  Element
+creation must be explicit about the namespace, and is simplified
+through the E-factory as described above.</p>
+<p>Lookups, however, inherit namespaces implicitly:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}b</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+    <span class="o">...</span>
+<span class="gr">AttributeError: no such child</span>: <span class="n">{http://ns/}c</span>
+</pre></div>
+</div>
+<p>To access an element in a different namespace than its parent, you can
+use <tt class="docutils literal"><span class="pre">getattr()</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">c</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;{http://other/}c&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://other/}c</span>
+</pre></div>
+</div>
+<p>For convenience, there is also a quick way through item access:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">c</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="s">&quot;{http://other/}c&quot;</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://other/}c</span>
+</pre></div>
+</div>
+<p>The same approach must be used to access children with tag names that are not
+valid Python identifiers:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;{http://ns/}tag-name&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s">&quot;tag-name&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}tag-name</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">new_el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;{http://ns/}new-element&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">new_el</span><span class="p">,</span> <span class="s">&quot;{http://ns/}child&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">new_el</span><span class="p">,</span> <span class="s">&quot;{http://ns/}child&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">new_el</span><span class="p">,</span> <span class="s">&quot;{http://ns/}child&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="p">[</span><span class="s">&quot;tag-name&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span> <span class="n">new_el</span><span class="p">,</span> <span class="n">new_el</span> <span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s">&quot;tag-name&quot;</span><span class="p">]))</span>
+<span class="go">2</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s">&quot;tag-name&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}tag-name</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s">&quot;tag-name&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">child</span><span class="p">))</span>
+<span class="go">3</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s">&quot;tag-name&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}child</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s">&quot;tag-name&quot;</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}child</span>
+</pre></div>
+</div>
+<p>or for names that have a special meaning in lxml.objectify:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;text&gt;TEXT&lt;/text&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AttributeError</span>: <span class="n">&#39;NoneType&#39; object has no attribute &#39;text&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="s">&quot;text&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="go">TEXT</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="asserting-a-schema">
+<h2><a class="toc-backref" href="#id7">Asserting a Schema</a><a class="headerlink" href="#asserting-a-schema" title="Permalink to this headline">¶</a></h2>
+<p>When dealing with XML documents from different sources, you will often
+require them to follow a common schema.  In lxml.objectify, this
+directly translates to enforcing a specific object tree, i.e. expected
+object attributes are ensured to be there and to have the expected
+type.  This can easily be achieved through XML Schema validation at
+parse time.  Also see the <a class="reference external" href="validation.html">documentation on validation</a> on this
+topic.</p>
+<p>First of all, we need a parser that knows our schema, so let&#8217;s say we
+parse the schema from a file-like object (or file or filename):</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">  &lt;xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsd:element name=&quot;a&quot; type=&quot;AType&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsd:complexType name=&quot;AType&quot;&gt;</span>
+<span class="gp">... </span><span class="s">      &lt;xsd:sequence&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;xsd:element name=&quot;b&quot; type=&quot;xsd:string&quot; /&gt;</span>
+<span class="gp">... </span><span class="s">      &lt;/xsd:sequence&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/xsd:complexType&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/xsd:schema&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schema</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLSchema</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="n">f</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>When creating the validating parser, we must make sure it <a class="reference external" href="#advance-element-class-lookup">returns
+objectify trees</a>.  This is best done with the <tt class="docutils literal"><span class="pre">makeparser()</span></tt>
+function:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">makeparser</span><span class="p">(</span><span class="n">schema</span> <span class="o">=</span> <span class="n">schema</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Now we can use it to parse a valid document:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml</span> <span class="o">=</span> <span class="s">&quot;&lt;a&gt;&lt;b&gt;test&lt;/b&gt;&lt;/a&gt;&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">b</span><span class="p">)</span>
+<span class="go">test</span>
+</pre></div>
+</div>
+<p>Or an invalid document:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml</span> <span class="o">=</span> <span class="s">&quot;&lt;a&gt;&lt;b&gt;test&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+<span class="gr">lxml.etree.XMLSyntaxError: Element &#39;c&#39;</span>: <span class="n">This element is not expected.</span>
+</pre></div>
+</div>
+<p>Note that the same works for parse-time DTD validation, except that
+DTDs do not support any data types by design.</p>
+</div>
+<div class="section" id="objectpath">
+<h2><a class="toc-backref" href="#id8">ObjectPath</a><a class="headerlink" href="#objectpath" title="Permalink to this headline">¶</a></h2>
+<p>For both convenience and speed, objectify supports its own path language,
+represented by the <tt class="docutils literal"><span class="pre">ObjectPath</span></tt> class:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;{http://ns/}root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">b1</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;{http://ns/}b&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">c</span>  <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">b1</span><span class="p">,</span>   <span class="s">&quot;{http://ns/}c&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">b2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;{http://ns/}b&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">d</span>  <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;{http://other/}d&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">path</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;root.b.c&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
+<span class="go">root.b.c</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">path</span><span class="o">.</span><span class="n">hasattr</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}c</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;root.b.c&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}c</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;root.{http://other/}d&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://other/}d</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;root.{not}there&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AttributeError: no such child</span>: <span class="n">{not}there</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;{not}there&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">ValueError: root element does not match</span>: <span class="n">need {not}there, got {http://ns/}root</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;root.b[1]&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}b</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;root.{http://ns/}b[1]&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}b</span>
+</pre></div>
+</div>
+<p>Apart from strings, ObjectPath also accepts lists of path segments:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">([</span><span class="s">&#39;root&#39;</span><span class="p">,</span> <span class="s">&#39;b&#39;</span><span class="p">,</span> <span class="s">&#39;c&#39;</span><span class="p">])</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}c</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">([</span><span class="s">&#39;root&#39;</span><span class="p">,</span> <span class="s">&#39;{http://ns/}b[1]&#39;</span><span class="p">])</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}b</span>
+</pre></div>
+</div>
+<p>You can also use relative paths starting with a &#8216;.&#8217; to ignore the actual root
+element and only inherit its namespace:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;.b[1]&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}b</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">([</span><span class="s">&#39;&#39;</span><span class="p">,</span> <span class="s">&#39;b[1]&#39;</span><span class="p">])</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}b</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;.unknown[1]&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AttributeError: no such child</span>: <span class="n">{http://ns/}unknown</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;.{http://other/}unknown[1]&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AttributeError: no such child</span>: <span class="n">{http://other/}unknown</span>
+</pre></div>
+</div>
+<p>For convenience, a single dot represents the empty ObjectPath (identity):</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;.&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://ns/}root</span>
+</pre></div>
+</div>
+<p>ObjectPath objects can be used to manipulate trees:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;{http://ns/}root&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">path</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;.some.child.{http://other/}unknown&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">path</span><span class="o">.</span><span class="n">hasattr</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="go">False</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AttributeError: no such child</span>: <span class="n">{http://ns/}some</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">path</span><span class="o">.</span><span class="n">setattr</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;my value&quot;</span><span class="p">)</span> <span class="c"># creates children as necessary</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">path</span><span class="o">.</span><span class="n">hasattr</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="go">my value</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">some</span><span class="o">.</span><span class="n">child</span><span class="p">[</span><span class="s">&quot;{http://other/}unknown&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="go">my value</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span> <span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="p">))</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">path</span><span class="o">.</span><span class="n">addattr</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;my new value&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span> <span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="p">))</span>
+<span class="go">2</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[&#39;my value&#39;, &#39;my new value&#39;]</span>
+</pre></div>
+</div>
+<p>As with attribute assignment, <tt class="docutils literal"><span class="pre">setattr()</span></tt> accepts lists:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">path</span><span class="o">.</span><span class="n">setattr</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="p">[</span><span class="s">&quot;v1&quot;</span><span class="p">,</span> <span class="s">&quot;v2&quot;</span><span class="p">,</span> <span class="s">&quot;v3&quot;</span><span class="p">])</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">el</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">path</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[&#39;v1&#39;, &#39;v2&#39;, &#39;v3&#39;]</span>
+</pre></div>
+</div>
+<p>Note, however, that indexing is only supported in this context if the children
+exist.  Indexing of non existing children will not extend or create a list of
+such children but raise an exception:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">path</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectPath</span><span class="p">(</span><span class="s">&quot;.{non}existing[1]&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">path</span><span class="o">.</span><span class="n">setattr</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;my value&quot;</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">TypeError</span>: <span class="n">creating indexed path attributes is not supported</span>
+</pre></div>
+</div>
+<p>It is worth noting that ObjectPath does not depend on the <tt class="docutils literal"><span class="pre">objectify</span></tt> module
+or the ObjectifiedElement implementation.  It can also be used in combination
+with Elements from the normal lxml.etree API.</p>
+</div>
+<div class="section" id="python-data-types">
+<h2><a class="toc-backref" href="#id9">Python data types</a><a class="headerlink" href="#python-data-types" title="Permalink to this headline">¶</a></h2>
+<p>The objectify module knows about Python data types and tries its best to let
+element content behave like them.  For example, they support the normal math
+operators:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span>
+<span class="gp">... </span>            <span class="s">&quot;&lt;root&gt;&lt;a&gt;5&lt;/a&gt;&lt;b&gt;11&lt;/b&gt;&lt;c&gt;true&lt;/c&gt;&lt;d&gt;hoi&lt;/d&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="n">root</span><span class="o">.</span><span class="n">b</span>
+<span class="go">16</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+=</span> <span class="n">root</span><span class="o">.</span><span class="n">b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="go">16</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="mi">2</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)</span>
+<span class="go">4</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="go">3</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">)</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">c</span> <span class="o">=</span> <span class="bp">False</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">if</span> <span class="ow">not</span> <span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;false!&quot;</span><span class="p">)</span>
+<span class="go">false!</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">d</span> <span class="o">+</span> <span class="s">&quot; test !&quot;</span><span class="p">)</span>
+<span class="go">hoi test !</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">d</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">d</span> <span class="o">%</span> <span class="p">(</span><span class="mi">1234</span><span class="p">,</span> <span class="mi">12345</span><span class="p">))</span>
+<span class="go">1234 - 12345</span>
+</pre></div>
+</div>
+<p>However, data elements continue to provide the objectify API.  This means that
+sequence operations such as <tt class="docutils literal"><span class="pre">len()</span></tt>, slicing and indexing (e.g. of strings)
+cannot behave as the Python types.  Like all other tree elements, they show
+the normal slicing behaviour of objectify elements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;test&lt;/a&gt;&lt;b&gt;toast&lt;/b&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="s">&#39; me&#39;</span><span class="p">)</span> <span class="c"># behaves like a string, right?</span>
+<span class="go">test me</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span> <span class="c"># but there&#39;s only one &#39;a&#39; element!</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">a</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="p">]</span>
+<span class="go">[&#39;a&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">a</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="go">test</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="nb">str</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">[:</span><span class="mi">1</span><span class="p">]</span> <span class="p">]</span>
+<span class="go">[&#39;test&#39;]</span>
+</pre></div>
+</div>
+<p>If you need to run sequence operations on data types, you must ask the API for
+the <em>real</em> Python value.  The string value is always available through the
+normal ElementTree <tt class="docutils literal"><span class="pre">.text</span></tt> attribute.  Additionally, all data classes
+provide a <tt class="docutils literal"><span class="pre">.pyval</span></tt> attribute that returns the value as plain Python type:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;test&lt;/a&gt;&lt;b&gt;5&lt;/b&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;test&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">pyval</span>
+<span class="go">&#39;test&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;5&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">pyval</span>
+<span class="go">5</span>
+</pre></div>
+</div>
+<p>Note, however, that both attributes are read-only in objectify.  If you want
+to change values, just assign them directly to the attribute:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">text</span>  <span class="o">=</span> <span class="s">&quot;25&quot;</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">TypeError</span>: <span class="n">attribute &#39;text&#39; of &#39;StringElement&#39; objects is not writable</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">pyval</span> <span class="o">=</span> <span class="mi">25</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">TypeError</span>: <span class="n">attribute &#39;pyval&#39; of &#39;StringElement&#39; objects is not writable</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="mi">25</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="go">25</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">pyval</span><span class="p">)</span>
+<span class="go">25</span>
+</pre></div>
+</div>
+<p>In other words, <tt class="docutils literal"><span class="pre">objectify</span></tt> data elements behave like immutable Python
+types.  You can replace them, but not modify them.</p>
+<div class="section" id="recursive-tree-dump">
+<h3><a class="toc-backref" href="#id10">Recursive tree dump</a><a class="headerlink" href="#recursive-tree-dump" title="Permalink to this headline">¶</a></h3>
+<p>To see the data types that are currently used, you can call the module level
+<tt class="docutils literal"><span class="pre">dump()</span></tt> function that returns a recursive string representation for
+elements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&quot;&quot;</span>
+<span class="gp">... </span><span class="s">&lt;root xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a attr1=&quot;foo&quot; attr2=&quot;bar&quot;&gt;1&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a&gt;1.2&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;b&gt;1&lt;/b&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;b&gt;true&lt;/b&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;c&gt;what?&lt;/c&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;d xsi:nil=&quot;true&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">&quot;&quot;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = 1 [IntElement]</span>
+<span class="go">      * attr1 = &#39;foo&#39;</span>
+<span class="go">      * attr2 = &#39;bar&#39;</span>
+<span class="go">    a = 1.2 [FloatElement]</span>
+<span class="go">    b = 1 [IntElement]</span>
+<span class="go">    b = True [BoolElement]</span>
+<span class="go">    c = &#39;what?&#39; [StringElement]</span>
+<span class="go">    d = None [NoneElement]</span>
+<span class="go">      * xsi:nil = &#39;true&#39;</span>
+</pre></div>
+</div>
+<p>You can freely switch between different types for the same child:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;5&lt;/a&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = 5 [IntElement]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="s">&#39;nice string!&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = &#39;nice string!&#39; [StringElement]</span>
+<span class="go">      * py:pytype = &#39;str&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="bp">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = True [BoolElement]</span>
+<span class="go">      * py:pytype = &#39;bool&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = 1 [IntElement]</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+<span class="go">    a = 2 [IntElement]</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+<span class="go">    a = 3 [IntElement]</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = 1 [IntElement]</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+<span class="go">    a = 2 [IntElement]</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+<span class="go">    a = 3 [IntElement]</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="recursive-string-representation-of-elements">
+<h3><a class="toc-backref" href="#id11">Recursive string representation of elements</a><a class="headerlink" href="#recursive-string-representation-of-elements" title="Permalink to this headline">¶</a></h3>
+<p>Normally, elements use the standard string representation for str() that is
+provided by lxml.etree.  You can enable a pretty-print representation for
+objectify elements like this:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">enable_recursive_str</span><span class="p">()</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&quot;&quot;</span>
+<span class="gp">... </span><span class="s">&lt;root xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a attr1=&quot;foo&quot; attr2=&quot;bar&quot;&gt;1&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a&gt;1.2&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;b&gt;1&lt;/b&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;b&gt;true&lt;/b&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;c&gt;what?&lt;/c&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;d xsi:nil=&quot;true&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">&quot;&quot;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = 1 [IntElement]</span>
+<span class="go">      * attr1 = &#39;foo&#39;</span>
+<span class="go">      * attr2 = &#39;bar&#39;</span>
+<span class="go">    a = 1.2 [FloatElement]</span>
+<span class="go">    b = 1 [IntElement]</span>
+<span class="go">    b = True [BoolElement]</span>
+<span class="go">    c = &#39;what?&#39; [StringElement]</span>
+<span class="go">    d = None [NoneElement]</span>
+<span class="go">      * xsi:nil = &#39;true&#39;</span>
+</pre></div>
+</div>
+<p>This behaviour can be switched off in the same way:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">enable_recursive_str</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="how-data-types-are-matched">
+<h2><a class="toc-backref" href="#id12">How data types are matched</a><a class="headerlink" href="#how-data-types-are-matched" title="Permalink to this headline">¶</a></h2>
+<p>Objectify uses two different types of Elements.  Structural Elements (or tree
+Elements) represent the object tree structure.  Data Elements represent the
+data containers at the leafs.  You can explicitly create tree Elements with
+the <tt class="docutils literal"><span class="pre">objectify.Element()</span></tt> factory and data Elements with the
+<tt class="docutils literal"><span class="pre">objectify.DataElement()</span></tt> factory.</p>
+<p>When Element objects are created, lxml.objectify must determine which
+implementation class to use for them.  This is relatively easy for tree
+Elements and less so for data Elements.  The algorithm is as follows:</p>
+<ol class="arabic simple">
+<li>If an element has children, use the default tree class.</li>
+<li>If an element is defined as xsi:nil, use the NoneElement class.</li>
+<li>If a &#8220;Python type hint&#8221; attribute is given, use this to determine the element
+class, see below.</li>
+<li>If an XML Schema xsi:type hint is given, use this to determine the element
+class, see below.</li>
+<li>Try to determine the element class from the text content type by trial and
+error.</li>
+<li>If the element is a root node then use the default tree class.</li>
+<li>Otherwise, use the default class for empty data classes.</li>
+</ol>
+<p>You can change the default classes for tree Elements and empty data Elements
+at setup time.  The <tt class="docutils literal"><span class="pre">ObjectifyElementClassLookup()</span></tt> call accepts two keyword
+arguments, <tt class="docutils literal"><span class="pre">tree_class</span></tt> and <tt class="docutils literal"><span class="pre">empty_data_class</span></tt>, that determine the Element
+classes used in these cases.  By default, <tt class="docutils literal"><span class="pre">tree_class</span></tt> is a class called
+<tt class="docutils literal"><span class="pre">ObjectifiedElement</span></tt> and <tt class="docutils literal"><span class="pre">empty_data_class</span></tt> is a <tt class="docutils literal"><span class="pre">StringElement</span></tt>.</p>
+<div class="section" id="type-annotations">
+<h3><a class="toc-backref" href="#id13">Type annotations</a><a class="headerlink" href="#type-annotations" title="Permalink to this headline">¶</a></h3>
+<p>The &#8220;type hint&#8221; mechanism deploys an XML attribute defined as
+<tt class="docutils literal"><span class="pre">lxml.objectify.PYTYPE_ATTRIBUTE</span></tt>.  It may contain any of the following
+string values: int, long, float, str, unicode, NoneType:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">PYTYPE_ATTRIBUTE</span><span class="p">)</span>
+<span class="go">{http://codespeak.net/lxml/objectify/pytype}pytype</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ns</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">PYTYPE_ATTRIBUTE</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;}&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&quot;&quot;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;root xmlns:py=&#39;</span><span class="si">%s</span><span class="s">&#39;&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a py:pytype=&#39;str&#39;&gt;5&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;b py:pytype=&#39;int&#39;&gt;5&lt;/b&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;c py:pytype=&#39;NoneType&#39; /&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">&quot;&quot;&quot;</span> <span class="o">%</span> <span class="n">ns</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span> <span class="o">+</span> <span class="mi">10</span><span class="p">)</span>
+<span class="go">510</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">b</span> <span class="o">+</span> <span class="mi">10</span><span class="p">)</span>
+<span class="go">15</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">c</span><span class="p">)</span>
+<span class="go">None</span>
+</pre></div>
+</div>
+<p>Note that you can change the name and namespace used for this
+attribute through the <tt class="docutils literal"><span class="pre">set_pytype_attribute_tag(tag)</span></tt> module
+function, in case your application ever needs to.  There is also a
+utility function <tt class="docutils literal"><span class="pre">annotate()</span></tt> that recursively generates this
+attribute for the elements of a tree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;test&lt;/a&gt;&lt;b&gt;5&lt;/b&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = &#39;test&#39; [StringElement]</span>
+<span class="go">    b = 5 [IntElement]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = &#39;test&#39; [StringElement]</span>
+<span class="go">      * py:pytype = &#39;str&#39;</span>
+<span class="go">    b = 5 [IntElement]</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="xml-schema-datatype-annotation">
+<h3><a class="toc-backref" href="#id14">XML Schema datatype annotation</a><a class="headerlink" href="#xml-schema-datatype-annotation" title="Permalink to this headline">¶</a></h3>
+<p>A second way of specifying data type information uses XML Schema types as
+element annotations.  Objectify knows those that can be mapped to normal
+Python types:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">   &lt;root xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
+<span class="gp">... </span><span class="s">         xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;</span>
+<span class="gp">... </span><span class="s">     &lt;d xsi:type=&quot;xsd:double&quot;&gt;5&lt;/d&gt;</span>
+<span class="gp">... </span><span class="s">     &lt;i xsi:type=&quot;xsd:int&quot;   &gt;5&lt;/i&gt;</span>
+<span class="gp">... </span><span class="s">     &lt;s xsi:type=&quot;xsd:string&quot;&gt;5&lt;/s&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">   &#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    d = 5.0 [FloatElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:double&#39;</span>
+<span class="go">    i = 5 [IntElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:int&#39;</span>
+<span class="go">    s = &#39;5&#39; [StringElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:string&#39;</span>
+</pre></div>
+</div>
+<p>Again, there is a utility function <tt class="docutils literal"><span class="pre">xsiannotate()</span></tt> that recursively
+generates the &#8220;xsi:type&#8221; attribute for the elements of a tree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">   &lt;root&gt;&lt;a&gt;test&lt;/a&gt;&lt;b&gt;5&lt;/b&gt;&lt;c&gt;true&lt;/c&gt;&lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">   &#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = &#39;test&#39; [StringElement]</span>
+<span class="go">    b = 5 [IntElement]</span>
+<span class="go">    c = True [BoolElement]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">xsiannotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    a = &#39;test&#39; [StringElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:string&#39;</span>
+<span class="go">    b = 5 [IntElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:integer&#39;</span>
+<span class="go">    c = True [BoolElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:boolean&#39;</span>
+</pre></div>
+</div>
+<p>Note, however, that <tt class="docutils literal"><span class="pre">xsiannotate()</span></tt> will always use the first XML Schema
+datatype that is defined for any given Python type, see also
+<a class="reference internal" href="#defining-additional-data-classes">Defining additional data classes</a>.</p>
+<p>The utility function <tt class="docutils literal"><span class="pre">deannotate()</span></tt> can be used to get rid of &#8216;py:pytype&#8217;
+and/or &#8216;xsi:type&#8217; information:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;root xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
+<span class="gp">... </span><span class="s">      xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;d xsi:type=&quot;xsd:double&quot;&gt;5&lt;/d&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;i xsi:type=&quot;xsd:int&quot;   &gt;5&lt;/i&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;s xsi:type=&quot;xsd:string&quot;&gt;5&lt;/s&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    d = 5.0 [FloatElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:double&#39;</span>
+<span class="go">      * py:pytype = &#39;float&#39;</span>
+<span class="go">    i = 5 [IntElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:int&#39;</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+<span class="go">    s = &#39;5&#39; [StringElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:string&#39;</span>
+<span class="go">      * py:pytype = &#39;str&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">deannotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    d = 5 [IntElement]</span>
+<span class="go">    i = 5 [IntElement]</span>
+<span class="go">    s = 5 [IntElement]</span>
+</pre></div>
+</div>
+<p>You can control which type attributes should be de-annotated with the keyword
+arguments &#8216;pytype&#8217; (default: True) and &#8216;xsi&#8217; (default: True).
+<tt class="docutils literal"><span class="pre">deannotate()</span></tt> can also remove &#8216;xsi:nil&#8217; attributes by setting &#8216;xsi_nil=True&#8217;
+(default: False):</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;root xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
+<span class="gp">... </span><span class="s">      xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;d xsi:type=&quot;xsd:double&quot;&gt;5&lt;/d&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;i xsi:type=&quot;xsd:int&quot;   &gt;5&lt;/i&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;s xsi:type=&quot;xsd:string&quot;&gt;5&lt;/s&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;n xsi:nil=&quot;true&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    d = 5.0 [FloatElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:double&#39;</span>
+<span class="go">      * py:pytype = &#39;float&#39;</span>
+<span class="go">    i = 5 [IntElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:int&#39;</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+<span class="go">    s = &#39;5&#39; [StringElement]</span>
+<span class="go">      * xsi:type = &#39;xsd:string&#39;</span>
+<span class="go">      * py:pytype = &#39;str&#39;</span>
+<span class="go">    n = None [NoneElement]</span>
+<span class="go">      * xsi:nil = &#39;true&#39;</span>
+<span class="go">      * py:pytype = &#39;NoneType&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">deannotate</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xsi_nil</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    d = 5 [IntElement]</span>
+<span class="go">    i = 5 [IntElement]</span>
+<span class="go">    s = 5 [IntElement]</span>
+<span class="go">    n = u&#39;&#39; [StringElement]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="the-dataelement-factory">
+<h3><a class="toc-backref" href="#id15">The DataElement factory</a><a class="headerlink" href="#the-dataelement-factory" title="Permalink to this headline">¶</a></h3>
+<p>For convenience, the <tt class="docutils literal"><span class="pre">DataElement()</span></tt> factory creates an Element with a
+Python value in one step.  You can pass the required Python type name or the
+XSI type name:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">_pytype</span><span class="o">=</span><span class="s">&quot;int&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    x = 5 [IntElement]</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">_pytype</span><span class="o">=</span><span class="s">&quot;str&quot;</span><span class="p">,</span> <span class="n">myattr</span><span class="o">=</span><span class="s">&quot;someval&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    x = &#39;5&#39; [StringElement]</span>
+<span class="go">      * py:pytype = &#39;str&#39;</span>
+<span class="go">      * myattr = &#39;someval&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">_xsi</span><span class="o">=</span><span class="s">&quot;integer&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">root = None [ObjectifiedElement]</span>
+<span class="go">    x = 5 [IntElement]</span>
+<span class="go">      * py:pytype = &#39;int&#39;</span>
+<span class="go">      * xsi:type = &#39;xsd:integer&#39;</span>
+</pre></div>
+</div>
+<p>XML Schema types reside in the XML schema namespace thus <tt class="docutils literal"><span class="pre">DataElement()</span></tt>
+tries to correctly prefix the xsi:type attribute value for you:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">s</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">_xsi</span><span class="o">=</span><span class="s">&quot;string&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">deannotate</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">xsi</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<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=&quot;http://codespeak.net/lxml/objectify/pytype&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;</span>
+<span class="go">  &lt;s xsi:type=&quot;xsd:string&quot;&gt;5&lt;/s&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<p><tt class="docutils literal"><span class="pre">DataElement()</span></tt> uses a default nsmap to set these prefixes:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="s">&#39;5&#39;</span><span class="p">,</span> <span class="n">_xsi</span><span class="o">=</span><span class="s">&#39;string&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespaces</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">nsmap</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespaces</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span> <span class="ow">in</span> <span class="n">namespaces</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span><span class="p">))</span>
+<span class="go">py - http://codespeak.net/lxml/objectify/pytype</span>
+<span class="go">xsd - http://www.w3.org/2001/XMLSchema</span>
+<span class="go">xsi - http://www.w3.org/2001/XMLSchema-instance</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;{http://www.w3.org/2001/XMLSchema-instance}type&quot;</span><span class="p">))</span>
+<span class="go">xsd:string</span>
+</pre></div>
+</div>
+<p>While you can set custom namespace prefixes, it is necessary to provide valid
+namespace information if you choose to do so:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="s">&#39;5&#39;</span><span class="p">,</span> <span class="n">_xsi</span><span class="o">=</span><span class="s">&#39;foo:string&#39;</span><span class="p">,</span>
+<span class="gp">... </span>         <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;foo&#39;</span><span class="p">:</span> <span class="s">&#39;http://www.w3.org/2001/XMLSchema&#39;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespaces</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">nsmap</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespaces</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span> <span class="ow">in</span> <span class="n">namespaces</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span><span class="p">))</span>
+<span class="go">foo - http://www.w3.org/2001/XMLSchema</span>
+<span class="go">py - http://codespeak.net/lxml/objectify/pytype</span>
+<span class="go">xsi - http://www.w3.org/2001/XMLSchema-instance</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;{http://www.w3.org/2001/XMLSchema-instance}type&quot;</span><span class="p">))</span>
+<span class="go">foo:string</span>
+</pre></div>
+</div>
+<p>Note how lxml chose a default prefix for the XML Schema Instance
+namespace.  We can override it as in the following example:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="s">&#39;5&#39;</span><span class="p">,</span> <span class="n">_xsi</span><span class="o">=</span><span class="s">&#39;foo:string&#39;</span><span class="p">,</span>
+<span class="gp">... </span>         <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;foo&#39;</span><span class="p">:</span> <span class="s">&#39;http://www.w3.org/2001/XMLSchema&#39;</span><span class="p">,</span>
+<span class="gp">... </span>                <span class="s">&#39;myxsi&#39;</span><span class="p">:</span> <span class="s">&#39;http://www.w3.org/2001/XMLSchema-instance&#39;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespaces</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">nsmap</span><span class="o">.</span><span class="n">items</span><span class="p">())</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">namespaces</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span> <span class="ow">in</span> <span class="n">namespaces</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">namespace</span><span class="p">))</span>
+<span class="go">foo - http://www.w3.org/2001/XMLSchema</span>
+<span class="go">myxsi - http://www.w3.org/2001/XMLSchema-instance</span>
+<span class="go">py - http://codespeak.net/lxml/objectify/pytype</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">el</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;{http://www.w3.org/2001/XMLSchema-instance}type&quot;</span><span class="p">))</span>
+<span class="go">foo:string</span>
+</pre></div>
+</div>
+<p>Care must be taken if different namespace prefixes have been used for the same
+namespace.  Namespace information gets merged to avoid duplicate definitions
+when adding a new sub-element to a tree, but this mechanism does not adapt the
+prefixes of attribute values:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&quot;&quot;&lt;root xmlns:schema=&quot;http://www.w3.org/2001/XMLSchema&quot;/&gt;&quot;&quot;&quot;</span><span class="p">)</span>
+<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:schema=&quot;http://www.w3.org/2001/XMLSchema&quot;/&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">s</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">DataElement</span><span class="p">(</span><span class="s">&quot;17&quot;</span><span class="p">,</span> <span class="n">_xsi</span><span class="o">=</span><span class="s">&quot;string&quot;</span><span class="p">)</span>
+<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">s</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;value xmlns:py=&quot;http://codespeak.net/lxml/objectify/pytype&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; py:pytype=&quot;str&quot; xsi:type=&quot;xsd:string&quot;&gt;17&lt;/value&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">s</span> <span class="o">=</span> <span class="n">s</span>
+<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:schema=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;</span>
+<span class="go">  &lt;s xmlns:py=&quot;http://codespeak.net/lxml/objectify/pytype&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; py:pytype=&quot;str&quot; xsi:type=&quot;xsd:string&quot;&gt;17&lt;/s&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<p>It is your responsibility to fix the prefixes of attribute values if you
+choose to deviate from the standard prefixes.  A convenient way to do this for
+xsi:type attributes is to use the <tt class="docutils literal"><span class="pre">xsiannotate()</span></tt> utility:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">objectify</span><span class="o">.</span><span class="n">xsiannotate</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<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:schema=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;</span>
+<span class="go">  &lt;s xmlns:py=&quot;http://codespeak.net/lxml/objectify/pytype&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; py:pytype=&quot;str&quot; xsi:type=&quot;schema:string&quot;&gt;17&lt;/s&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<p>Of course, it is discouraged to use different prefixes for one and the same
+namespace when building up an objectify tree.</p>
+</div>
+<div class="section" id="defining-additional-data-classes">
+<h3><a class="toc-backref" href="#id16">Defining additional data classes</a><a class="headerlink" href="#defining-additional-data-classes" title="Permalink to this headline">¶</a></h3>
+<p>You can plug additional data classes into objectify that will be used in
+exactly the same way as the predefined types.  Data classes can either inherit
+from <tt class="docutils literal"><span class="pre">ObjectifiedDataElement</span></tt> directly or from one of the specialised
+classes like <tt class="docutils literal"><span class="pre">NumberElement</span></tt> or <tt class="docutils literal"><span class="pre">BoolElement</span></tt>.  The numeric types require
+an initial call to the NumberElement method <tt class="docutils literal"><span class="pre">self._setValueParser(function)</span></tt>
+to set their type conversion function (string -&gt; numeric Python type).  This
+call should be placed into the element <tt class="docutils literal"><span class="pre">_init()</span></tt> method.</p>
+<p>The registration of data classes uses the <tt class="docutils literal"><span class="pre">PyType</span></tt> class:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">ChristmasDate</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedDataElement</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">call_santa</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;Ho ho ho!&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">checkChristmasDate</span><span class="p">(</span><span class="n">date_string</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">if</span> <span class="ow">not</span> <span class="n">date_string</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;24.12.&#39;</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">raise</span> <span class="ne">ValueError</span> <span class="c"># or TypeError</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xmas_type</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">PyType</span><span class="p">(</span><span class="s">&#39;date&#39;</span><span class="p">,</span> <span class="n">checkChristmasDate</span><span class="p">,</span> <span class="n">ChristmasDate</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>The PyType constructor takes a string type name, an (optional) callable type
+check and the custom data class.  If a type check is provided it must accept a
+string as argument and raise ValueError or TypeError if it cannot handle the
+string value.</p>
+<p>PyTypes are used if an element carries a <tt class="docutils literal"><span class="pre">py:pytype</span></tt> attribute denoting its
+data type or, in absence of such an attribute, if the given type check callable
+does not raise a ValueError/TypeError exception when applied to the element
+text.</p>
+<p>If you want, you can also register this type under an XML Schema type name:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xmas_type</span><span class="o">.</span><span class="n">xmlSchemaTypes</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;date&quot;</span><span class="p">,)</span>
+</pre></div>
+</div>
+<p>XML Schema types will be considered if the element has an <tt class="docutils literal"><span class="pre">xsi:type</span></tt>
+attribute that specifies its data type.  The line above binds the XSD type
+<tt class="docutils literal"><span class="pre">date</span></tt> to the newly defined Python type.  Note that this must be done before
+the next step, which is to register the type.  Then you can use it:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xmas_type</span><span class="o">.</span><span class="n">register</span><span class="p">()</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span>
+<span class="gp">... </span>            <span class="s">&quot;&lt;root&gt;&lt;a&gt;24.12.2000&lt;/a&gt;&lt;b&gt;12.24.2000&lt;/b&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">call_santa</span><span class="p">()</span>
+<span class="go">Ho ho ho!</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">b</span><span class="o">.</span><span class="n">call_santa</span><span class="p">()</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AttributeError: no such child</span>: <span class="n">call_santa</span>
+</pre></div>
+</div>
+<p>If you need to specify dependencies between the type check functions, you can
+pass a sequence of type names through the <tt class="docutils literal"><span class="pre">before</span></tt> and <tt class="docutils literal"><span class="pre">after</span></tt> keyword
+arguments of the <tt class="docutils literal"><span class="pre">register()</span></tt> method.  The PyType will then try to register
+itself before or after the respective types, as long as they are currently
+registered.  Note that this only impacts the currently registered types at the
+time of registration.  Types that are registered later on will not care about
+the dependencies of already registered types.</p>
+<p>If you provide XML Schema type information, this will override the type check
+function defined above:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">   &lt;root xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;</span>
+<span class="gp">... </span><span class="s">     &lt;a xsi:type=&quot;date&quot;&gt;12.24.2000&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">   &#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="p">)</span>
+<span class="go">12.24.2000</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">call_santa</span><span class="p">()</span>
+<span class="go">Ho ho ho!</span>
+</pre></div>
+</div>
+<p>To unregister a type, call its <tt class="docutils literal"><span class="pre">unregister()</span></tt> method:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">call_santa</span><span class="p">()</span>
+<span class="go">Ho ho ho!</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xmas_type</span><span class="o">.</span><span class="n">unregister</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">a</span><span class="o">.</span><span class="n">call_santa</span><span class="p">()</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AttributeError: no such child</span>: <span class="n">call_santa</span>
+</pre></div>
+</div>
+<p>Be aware, though, that this does not immediately apply to elements to which
+there already is a Python reference.  Their Python class will only be changed
+after all references are gone and the Python object is garbage collected.</p>
+</div>
+<div class="section" id="advanced-element-class-lookup">
+<h3><a class="toc-backref" href="#id17">Advanced element class lookup</a><a class="headerlink" href="#advanced-element-class-lookup" title="Permalink to this headline">¶</a></h3>
+<p>In some cases, the normal data class setup is not enough.  Being based
+on <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>, however, <tt class="docutils literal"><span class="pre">lxml.objectify</span></tt> supports very
+fine-grained control over the Element classes used in a tree.  All you
+have to do is configure a different <a class="reference external" href="element_classes.html">class lookup</a> mechanism (or
+write one yourself).</p>
+<p>The first step for the setup is to create a new parser that builds
+objectify documents.  The objectify API is meant for data-centric XML
+(as opposed to document XML with mixed content).  Therefore, we
+configure the parser to let it remove whitespace-only text from the
+parsed document if it is not enclosed by an XML element.  Note that
+this alters the document infoset, so if you consider the removed
+spaces as data in your specific use case, you should go with a normal
+parser and just set the element class lookup.  Most applications,
+however, will work fine with the following setup:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">makeparser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>What this does internally, is:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifyElementClassLookup</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>If you want to change the lookup scheme, say, to get additional
+support for <a class="reference external" href="element_classes.html#namespace-class-lookup">namespace specific classes</a>, you can register the
+objectify lookup as a fallback of the namespace lookup.  In this case,
+however, you have to take care that the namespace classes inherit from
+<tt class="docutils literal"><span class="pre">objectify.ObjectifiedElement</span></tt>, not only from the normal
+<tt class="docutils literal"><span class="pre">lxml.etree.ElementBase</span></tt>, so that they support the <tt class="docutils literal"><span class="pre">objectify</span></tt>
+API.  The above setup code then becomes:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementNamespaceClassLookup</span><span class="p">(</span>
+<span class="gp">... </span>                  <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifyElementClassLookup</span><span class="p">()</span> <span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>See the documentation on <a class="reference external" href="element_classes.html">class lookup</a> schemes for more information.</p>
+</div>
+</div>
+<div class="section" id="what-is-different-from-lxml-etree">
+<h2><a class="toc-backref" href="#id18">What is different from lxml.etree?</a><a class="headerlink" href="#what-is-different-from-lxml-etree" title="Permalink to this headline">¶</a></h2>
+<p>Such a different Element API obviously implies some side effects to the normal
+behaviour of the rest of the API.</p>
+<ul class="simple">
+<li>len(&lt;element&gt;) returns the sibling count, not the number of children of
+&lt;element&gt;. You can retrieve the number of children with the
+<tt class="docutils literal"><span class="pre">countchildren()</span></tt> method.</li>
+<li>Iteration over elements does not yield the children, but the siblings.  You
+can access all children with the <tt class="docutils literal"><span class="pre">iterchildren()</span></tt> method on elements or
+retrieve a list by calling the <tt class="docutils literal"><span class="pre">getchildren()</span></tt> method.</li>
+<li>The find, findall and findtext methods require a different implementation
+based on ETXPath.  In <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>, they use a Python implementation based
+on the original iteration scheme.  This has the disadvantage that they may
+not be 100% backwards compatible, and the additional advantage that they now
+support any XPath expression.</li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">lxml.objectify</a><ul>
+<li><a class="reference internal" href="#the-lxml-objectify-api">The lxml.objectify API</a><ul>
+<li><a class="reference internal" href="#creating-objectify-trees">Creating objectify trees</a></li>
+<li><a class="reference internal" href="#element-access-through-object-attributes">Element access through object attributes</a></li>
+<li><a class="reference internal" href="#tree-generation-with-the-e-factory">Tree generation with the E-factory</a></li>
+<li><a class="reference internal" href="#namespace-handling">Namespace handling</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#asserting-a-schema">Asserting a Schema</a></li>
+<li><a class="reference internal" href="#objectpath">ObjectPath</a></li>
+<li><a class="reference internal" href="#python-data-types">Python data types</a><ul>
+<li><a class="reference internal" href="#recursive-tree-dump">Recursive tree dump</a></li>
+<li><a class="reference internal" href="#recursive-string-representation-of-elements">Recursive string representation of elements</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#how-data-types-are-matched">How data types are matched</a><ul>
+<li><a class="reference internal" href="#type-annotations">Type annotations</a></li>
+<li><a class="reference internal" href="#xml-schema-datatype-annotation">XML Schema datatype annotation</a></li>
+<li><a class="reference internal" href="#the-dataelement-factory">The DataElement factory</a></li>
+<li><a class="reference internal" href="#defining-additional-data-classes">Defining additional data classes</a></li>
+<li><a class="reference internal" href="#advanced-element-class-lookup">Advanced element class lookup</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/objectify.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/parsing.html b/doc/sphinx/parsing.html
new file mode 100644 (file)
index 0000000..bee052f
--- /dev/null
@@ -0,0 +1,814 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Parsing XML and HTML with lxml &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="parsing-xml-and-html-with-lxml">
+<h1><a class="toc-backref" href="#id1">Parsing XML and HTML with lxml</a><a class="headerlink" href="#parsing-xml-and-html-with-lxml" title="Permalink to this headline">¶</a></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
+event-driven API (currently only for XML).</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#parsing-xml-and-html-with-lxml" id="id1">Parsing XML and HTML with lxml</a><ul>
+<li><a class="reference internal" href="#parsers" id="id2">Parsers</a><ul>
+<li><a class="reference internal" href="#parser-options" id="id3">Parser options</a></li>
+<li><a class="reference internal" href="#error-log" id="id4">Error log</a></li>
+<li><a class="reference internal" href="#parsing-html" id="id5">Parsing HTML</a></li>
+<li><a class="reference internal" href="#doctype-information" id="id6">Doctype information</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#the-target-parser-interface" id="id7">The target parser interface</a></li>
+<li><a class="reference internal" href="#the-feed-parser-interface" id="id8">The feed parser interface</a></li>
+<li><a class="reference internal" href="#iterparse-and-iterwalk" id="id9">iterparse and iterwalk</a><ul>
+<li><a class="reference internal" href="#selective-tag-events" id="id10">Selective tag events</a></li>
+<li><a class="reference internal" href="#comments-and-pis" id="id11">Comments and PIs</a></li>
+<li><a class="reference internal" href="#modifying-the-tree" id="id12">Modifying the tree</a></li>
+<li><a class="reference internal" href="#iterwalk" id="id13">iterwalk</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#python-unicode-strings" id="id14">Python unicode strings</a><ul>
+<li><a class="reference internal" href="#serialising-to-unicode-strings" id="id15">Serialising to Unicode strings</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<p>The usual setup procedure:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+</pre></div>
+</div>
+<div class="section" id="parsers">
+<h2><a class="toc-backref" href="#id2">Parsers</a><a class="headerlink" href="#parsers" title="Permalink to this headline">¶</a></h2>
+<p>Parsers are represented by parser objects.  There is support for parsing both
+XML and (broken) HTML.  Note that XHTML is best parsed as XML, parsing it with
+the HTML parser can lead to unexpected results.  Here is a simple example for
+parsing XML from an in-memory string:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml</span> <span class="o">=</span> <span class="s">&#39;&lt;a xmlns=&quot;test&quot;&gt;&lt;b xmlns=&quot;test&quot;/&gt;&lt;/a&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">xml</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;a xmlns=&quot;test&quot;&gt;&lt;b xmlns=&quot;test&quot;/&gt;&lt;/a&gt;&#39;</span>
+</pre></div>
+</div>
+<p>To read from a file or file-like object, you can use the <tt class="docutils literal"><span class="pre">parse()</span></tt> function,
+which returns an <tt class="docutils literal"><span class="pre">ElementTree</span></tt> object:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">))</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">())</span>
+<span class="go">b&#39;&lt;a xmlns=&quot;test&quot;&gt;&lt;b xmlns=&quot;test&quot;/&gt;&lt;/a&gt;&#39;</span>
+</pre></div>
+</div>
+<p>Note how the <tt class="docutils literal"><span class="pre">parse()</span></tt> function reads from a file-like object here.  If
+parsing is done from a real file, it is more common (and also somewhat more
+efficient) to pass a filename:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s">&quot;doc/test.xml&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>lxml can parse from a local file, an HTTP URL or an FTP URL.  It also
+auto-detects and reads gzip-compressed XML files (.gz).</p>
+<p>If you want to parse from memory and still provide a base URL for the document
+(e.g. to support relative paths in an XInclude), you can pass the <tt class="docutils literal"><span class="pre">base_url</span></tt>
+keyword argument:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">xml</span><span class="p">,</span> <span class="n">base_url</span><span class="o">=</span><span class="s">&quot;http://where.it/is/from.xml&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<div class="section" id="parser-options">
+<h3><a class="toc-backref" href="#id3">Parser options</a><a class="headerlink" href="#parser-options" title="Permalink to this headline">¶</a></h3>
+<p>The parsers accept a number of setup options as keyword arguments.  The above
+example is easily extended to clean up namespaces during parsing:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">ns_clean</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span>   <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">),</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">())</span>
+<span class="go">b&#39;&lt;a xmlns=&quot;test&quot;&gt;&lt;b/&gt;&lt;/a&gt;&#39;</span>
+</pre></div>
+</div>
+<p>The keyword arguments in the constructor are mainly based on the libxml2
+parser configuration.  A DTD will also be loaded if validation or attribute
+default values are requested.</p>
+<p>Available boolean keyword arguments:</p>
+<ul class="simple">
+<li>attribute_defaults - read the DTD (if referenced by the document) and add
+the default attributes from it</li>
+<li>dtd_validation - validate while parsing (if a DTD was referenced)</li>
+<li>load_dtd - load and parse the DTD while parsing (no validation is performed)</li>
+<li>no_network - prevent network access when looking up external
+documents (on by default)</li>
+<li>ns_clean - try to clean up redundant namespace declarations</li>
+<li>recover - try hard to parse through broken XML</li>
+<li>remove_blank_text - discard blank text nodes between tags (best used
+together with a DTD)</li>
+<li>remove_comments - discard comments</li>
+<li>remove_pis - discard processing instructions</li>
+<li>strip_cdata - replace CDATA sections by normal text content (on by
+default)</li>
+<li>resolve_entities - replace entities by their text value (on by
+default)</li>
+<li>huge_tree - disable security restrictions and support very deep trees
+and very long text content (only affects libxml2 2.7+)</li>
+<li>compact - use compact storage for short text content (on by default)</li>
+</ul>
+<p>Other keyword arguments:</p>
+<ul class="simple">
+<li>encoding - override the document encoding</li>
+<li>target - a parser target object that will receive the parse events
+(see <a class="reference internal" href="#the-target-parser-interface">The target parser interface</a>)</li>
+<li>schema   - an XMLSchema to validate against (see <a class="reference external" href="validation.html#xmlschema">validation</a>)</li>
+</ul>
+</div>
+<div class="section" id="error-log">
+<h3><a class="toc-backref" href="#id4">Error log</a><a class="headerlink" href="#error-log" title="Permalink to this headline">¶</a></h3>
+<p>Parsers have an <tt class="docutils literal"><span class="pre">error_log</span></tt> property that lists the errors and
+warnings of the last parser run:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">error_log</span><span class="p">))</span>
+<span class="go">0</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;/b&gt;&quot;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XMLSyntaxError: Opening and ending tag mismatch</span>: <span class="n">root line 1 and b, line 1, column 11</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">error_log</span><span class="p">))</span>
+<span class="go">1</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">error</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">error_log</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">message</span><span class="p">)</span>
+<span class="go">Opening and ending tag mismatch: root line 1 and b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">line</span><span class="p">)</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">column</span><span class="p">)</span>
+<span class="go">11</span>
+</pre></div>
+</div>
+<p>Each entry in the log has the following properties:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">message</span></tt>: the message text</li>
+<li><tt class="docutils literal"><span class="pre">domain</span></tt>: the domain ID (see the lxml.etree.ErrorDomains class)</li>
+<li><tt class="docutils literal"><span class="pre">type</span></tt>: the message type ID (see the lxml.etree.ErrorTypes class)</li>
+<li><tt class="docutils literal"><span class="pre">level</span></tt>: the log level ID (see the lxml.etree.ErrorLevels class)</li>
+<li><tt class="docutils literal"><span class="pre">line</span></tt>: the line at which the message originated (if applicable)</li>
+<li><tt class="docutils literal"><span class="pre">column</span></tt>: the character column at which the message originated (if applicable)</li>
+<li><tt class="docutils literal"><span class="pre">filename</span></tt>: the name of the file in which the message originated (if applicable)</li>
+</ul>
+<p>For convenience, there are also three properties that provide readable
+names for the ID values:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">domain_name</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">type_name</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">level_name</span></tt></li>
+</ul>
+<p>To filter for a specific kind of message, use the different
+<tt class="docutils literal"><span class="pre">filter_*()</span></tt> methods on the error log (see the
+lxml.etree._ListErrorLog class).</p>
+</div>
+<div class="section" id="parsing-html">
+<h3><a class="toc-backref" href="#id5">Parsing HTML</a><a class="headerlink" href="#parsing-html" title="Permalink to this headline">¶</a></h3>
+<p>HTML parsing is similarly simple.  The parsers have a <tt class="docutils literal"><span class="pre">recover</span></tt>
+keyword argument that the HTMLParser sets by default.  It lets libxml2
+try its best to return a valid HTML tree with all content it can
+manage to parse.  It will not raise an exception on parser errors.
+You should use libxml2 version 2.6.21 or newer to take advantage of
+this feature.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">broken_html</span> <span class="o">=</span> <span class="s">&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;test&lt;body&gt;&lt;h1&gt;page title&lt;/h3&gt;&quot;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">HTMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span>   <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">broken_html</span><span class="p">),</span> <span class="n">parser</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">(),</span>
+<span class="gp">... </span>                        <span class="n">pretty_print</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&lt;html&gt;</span>
+<span class="go">  &lt;head&gt;</span>
+<span class="go">    &lt;title&gt;test&lt;/title&gt;</span>
+<span class="go">  &lt;/head&gt;</span>
+<span class="go">  &lt;body&gt;</span>
+<span class="go">    &lt;h1&gt;page title&lt;/h1&gt;</span>
+<span class="go">  &lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>Lxml has an HTML function, similar to the XML shortcut known from
+ElementTree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">html</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">HTML</span><span class="p">(</span><span class="n">broken_html</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</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="n">method</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&lt;html&gt;</span>
+<span class="go">  &lt;head&gt;</span>
+<span class="go">    &lt;title&gt;test&lt;/title&gt;</span>
+<span class="go">  &lt;/head&gt;</span>
+<span class="go">  &lt;body&gt;</span>
+<span class="go">    &lt;h1&gt;page title&lt;/h1&gt;</span>
+<span class="go">  &lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>The support for parsing broken HTML depends entirely on libxml2&#8217;s recovery
+algorithm.  It is <em>not</em> the fault of lxml if you find documents that are so
+heavily broken that the parser cannot handle them.  There is also no guarantee
+that the resulting tree will contain all data from the original document.  The
+parser may have to drop seriously broken parts when struggling to keep
+parsing.  Especially misplaced meta tags can suffer from this, which may lead
+to encoding problems.</p>
+<p>Note that the result is a valid HTML tree, but it may not be a
+well-formed XML tree.  For example, XML forbids double hyphens in
+comments, which the HTML parser will happily accept in recovery mode.
+Therefore, if your goal is to serialise an HTML document as an
+XML/XHTML document after parsing, you may have to apply some manual
+preprocessing first.</p>
+<p>Also note that the HTML parser is meant to parse HTML documents.  For
+XHTML documents, use the XML parser, which is namespace aware.</p>
+</div>
+<div class="section" id="doctype-information">
+<h3><a class="toc-backref" href="#id6">Doctype information</a><a class="headerlink" href="#doctype-information" title="Permalink to this headline">¶</a></h3>
+<p>The use of the libxml2 parsers makes some additional information available at
+the API level.  Currently, ElementTree objects can access the DOCTYPE
+information provided by a parsed document, as well as the XML version and the
+original encoding:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">pub_id</span>  <span class="o">=</span> <span class="s">&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">sys_url</span> <span class="o">=</span> <span class="s">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doctype_string</span> <span class="o">=</span> <span class="s">&#39;&lt;!DOCTYPE html PUBLIC &quot;</span><span class="si">%s</span><span class="s">&quot; &quot;</span><span class="si">%s</span><span class="s">&quot;&gt;&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">pub_id</span><span class="p">,</span> <span class="n">sys_url</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xml_header</span> <span class="o">=</span> <span class="s">&#39;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ascii&quot;?&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xhtml</span> <span class="o">=</span> <span class="n">xml_header</span> <span class="o">+</span> <span class="n">doctype_string</span> <span class="o">+</span> <span class="s">&#39;&lt;html&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xhtml</span><span class="p">))</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">docinfo</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">public_id</span><span class="p">)</span>
+<span class="go">-//W3C//DTD XHTML 1.0 Transitional//EN</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">system_url</span><span class="p">)</span>
+<span class="go">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">docinfo</span><span class="o">.</span><span class="n">doctype</span> <span class="o">==</span> <span class="n">doctype_string</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">xml_version</span><span class="p">)</span>
+<span class="go">1.0</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">docinfo</span><span class="o">.</span><span class="n">encoding</span><span class="p">)</span>
+<span class="go">ascii</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="the-target-parser-interface">
+<h2><a class="toc-backref" href="#id7">The target parser interface</a><a class="headerlink" href="#the-target-parser-interface" title="Permalink to this headline">¶</a></h2>
+<p><a class="reference external" href="http://effbot.org/elementtree/elementtree-xmlparser.htm">As in ElementTree</a>, and similar to a SAX event handler, you can pass
+a target object to the parser:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">EchoTarget</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">attrib</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;start </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tag</span><span class="p">,</span> <span class="n">attrib</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">end</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;end </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;data </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">data</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;comment </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">text</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;close&quot;</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="s">&quot;closed!&quot;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">target</span> <span class="o">=</span> <span class="n">EchoTarget</span><span class="p">())</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;element&gt;some&lt;!--comment--&gt;text&lt;/element&gt;&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                   <span class="n">parser</span><span class="p">)</span>
+<span class="go">start element {}</span>
+<span class="go">data u&#39;some&#39;</span>
+<span class="go">comment comment</span>
+<span class="go">data u&#39;text&#39;</span>
+<span class="go">end element</span>
+<span class="go">close</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">closed!</span>
+</pre></div>
+</div>
+<p>It is important for the <tt class="docutils literal"><span class="pre">.close()</span></tt> method to reset the parser target
+to a usable state, so that you can reuse the parser as often as you
+like:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;element&gt;some&lt;!--comment--&gt;text&lt;/element&gt;&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                   <span class="n">parser</span><span class="p">)</span>
+<span class="go">start element {}</span>
+<span class="go">data u&#39;some&#39;</span>
+<span class="go">comment comment</span>
+<span class="go">data u&#39;text&#39;</span>
+<span class="go">end element</span>
+<span class="go">close</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">closed!</span>
+</pre></div>
+</div>
+<p>Starting with lxml 2.3, the <tt class="docutils literal"><span class="pre">.close()</span></tt> method will also be called in
+the error case.  This diverges from the behaviour of ElementTree, but
+allows target objects to clean up their state in all situations, so
+that the parser can reuse them afterwards.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">CollectorTarget</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">events</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">attrib</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;start </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tag</span><span class="p">,</span> <span class="n">attrib</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">end</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;end </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;data </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">data</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;comment </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">text</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;close&quot;</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="s">&quot;closed!&quot;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">target</span> <span class="o">=</span> <span class="n">CollectorTarget</span><span class="p">())</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;element&gt;some&lt;/error&gt;&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                   <span class="n">parser</span><span class="p">)</span>        
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XMLSyntaxError</span>: <span class="n">Opening and ending tag mismatch...</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="n">parser</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">events</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="p">)</span>
+<span class="go">start element {}</span>
+<span class="go">data u&#39;some&#39;</span>
+<span class="go">close</span>
+</pre></div>
+</div>
+<p>Note that the parser does <em>not</em> build a tree when using a parser
+target.  The result of the parser run is whatever the target object
+returns from its <tt class="docutils literal"><span class="pre">.close()</span></tt> method.  If you want to return an XML
+tree here, you have to create it programmatically in the target
+object.  An example for a parser target that builds a tree is the
+<tt class="docutils literal"><span class="pre">TreeBuilder</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">target</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">TreeBuilder</span><span class="p">())</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;element&gt;some&lt;!--comment--&gt;text&lt;/element&gt;&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                   <span class="n">parser</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">element</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="go">comment</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="the-feed-parser-interface">
+<h2><a class="toc-backref" href="#id8">The feed parser interface</a><a class="headerlink" href="#the-feed-parser-interface" title="Permalink to this headline">¶</a></h2>
+<p>Since lxml 2.0, the parsers have a feed parser interface that is
+compatible to the <a class="reference external" href="http://effbot.org/elementtree/elementtree-xmlparser.htm">ElementTree parsers</a>.  You can use it to feed data
+into the parser in a controlled step-by-step way.</p>
+<p>In lxml.etree, you can use both interfaces to a parser at the same
+time: the <tt class="docutils literal"><span class="pre">parse()</span></tt> or <tt class="docutils literal"><span class="pre">XML()</span></tt> functions, and the feed parser
+interface.  Both are independent and will not conflict (except if used
+in conjunction with a parser target object as described above).</p>
+<p>To start parsing with a feed parser, just call its <tt class="docutils literal"><span class="pre">feed()</span></tt> method
+to feed it some data.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&#39;&lt;?xml versio&#39;</span><span class="p">,</span> <span class="s">&#39;n=&quot;1.0&quot;?&#39;</span><span class="p">,</span> <span class="s">&#39;&gt;&lt;roo&#39;</span><span class="p">,</span> <span class="s">&#39;t&gt;&lt;a&#39;</span><span class="p">,</span> <span class="s">&#39;/&gt;&lt;/root&gt;&#39;</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>When you are done parsing, you <strong>must</strong> call the <tt class="docutils literal"><span class="pre">close()</span></tt> method to
+retrieve the root Element of the parse result document, and to unlock the
+parser:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">a</span>
+</pre></div>
+</div>
+<p>If you do not call <tt class="docutils literal"><span class="pre">close()</span></tt>, the parser will stay locked and
+subsequent feeds will keep appending data, usually resulting in a non
+well-formed document and an unexpected parser error.  So make sure you
+always close the parser after use, also in the exception case.</p>
+<p>Another way of achieving the same step-by-step parsing is by writing your own
+file-like object that returns a chunk of data on each <tt class="docutils literal"><span class="pre">read()</span></tt> call.  Where
+the feed parser interface allows you to actively pass data chunks into the
+parser, a file-like object passively responds to <tt class="docutils literal"><span class="pre">read()</span></tt> requests of the
+parser itself.  Depending on the data source, either way may be more natural.</p>
+<p>Note that the feed parser has its own error log called
+<tt class="docutils literal"><span class="pre">feed_error_log</span></tt>.  Errors in the feed parser do not show up in the
+normal <tt class="docutils literal"><span class="pre">error_log</span></tt> and vice versa.</p>
+<p>You can also combine the feed parser interface with the target parser:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">target</span> <span class="o">=</span> <span class="n">EchoTarget</span><span class="p">())</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s">&quot;&lt;eleme&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s">&quot;nt&gt;some text&lt;/elem&quot;</span><span class="p">)</span>
+<span class="go">start element {}</span>
+<span class="go">data u&#39;some text&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s">&quot;ent&gt;&quot;</span><span class="p">)</span>
+<span class="go">end element</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+<span class="go">close</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">closed!</span>
+</pre></div>
+</div>
+<p>Again, this prevents the automatic creation of an XML tree and leaves
+all the event handling to the target object.  The <tt class="docutils literal"><span class="pre">close()</span></tt> method
+of the parser forwards the return value of the target&#8217;s <tt class="docutils literal"><span class="pre">close()</span></tt>
+method.</p>
+</div>
+<div class="section" id="iterparse-and-iterwalk">
+<h2><a class="toc-backref" href="#id9">iterparse and iterwalk</a><a class="headerlink" href="#iterparse-and-iterwalk" title="Permalink to this headline">¶</a></h2>
+<p>As known from ElementTree, the <tt class="docutils literal"><span class="pre">iterparse()</span></tt> utility function
+returns an iterator that generates parser events for an XML file (or
+file-like object), while building the tree.  The values are tuples
+<tt class="docutils literal"><span class="pre">(event-type,</span> <span class="pre">object)</span></tt>.  The event types supported by ElementTree
+and lxml.etree are the strings &#8216;start&#8217;, &#8216;end&#8217;, &#8216;start-ns&#8217; and
+&#8216;end-ns&#8217;.</p>
+<p>The &#8216;start&#8217; and &#8216;end&#8217; events represent opening and closing elements.
+They are accompanied by the respective Element instance.  By default,
+only &#8216;end&#8217; events are generated:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;root&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;element key=&#39;value&#39;&gt;text&lt;/element&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;element&gt;text&lt;/element&gt;tail</span>
+<span class="gp">... </span><span class="s">  &lt;empty-element xmlns=&quot;http://testns/&quot; /&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">))</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="go">end: element</span>
+<span class="go">end: element</span>
+<span class="go">end: {http://testns/}empty-element</span>
+<span class="go">end: root</span>
+</pre></div>
+</div>
+<p>The resulting tree is available through the <tt class="docutils literal"><span class="pre">root</span></tt> property of the iterator:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">context</span><span class="o">.</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;root&#39;</span>
+</pre></div>
+</div>
+<p>The other event types can be activated with the <tt class="docutils literal"><span class="pre">events</span></tt> keyword argument:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">events</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;start&quot;</span><span class="p">,</span> <span class="s">&quot;end&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">),</span> <span class="n">events</span><span class="o">=</span><span class="n">events</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="go">start: root</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+<span class="go">start: {http://testns/}empty-element</span>
+<span class="go">end: {http://testns/}empty-element</span>
+<span class="go">end: root</span>
+</pre></div>
+</div>
+<p>The &#8216;start-ns&#8217; and &#8216;end-ns&#8217; events notify about namespace
+declarations.  They do not come with Elements.  Instead, the value of
+the &#8216;start-ns&#8217; event is a tuple <tt class="docutils literal"><span class="pre">(prefix,</span> <span class="pre">namespaceURI)</span></tt> that
+designates the beginning of a prefix-namespace mapping.  The
+corresponding <tt class="docutils literal"><span class="pre">end-ns</span></tt> event does not have a value (None).  It is
+common practice to use a list as namespace stack and pop the last
+entry on the &#8216;end-ns&#8217; event.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">xml</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
+<span class="go">&lt;root&gt;</span>
+<span class="go">  &lt;element key=&#39;value&#39;&gt;text&lt;/element&gt;</span>
+<span class="go">  &lt;element&gt;text&lt;/element&gt;tail</span>
+<span class="go">  &lt;empty-element xmlns=&quot;http://testns/&quot; /&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">events</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;start&quot;</span><span class="p">,</span> <span class="s">&quot;end&quot;</span><span class="p">,</span> <span class="s">&quot;start-ns&quot;</span><span class="p">,</span> <span class="s">&quot;end-ns&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">),</span> <span class="n">events</span><span class="o">=</span><span class="n">events</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">if</span> <span class="n">action</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&#39;start&#39;</span><span class="p">,</span> <span class="s">&#39;end&#39;</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="k">elif</span> <span class="n">action</span> <span class="o">==</span> <span class="s">&#39;start-ns&#39;</span><span class="p">:</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</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="n">action</span><span class="p">)</span>
+<span class="go">start: root</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+<span class="go">start-ns: (&#39;&#39;, &#39;http://testns/&#39;)</span>
+<span class="go">start: {http://testns/}empty-element</span>
+<span class="go">end: {http://testns/}empty-element</span>
+<span class="go">end-ns</span>
+<span class="go">end: root</span>
+</pre></div>
+</div>
+<div class="section" id="selective-tag-events">
+<h3><a class="toc-backref" href="#id10">Selective tag events</a><a class="headerlink" href="#selective-tag-events" title="Permalink to this headline">¶</a></h3>
+<p>As an extension over ElementTree, lxml.etree accepts a <tt class="docutils literal"><span class="pre">tag</span></tt> keyword
+argument just like <tt class="docutils literal"><span class="pre">element.iter(tag)</span></tt>.  This restricts events to a
+specific tag or namespace:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">),</span> <span class="n">tag</span><span class="o">=</span><span class="s">&quot;element&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="go">end: element</span>
+<span class="go">end: element</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">events</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;start&quot;</span><span class="p">,</span> <span class="s">&quot;end&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span>
+<span class="gp">... </span>            <span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">),</span> <span class="n">events</span><span class="o">=</span><span class="n">events</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="s">&quot;{http://testns/}*&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="go">start: {http://testns/}empty-element</span>
+<span class="go">end: {http://testns/}empty-element</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="comments-and-pis">
+<h3><a class="toc-backref" href="#id11">Comments and PIs</a><a class="headerlink" href="#comments-and-pis" title="Permalink to this headline">¶</a></h3>
+<p>As an extension over ElementTree, the <tt class="docutils literal"><span class="pre">iterparse()</span></tt> function in
+lxml.etree also supports the event types &#8216;comment&#8217; and &#8216;pi&#8217; for the
+respective XML structures.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">commented_xml</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;?some pi ?&gt;</span>
+<span class="gp">... </span><span class="s">&lt;!-- a comment --&gt;</span>
+<span class="gp">... </span><span class="s">&lt;root&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;element key=&#39;value&#39;&gt;text&lt;/element&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;!-- another comment --&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;element&gt;text&lt;/element&gt;tail</span>
+<span class="gp">... </span><span class="s">  &lt;empty-element xmlns=&quot;http://testns/&quot; /&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">events</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;start&quot;</span><span class="p">,</span> <span class="s">&quot;end&quot;</span><span class="p">,</span> <span class="s">&quot;comment&quot;</span><span class="p">,</span> <span class="s">&quot;pi&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">commented_xml</span><span class="p">),</span> <span class="n">events</span><span class="o">=</span><span class="n">events</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">if</span> <span class="n">action</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&#39;start&#39;</span><span class="p">,</span> <span class="s">&#39;end&#39;</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="k">elif</span> <span class="n">action</span> <span class="o">==</span> <span class="s">&#39;pi&#39;</span><span class="p">:</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: -</span><span class="si">%s</span><span class="s">=</span><span class="si">%s</span><span class="s">-&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="n">elem</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="c"># &#39;comment&#39;</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: -</span><span class="si">%s</span><span class="s">-&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="go">pi: -some=pi -</span>
+<span class="go">comment: - a comment -</span>
+<span class="go">start: root</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+<span class="go">comment: - another comment -</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+<span class="go">start: {http://testns/}empty-element</span>
+<span class="go">end: {http://testns/}empty-element</span>
+<span class="go">end: root</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="modifying-the-tree">
+<h3><a class="toc-backref" href="#id12">Modifying the tree</a><a class="headerlink" href="#modifying-the-tree" title="Permalink to this headline">¶</a></h3>
+<p>You can modify the element and its descendants when handling the &#8216;end&#8217; event.
+To save memory, for example, you can remove subtrees that are no longer
+needed:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">))</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">elem</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="n">elem</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+<span class="go">0</span>
+<span class="go">0</span>
+<span class="go">0</span>
+<span class="go">3</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">context</span><span class="o">.</span><span class="n">root</span><span class="o">.</span><span class="n">getchildren</span><span class="p">()</span>
+<span class="go">[]</span>
+</pre></div>
+</div>
+<p><strong>WARNING</strong>: During the &#8216;start&#8217; event, any content of the element,
+such as the descendants, following siblings or text, is not yet
+available and should not be accessed.  Only attributes are guaranteed
+to be set.  During the &#8216;end&#8217; event, the element and its descendants
+can be freely modified, but its following siblings should not be
+accessed.  During either of the two events, you <strong>must not</strong> modify or
+move the ancestors (parents) of the current element.  You should also
+avoid moving or discarding the element itself.  The golden rule is: do
+not touch anything that will have to be touched again by the parser
+later on.</p>
+<p>If you have elements with a long list of children in your XML file and want to
+save more memory during parsing, you can clean up the preceding siblings of
+the current element:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">event</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">)):</span>
+<span class="gp">... </span>    <span class="c"># ... do something with the element</span>
+<span class="gp">... </span>    <span class="n">element</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>                 <span class="c"># clean up children</span>
+<span class="gp">... </span>    <span class="k">while</span> <span class="n">element</span><span class="o">.</span><span class="n">getprevious</span><span class="p">()</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
+<span class="gp">... </span>        <span class="k">del</span> <span class="n">element</span><span class="o">.</span><span class="n">getparent</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>  <span class="c"># clean up preceding siblings</span>
+</pre></div>
+</div>
+<p>The <tt class="docutils literal"><span class="pre">while</span></tt> loop deletes multiple siblings in a row.  This is only necessary
+if you skipped over some of them using the <tt class="docutils literal"><span class="pre">tag</span></tt> keyword argument.
+Otherwise, a simple <tt class="docutils literal"><span class="pre">if</span></tt> should do.  The more selective your tag is,
+however, the more thought you will have to put into finding the right way to
+clean up the elements that were skipped.  Therefore, it is sometimes easier to
+traverse all elements and do the tag selection by hand in the event handler
+code.</p>
+</div>
+<div class="section" id="iterwalk">
+<h3><a class="toc-backref" href="#id13">iterwalk</a><a class="headerlink" href="#iterwalk" title="Permalink to this headline">¶</a></h3>
+<p>A second extension over ElementTree is the <tt class="docutils literal"><span class="pre">iterwalk()</span></tt> function.  It
+behaves exactly like <tt class="docutils literal"><span class="pre">iterparse()</span></tt>, but works on Elements and ElementTrees:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="n">xml</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterwalk</span><span class="p">(</span>
+<span class="gp">... </span>            <span class="n">root</span><span class="p">,</span> <span class="n">events</span><span class="o">=</span><span class="p">(</span><span class="s">&quot;start&quot;</span><span class="p">,</span> <span class="s">&quot;end&quot;</span><span class="p">),</span> <span class="n">tag</span><span class="o">=</span><span class="s">&quot;element&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">context</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span>
+<span class="gp">... </span>            <span class="n">f</span><span class="p">,</span> <span class="n">events</span><span class="o">=</span><span class="p">(</span><span class="s">&quot;start&quot;</span><span class="p">,</span> <span class="s">&quot;end&quot;</span><span class="p">),</span> <span class="n">tag</span><span class="o">=</span><span class="s">&quot;element&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">action</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">context</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">action</span><span class="p">,</span> <span class="n">elem</span><span class="o">.</span><span class="n">tag</span><span class="p">))</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+<span class="go">start: element</span>
+<span class="go">end: element</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="python-unicode-strings">
+<h2><a class="toc-backref" href="#id14">Python unicode strings</a><a class="headerlink" href="#python-unicode-strings" title="Permalink to this headline">¶</a></h2>
+<p>lxml.etree has broader support for Python unicode strings than the ElementTree
+library.  First of all, where ElementTree would raise an exception, the
+parsers in lxml.etree can handle unicode strings straight away.  This is most
+helpful for XML snippets embedded in source code using the <tt class="docutils literal"><span class="pre">XML()</span></tt>
+function:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">uxml</span> <span class="o">=</span> <span class="s">u&#39;&lt;test&gt; </span><span class="se">\uf8d1</span><span class="s"> + </span><span class="se">\uf8d2</span><span class="s"> &lt;/test&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">uxml</span>
+<span class="go">u&#39;&lt;test&gt; \uf8d1 + \uf8d2 &lt;/test&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="n">uxml</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This requires, however, that unicode strings do not specify a conflicting
+encoding themselves and thus lie about their real encoding:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span> <span class="s">u&#39;&lt;?xml version=&quot;1.0&quot; encoding=&quot;ASCII&quot;?&gt;</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">+</span> <span class="n">uxml</span> <span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">ValueError</span>: <span class="n">Unicode strings with encoding declaration are not supported.</span>
+</pre></div>
+</div>
+<p>Similarly, you will get errors when you try the same with HTML data in a
+unicode string that specifies a charset in a meta tag of the header.  You
+should generally avoid converting XML/HTML data to unicode before passing it
+into the parsers.  It is both slower and error prone.</p>
+<div class="section" id="serialising-to-unicode-strings">
+<h3><a class="toc-backref" href="#id15">Serialising to Unicode strings</a><a class="headerlink" href="#serialising-to-unicode-strings" title="Permalink to this headline">¶</a></h3>
+<p>To serialize the result, you would normally use the <tt class="docutils literal"><span class="pre">tostring()</span></tt>
+module function, which serializes to plain ASCII by default or a
+number of other byte encodings if asked for:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;test&gt; &amp;#63697; + &amp;#63698; &lt;/test&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </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">encoding</span><span class="o">=</span><span class="s">&#39;UTF-8&#39;</span><span class="p">,</span> <span class="n">xml_declaration</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="go">b&#39;&lt;test&gt; \xef\xa3\x91 + \xef\xa3\x92 &lt;/test&gt;&#39;</span>
+</pre></div>
+</div>
+<p>As an extension, lxml.etree recognises the unicode type as an argument to the
+encoding parameter to build a Python unicode representation of a tree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </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">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">)</span>
+<span class="go">u&#39;&lt;test&gt; \uf8d1 + \uf8d2 &lt;/test&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">el</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;test&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">)</span>
+<span class="go">u&#39;&lt;test/&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">subel</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="s">&quot;subtest&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">)</span>
+<span class="go">u&#39;&lt;test&gt;&lt;subtest/&gt;&lt;/test&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">el</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">)</span>
+<span class="go">u&#39;&lt;test&gt;&lt;subtest/&gt;&lt;/test&gt;&#39;</span>
+</pre></div>
+</div>
+<p>The result of <tt class="docutils literal"><span class="pre">tostring(encoding=unicode)</span></tt> can be treated like any
+other Python unicode string and then passed back into the parsers.
+However, if you want to save the result to a file or pass it over the
+network, you should use <tt class="docutils literal"><span class="pre">write()</span></tt> or <tt class="docutils literal"><span class="pre">tostring()</span></tt> with a byte
+encoding (typically UTF-8) to serialize the XML.  The main reason is
+that unicode strings returned by <tt class="docutils literal"><span class="pre">tostring(encoding=unicode)</span></tt> are
+not byte streams and they never have an XML declaration to specify
+their encoding.  These strings are most likely not parsable by other
+XML libraries.</p>
+<p>For normal byte encodings, the <tt class="docutils literal"><span class="pre">tostring()</span></tt> function automatically
+adds a declaration as needed that reflects the encoding of the
+returned string.  This makes it possible for other parsers to
+correctly parse the XML byte stream.  Note that using <tt class="docutils literal"><span class="pre">tostring()</span></tt>
+with UTF-8 is also considerably faster in most cases.</p>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Parsing XML and HTML with lxml</a><ul>
+<li><a class="reference internal" href="#parsers">Parsers</a><ul>
+<li><a class="reference internal" href="#parser-options">Parser options</a></li>
+<li><a class="reference internal" href="#error-log">Error log</a></li>
+<li><a class="reference internal" href="#parsing-html">Parsing HTML</a></li>
+<li><a class="reference internal" href="#doctype-information">Doctype information</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#the-target-parser-interface">The target parser interface</a></li>
+<li><a class="reference internal" href="#the-feed-parser-interface">The feed parser interface</a></li>
+<li><a class="reference internal" href="#iterparse-and-iterwalk">iterparse and iterwalk</a><ul>
+<li><a class="reference internal" href="#selective-tag-events">Selective tag events</a></li>
+<li><a class="reference internal" href="#comments-and-pis">Comments and PIs</a></li>
+<li><a class="reference internal" href="#modifying-the-tree">Modifying the tree</a></li>
+<li><a class="reference internal" href="#iterwalk">iterwalk</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#python-unicode-strings">Python unicode strings</a><ul>
+<li><a class="reference internal" href="#serialising-to-unicode-strings">Serialising to Unicode strings</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/parsing.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/performance.html b/doc/sphinx/performance.html
new file mode 100644 (file)
index 0000000..6fe7aab
--- /dev/null
@@ -0,0 +1,835 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <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" />
+
+    <title>Benchmarks and Speed &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="benchmarks-and-speed">
+<h1><a class="toc-backref" href="#id1">Benchmarks and Speed</a><a class="headerlink" href="#benchmarks-and-speed" title="Permalink to this headline">¶</a></h1>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Author:</th><td class="field-body">Stefan Behnel</td>
+</tr>
+</tbody>
+</table>
+<p>lxml.etree is a very fast XML library.  Most of this is due to the
+speed of libxml2, e.g. the parser and serialiser, or the XPath engine.
+Other areas of lxml were specifically written for high performance in
+high-level operations, such as the tree iterators.</p>
+<p>On the other hand, the simplicity of lxml sometimes hides internal
+operations that are more costly than the API suggests.  If you are not
+aware of these cases, lxml may not always perform as you expect.  A
+common example in the Python world is the Python list type.  New users
+often expect it to be a linked list, while it actually is implemented
+as an array, which results in a completely different complexity for
+common operations.</p>
+<p>Similarly, the tree model of libxml2 is more complex than what lxml&#8217;s
+ElementTree API projects into Python space, so some operations may
+show unexpected performance.  Rest assured that most lxml users will
+not notice this in real life, as lxml is very fast in absolute
+numbers.  It is definitely fast enough for most applications, so lxml
+is probably somewhere between &#8216;fast enough&#8217; and &#8216;the best choice&#8217; for
+yours.  Read some <a class="reference external" href="http://permalink.gmane.org/gmane.comp.python.lxml.devel/3250">messages</a> from <a class="reference external" href="http://article.gmane.org/gmane.comp.python.lxml.devel/3246">happy</a> <a class="reference external" href="http://thread.gmane.org/gmane.comp.python.lxml.devel/3244/focus=3244">users</a> to see what we mean.</p>
+<p>This text describes where lxml.etree (abbreviated to &#8216;lxe&#8217;) excels, gives
+hints on some performance traps and compares the overall performance to the
+original <a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a> (ET) and <a class="reference external" href="http://effbot.org/zone/celementtree.htm">cElementTree</a> (cET) libraries by Fredrik Lundh.
+The cElementTree library is a fast C-implementation of the original
+ElementTree.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#benchmarks-and-speed" id="id1">Benchmarks and Speed</a><ul>
+<li><a class="reference internal" href="#general-notes" id="id2">General notes</a></li>
+<li><a class="reference internal" href="#how-to-read-the-timings" id="id3">How to read the timings</a></li>
+<li><a class="reference internal" href="#parsing-and-serialising" id="id4">Parsing and Serialising</a></li>
+<li><a class="reference internal" href="#the-elementtree-api" id="id5">The ElementTree API</a><ul>
+<li><a class="reference internal" href="#child-access" id="id6">Child access</a></li>
+<li><a class="reference internal" href="#element-creation" id="id7">Element creation</a></li>
+<li><a class="reference internal" href="#merging-different-sources" id="id8">Merging different sources</a></li>
+<li><a class="reference internal" href="#deepcopy" id="id9">deepcopy</a></li>
+<li><a class="reference internal" href="#tree-traversal" id="id10">Tree traversal</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#xpath" id="id11">XPath</a></li>
+<li><a class="reference internal" href="#a-longer-example" id="id12">A longer example</a></li>
+<li><a class="reference internal" href="#lxml-objectify" id="id13">lxml.objectify</a><ul>
+<li><a class="reference internal" href="#objectpath" id="id14">ObjectPath</a></li>
+<li><a class="reference internal" href="#caching-elements" id="id15">Caching Elements</a></li>
+<li><a class="reference internal" href="#further-optimisations" id="id16">Further optimisations</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="general-notes">
+<h2><a class="toc-backref" href="#id2">General notes</a><a class="headerlink" href="#general-notes" title="Permalink to this headline">¶</a></h2>
+<p>First thing to say: there <em>is</em> an overhead involved in having a DOM-like C
+library mimic the ElementTree API.  As opposed to ElementTree, lxml has to
+generate Python representations of tree nodes on the fly when asked for them,
+and the internal tree structure of libxml2 results in a higher maintenance
+overhead than the simpler top-down structure of ElementTree.  What this means
+is: the more of your code runs in Python, the less you can benefit from the
+speed of lxml and libxml2.  Note, however, that this is true for most
+performance critical Python applications.  No one would implement fourier
+transformations in pure Python when you can use NumPy.</p>
+<p>The up side then is that lxml provides powerful tools like tree iterators,
+XPath and XSLT, that can handle complex operations at the speed of C.  Their
+pythonic API in lxml makes them so flexible that most applications can easily
+benefit from them.</p>
+</div>
+<div class="section" id="how-to-read-the-timings">
+<h2><a class="toc-backref" href="#id3">How to read the timings</a><a class="headerlink" href="#how-to-read-the-timings" title="Permalink to this headline">¶</a></h2>
+<p>The statements made here are backed by the (micro-)benchmark scripts
+<a class="reference external" href="http://codespeak.net/svn/lxml/trunk/benchmark/bench_etree.py">bench_etree.py</a>, <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/benchmark/bench_xpath.py">bench_xpath.py</a> and <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/benchmark/bench_objectify.py">bench_objectify.py</a> that come with
+the lxml source distribution.  They are distributed under the same BSD license
+as lxml itself, and the lxml project would like to promote them as a general
+benchmarking suite for all ElementTree implementations.  New benchmarks are
+very easy to add as tiny test methods, so if you write a performance test for
+a specific part of the API yourself, please consider sending it to the lxml
+mailing list.</p>
+<p>The timings cited below compare lxml 2.3 (with libxml2 2.7.6) to the
+latest developer versions of ElementTree (1.3beta2) and cElementTree
+(1.0.6a3).  They were run single-threaded on a 2.5GHz 64bit Intel Core
+Duo machine under Ubuntu Linux 9.10 (Karmic).  The C libraries were
+compiled with the same platform specific optimisation flags.  The
+Python interpreter (2.6.4) was also manually compiled for the
+platform.  Note that many of the following ElementTree timings are
+therefore better then what a normal Python installation with the
+standard library (c)ElementTree modules would yield.</p>
+<p>The scripts run a number of simple tests on the different libraries, using
+different XML tree configurations: different tree sizes (T1-4), with or
+without attributes (-/A), with or without ASCII string or unicode text
+(-/S/U), and either against a tree or its serialised XML form (T/X).  In the
+result extracts cited below, T1 refers to a 3-level tree with many children at
+the third level, T2 is swapped around to have many children below the root
+element, T3 is a deep tree with few children at each level and T4 is a small
+tree, slightly broader than deep.  If repetition is involved, this usually
+means running the benchmark in a loop over all children of the tree root,
+otherwise, the operation is run on the root node (C/R).</p>
+<p>As an example, the character code <tt class="docutils literal"><span class="pre">(SATR</span> <span class="pre">T1)</span></tt> states that the benchmark was
+running for tree T1, with plain string text (S) and attributes (A).  It was
+run against the root element (R) in the tree structure of the data (T).</p>
+<p>Note that very small operations are repeated in integer loops to make them
+measurable.  It is therefore not always possible to compare the absolute
+timings of, say, a single access benchmark (which usually loops) and a &#8216;get
+all in one step&#8217; benchmark, which already takes enough time to be measurable
+and is therefore measured as is.  An example is the index access to a single
+child, which cannot be compared to the timings for <tt class="docutils literal"><span class="pre">getchildren()</span></tt>.  Take a
+look at the concrete benchmarks in the scripts to understand how the numbers
+compare.</p>
+</div>
+<div class="section" id="parsing-and-serialising">
+<h2><a class="toc-backref" href="#id4">Parsing and Serialising</a><a class="headerlink" href="#parsing-and-serialising" title="Permalink to this headline">¶</a></h2>
+<p>Serialisation is an area where lxml excels.  The reason is that it
+executes entirely at the C level, without any interaction with Python
+code.  The results are rather impressive, especially for UTF-8, which
+is native to libxml2.  While 20 to 40 times faster than (c)ElementTree
+1.2 (which is part of the standard library since Python 2.5), lxml is
+still more than 7 times as fast as the much improved ElementTree 1.3:</p>
+<div class="highlight-python"><pre>lxe: tostring_utf16  (S-TR T1)    9.8219 msec/pass
+cET: tostring_utf16  (S-TR T1)   88.7740 msec/pass
+ET : tostring_utf16  (S-TR T1)   99.6690 msec/pass
+
+lxe: tostring_utf16  (UATR T1)   10.3750 msec/pass
+cET: tostring_utf16  (UATR T1)   90.7581 msec/pass
+ET : tostring_utf16  (UATR T1)  102.3569 msec/pass
+
+lxe: tostring_utf16  (S-TR T2)   10.2711 msec/pass
+cET: tostring_utf16  (S-TR T2)   93.5340 msec/pass
+ET : tostring_utf16  (S-TR T2)  105.8500 msec/pass
+
+lxe: tostring_utf8   (S-TR T2)    7.1261 msec/pass
+cET: tostring_utf8   (S-TR T2)   93.4091 msec/pass
+ET : tostring_utf8   (S-TR T2)  105.5419 msec/pass
+
+lxe: tostring_utf8   (U-TR T3)    1.4591 msec/pass
+cET: tostring_utf8   (U-TR T3)   29.6180 msec/pass
+ET : tostring_utf8   (U-TR T3)   31.9080 msec/pass</pre>
+</div>
+<p>The same applies to plain text serialisation.  Note that the
+cElementTree version in the standard library does not currently
+support this, as it is a new feature in ET 1.3 and lxml.etree 2.0:</p>
+<div class="highlight-python"><pre>lxe: tostring_text_ascii     (S-TR T1)    1.9400 msec/pass
+cET: tostring_text_ascii     (S-TR T1)   41.6231 msec/pass
+ET : tostring_text_ascii     (S-TR T1)   52.7501 msec/pass
+
+lxe: tostring_text_ascii     (S-TR T3)    0.5331 msec/pass
+cET: tostring_text_ascii     (S-TR T3)   12.9712 msec/pass
+ET : tostring_text_ascii     (S-TR T3)   15.3620 msec/pass
+
+lxe: tostring_text_utf16     (S-TR T1)    3.2430 msec/pass
+cET: tostring_text_utf16     (S-TR T1)   41.9259 msec/pass
+ET : tostring_text_utf16     (S-TR T1)   53.4091 msec/pass
+
+lxe: tostring_text_utf16     (U-TR T1)    3.6838 msec/pass
+cET: tostring_text_utf16     (U-TR T1)   38.7859 msec/pass
+ET : tostring_text_utf16     (U-TR T1)   50.8440 msec/pass</pre>
+</div>
+<p>Unlike ElementTree, the <tt class="docutils literal"><span class="pre">tostring()</span></tt> function in lxml also supports
+serialisation to a Python unicode string object:</p>
+<div class="highlight-python"><pre>lxe: tostring_text_unicode   (S-TR T1)    2.4869 msec/pass
+lxe: tostring_text_unicode   (U-TR T1)    3.0370 msec/pass
+lxe: tostring_text_unicode   (S-TR T3)    0.6518 msec/pass
+lxe: tostring_text_unicode   (U-TR T3)    0.7300 msec/pass</pre>
+</div>
+<p>For parsing, lxml.etree and cElementTree compete for the medal.
+Depending on the input, either of the two can be faster.  The (c)ET
+libraries use a very thin layer on top of the expat parser, which is
+known to be very fast.  Here are some timings from the benchmarking
+suite:</p>
+<div class="highlight-python"><pre>lxe: parse_stringIO  (SAXR T1)   19.9990 msec/pass
+cET: parse_stringIO  (SAXR T1)    8.4970 msec/pass
+ET : parse_stringIO  (SAXR T1)  183.9781 msec/pass
+
+lxe: parse_stringIO  (S-XR T3)    2.0790 msec/pass
+cET: parse_stringIO  (S-XR T3)    2.7430 msec/pass
+ET : parse_stringIO  (S-XR T3)   47.4229 msec/pass
+
+lxe: parse_stringIO  (UAXR T3)   11.1630 msec/pass
+cET: parse_stringIO  (UAXR T3)   15.0940 msec/pass
+ET : parse_stringIO  (UAXR T3)   92.6890 msec/pass</pre>
+</div>
+<p>And another couple of timings <a class="reference external" href="http://svn.effbot.org/public/elementtree-1.3/benchmark.py">from a benchmark</a> that Fredrik Lundh
+<a class="reference external" href="http://effbot.org/zone/celementtree.htm#benchmarks">used to promote cElementTree</a>, comparing a number of different
+parsers.  First, parsing a 280KB XML file containing Shakespeare&#8217;s
+Hamlet:</p>
+<div class="highlight-python"><pre>lxml.etree.parse done in 0.005 seconds
+cElementTree.parse done in 0.012 seconds
+elementtree.ElementTree.parse done in 0.136 seconds
+elementtree.XMLTreeBuilder: 6636 nodes read in 0.243 seconds
+elementtree.SimpleXMLTreeBuilder: 6636 nodes read in 0.314 seconds
+elementtree.SgmlopXMLTreeBuilder: 6636 nodes read in 0.104 seconds
+minidom tree read in 0.137 seconds</pre>
+</div>
+<p>And a 3.4MB XML file containing the Old Testament:</p>
+<div class="highlight-python"><pre>lxml.etree.parse done in 0.031 seconds
+cElementTree.parse done in 0.039 seconds
+elementtree.ElementTree.parse done in 0.537 seconds
+elementtree.XMLTreeBuilder: 25317 nodes read in 0.577 seconds
+elementtree.SimpleXMLTreeBuilder: 25317 nodes read in 1.265 seconds
+elementtree.SgmlopXMLTreeBuilder: 25317 nodes read in 0.331 seconds
+minidom tree read in 0.643 seconds</pre>
+</div>
+<p>For plain parser performance, lxml.etree and cElementTree tend to stay
+rather close to each other, usually within a factor of two, with
+winners well distributed over both sides.  Similar timings can be
+observed for the <tt class="docutils literal"><span class="pre">iterparse()</span></tt> function:</p>
+<div class="highlight-python"><pre>lxe: iterparse_stringIO  (SAXR T1)   24.8621 msec/pass
+cET: iterparse_stringIO  (SAXR T1)   17.3280 msec/pass
+ET : iterparse_stringIO  (SAXR T1)  199.1270 msec/pass
+
+lxe: iterparse_stringIO  (UAXR T3)   12.3630 msec/pass
+cET: iterparse_stringIO  (UAXR T3)   17.5190 msec/pass
+ET : iterparse_stringIO  (UAXR T3)   95.8610 msec/pass</pre>
+</div>
+<p>However, if you benchmark the complete round-trip of a serialise-parse
+cycle, the numbers will look similar to these:</p>
+<div class="highlight-python"><pre>lxe: write_utf8_parse_stringIO  (S-TR T1)   27.5791 msec/pass
+cET: write_utf8_parse_stringIO  (S-TR T1)  158.9060 msec/pass
+ET : write_utf8_parse_stringIO  (S-TR T1)  347.8320 msec/pass
+
+lxe: write_utf8_parse_stringIO  (UATR T2)   34.4141 msec/pass
+cET: write_utf8_parse_stringIO  (UATR T2)  187.7041 msec/pass
+ET : write_utf8_parse_stringIO  (UATR T2)  388.9449 msec/pass
+
+lxe: write_utf8_parse_stringIO  (S-TR T3)    3.7861 msec/pass
+cET: write_utf8_parse_stringIO  (S-TR T3)   52.4600 msec/pass
+ET : write_utf8_parse_stringIO  (S-TR T3)  101.4550 msec/pass
+
+lxe: write_utf8_parse_stringIO  (SATR T4)    0.5522 msec/pass
+cET: write_utf8_parse_stringIO  (SATR T4)    3.8941 msec/pass
+ET : write_utf8_parse_stringIO  (SATR T4)    5.9431 msec/pass</pre>
+</div>
+<p>For applications that require a high parser throughput of large files,
+and that do little to no serialization, both cET and lxml.etree are a
+good choice.  The cET library is particularly fast for iterparse
+applications that extract small amounts of data or aggregate
+information from large XML data sets that do not fit into memory.  If
+it comes to round-trip performance, however, lxml is multiple times
+faster in total.  So, whenever the input documents are not
+considerably larger than the output, lxml is the clear winner.</p>
+<p>Again, note that the cET/ET timings are not based on the standard
+library versions in Python 2.6, but on vastly improved, unreleased
+developer versions.  Especially the serialiser in the standard library
+modules is several times slower than the benchmarked one, and at least
+20 times slower than the one in lxml.etree.</p>
+<p>Regarding HTML parsing, Ian Bicking has done some <a class="reference external" href="http://blog.ianbicking.org/2008/03/30/python-html-parser-performance/">benchmarking on
+lxml&#8217;s HTML parser</a>, comparing it to a number of other famous HTML
+parser tools for Python.  lxml wins this contest by quite a length.
+To give an idea, the numbers suggest that lxml.html can run a couple
+of parse-serialise cycles in the time that other tools need for
+parsing alone.  The comparison even shows some very favourable results
+regarding memory consumption.</p>
+<p>Liza Daly has written an article that presents a couple of tweaks to
+get the most out of lxml&#8217;s parser for very large XML documents.  She
+quite favourably positions <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> as a tool for
+<a class="reference external" href="http://www.ibm.com/developerworks/xml/library/x-hiperfparse/">high-performance XML parsing</a>.</p>
+<p>Finally, <a class="reference external" href="http://www.xml.com/">xml.com</a> has a couple of publications about XML parser
+performance.  Farwick and Hafner have written two interesting articles
+that compare the parser of libxml2 to some major Java based XML
+parsers.  One deals with <a class="reference external" href="http://www.xml.com/lpt/a/1702">event-driven parser performance</a>, the other
+one presents <a class="reference external" href="http://www.xml.com/lpt/a/1703">benchmark results comparing DOM parsers</a>.  Both
+comparisons suggest that libxml2&#8217;s parser performance is largely
+superiour to all commonly used Java parsers in almost all cases.  Note
+that the C parser benchmark results are based on <a class="reference external" href="http://xmlbench.sourceforge.net/">xmlbench</a>, which uses
+a simpler setup for libxml2 than lxml does.</p>
+</div>
+<div class="section" id="the-elementtree-api">
+<h2><a class="toc-backref" href="#id5">The ElementTree API</a><a class="headerlink" href="#the-elementtree-api" title="Permalink to this headline">¶</a></h2>
+<p>Since all three libraries implement the same API, their performance is
+easy to compare in this area.  A major disadvantage for lxml&#8217;s
+performance is the different tree model that underlies libxml2.  It
+allows lxml to provide parent pointers for elements and full XPath
+support, but also increases the overhead of tree building and
+restructuring.  This can be seen from the tree setup times of the
+benchmark (given in seconds):</p>
+<div class="highlight-python"><pre>lxe:       --     S-     U-     -A     SA     UA
+     T1: 0.0407 0.0470 0.0506 0.0396 0.0464 0.0504
+     T2: 0.0480 0.0557 0.0584 0.0520 0.0608 0.0627
+     T3: 0.0118 0.0132 0.0136 0.0319 0.0322 0.0319
+     T4: 0.0002 0.0002 0.0002 0.0006 0.0006 0.0006
+cET:       --     S-     U-     -A     SA     UA
+     T1: 0.0045 0.0043 0.0043 0.0045 0.0043 0.0043
+     T2: 0.0068 0.0069 0.0066 0.0078 0.0070 0.0069
+     T3: 0.0040 0.0040 0.0040 0.0050 0.0052 0.0067
+     T4: 0.0000 0.0000 0.0000 0.0001 0.0001 0.0001
+ET :       --     S-     U-     -A     SA     UA
+     T1: 0.0479 0.1051 0.1279 0.0487 0.1597 0.0484
+     T2: 0.1995 0.0553 0.2297 0.2550 0.0550 0.2881
+     T3: 0.0177 0.0169 0.0174 0.0185 0.2895 0.0189
+     T4: 0.0003 0.0002 0.0003 0.0003 0.0014 0.0003</pre>
+</div>
+<p>While lxml is still a lot faster than ET in most cases, cET can be
+several times faster than lxml here.  One of the reasons is that lxml
+must encode incoming string data and tag names into UTF-8, and
+additionally discard the created Python elements after their use, when
+they are no longer referenced.  ET and cET represent the tree itself
+through these objects, which reduces the overhead in creating them.</p>
+<div class="section" id="child-access">
+<h3><a class="toc-backref" href="#id6">Child access</a><a class="headerlink" href="#child-access" title="Permalink to this headline">¶</a></h3>
+<p>The same reason makes operations like collecting children as in
+<tt class="docutils literal"><span class="pre">list(element)</span></tt> more costly in lxml.  Where ET and cET can quickly
+create a shallow copy of their list of children, lxml has to create a
+Python object for each child and collect them in a list:</p>
+<div class="highlight-python"><pre>lxe: root_list_children        (--TR T1)    0.0079 msec/pass
+cET: root_list_children        (--TR T1)    0.0029 msec/pass
+ET : root_list_children        (--TR T1)    0.0100 msec/pass
+
+lxe: root_list_children        (--TR T2)    0.0849 msec/pass
+cET: root_list_children        (--TR T2)    0.0110 msec/pass
+ET : root_list_children        (--TR T2)    0.1481 msec/pass</pre>
+</div>
+<p>This handicap is also visible when accessing single children:</p>
+<div class="highlight-python"><pre>lxe: first_child               (--TR T2)    0.0699 msec/pass
+cET: first_child               (--TR T2)    0.0608 msec/pass
+ET : first_child               (--TR T2)    0.3419 msec/pass
+
+lxe: last_child                (--TR T1)    0.0710 msec/pass
+cET: last_child                (--TR T1)    0.0648 msec/pass
+ET : last_child                (--TR T1)    0.3309 msec/pass</pre>
+</div>
+<p>... unless you also add the time to find a child index in a bigger
+list.  ET and cET use Python lists here, which are based on arrays.
+The data structure used by libxml2 is a linked tree, and thus, a
+linked list of children:</p>
+<div class="highlight-python"><pre>lxe: middle_child              (--TR T1)    0.0989 msec/pass
+cET: middle_child              (--TR T1)    0.0598 msec/pass
+ET : middle_child              (--TR T1)    0.3390 msec/pass
+
+lxe: middle_child              (--TR T2)    2.7599 msec/pass
+cET: middle_child              (--TR T2)    0.0620 msec/pass
+ET : middle_child              (--TR T2)    0.3610 msec/pass</pre>
+</div>
+</div>
+<div class="section" id="element-creation">
+<h3><a class="toc-backref" href="#id7">Element creation</a><a class="headerlink" href="#element-creation" title="Permalink to this headline">¶</a></h3>
+<p>As opposed to ET, libxml2 has a notion of documents that each element must be
+in.  This results in a major performance difference for creating independent
+Elements that end up in independently created documents:</p>
+<div class="highlight-python"><pre>lxe: create_elements           (--TC T2)    1.1640 msec/pass
+cET: create_elements           (--TC T2)    0.0808 msec/pass
+ET : create_elements           (--TC T2)    0.5801 msec/pass</pre>
+</div>
+<p>Therefore, it is always preferable to create Elements for the document they
+are supposed to end up in, either as SubElements of an Element or using the
+explicit <tt class="docutils literal"><span class="pre">Element.makeelement()</span></tt> call:</p>
+<div class="highlight-python"><pre>lxe: makeelement               (--TC T2)    1.2751 msec/pass
+cET: makeelement               (--TC T2)    0.1469 msec/pass
+ET : makeelement               (--TC T2)    0.7451 msec/pass
+
+lxe: create_subelements        (--TC T2)    1.1470 msec/pass
+cET: create_subelements        (--TC T2)    0.1080 msec/pass
+ET : create_subelements        (--TC T2)    1.4369 msec/pass</pre>
+</div>
+<p>So, if the main performance bottleneck of an application is creating large XML
+trees in memory through calls to Element and SubElement, cET is the best
+choice.  Note, however, that the serialisation performance may even out this
+advantage, especially for smaller trees and trees with many attributes.</p>
+</div>
+<div class="section" id="merging-different-sources">
+<h3><a class="toc-backref" href="#id8">Merging different sources</a><a class="headerlink" href="#merging-different-sources" title="Permalink to this headline">¶</a></h3>
+<p>A critical action for lxml is moving elements between document contexts.  It
+requires lxml to do recursive adaptations throughout the moved tree structure.</p>
+<p>The following benchmark appends all root children of the second tree to the
+root of the first tree:</p>
+<div class="highlight-python"><pre>lxe: append_from_document      (--TR T1,T2)    2.0740 msec/pass
+cET: append_from_document      (--TR T1,T2)    0.1271 msec/pass
+ET : append_from_document      (--TR T1,T2)    0.4020 msec/pass
+
+lxe: append_from_document      (--TR T3,T4)    0.0229 msec/pass
+cET: append_from_document      (--TR T3,T4)    0.0088 msec/pass
+ET : append_from_document      (--TR T3,T4)    0.0291 msec/pass</pre>
+</div>
+<p>Although these are fairly small numbers compared to parsing, this easily shows
+the different performance classes for lxml and (c)ET.  Where the latter do not
+have to care about parent pointers and tree structures, lxml has to deep
+traverse the appended tree.  The performance difference therefore increases
+with the size of the tree that is moved.</p>
+<p>This difference is not always as visible, but applies to most parts of the
+API, like inserting newly created elements:</p>
+<div class="highlight-python"><pre>lxe: insert_from_document       (--TR T1,T2)    7.2598 msec/pass
+cET: insert_from_document       (--TR T1,T2)    0.1578 msec/pass
+ET : insert_from_document       (--TR T1,T2)    0.5150 msec/pass</pre>
+</div>
+<p>or replacing the child slice by a newly created element:</p>
+<div class="highlight-python"><pre>lxe: replace_children_element   (--TC T1)    0.1149 msec/pass
+cET: replace_children_element   (--TC T1)    0.0110 msec/pass
+ET : replace_children_element   (--TC T1)    0.0558 msec/pass</pre>
+</div>
+<p>as opposed to replacing the slice with an existing element from the
+same document:</p>
+<div class="highlight-python"><pre>lxe: replace_children           (--TC T1)    0.0091 msec/pass
+cET: replace_children           (--TC T1)    0.0060 msec/pass
+ET : replace_children           (--TC T1)    0.0188 msec/pass</pre>
+</div>
+<p>While these numbers are too small to provide a major performance
+impact in practice, you should keep this difference in mind when you
+merge very large trees.</p>
+</div>
+<div class="section" id="deepcopy">
+<h3><a class="toc-backref" href="#id9">deepcopy</a><a class="headerlink" href="#deepcopy" title="Permalink to this headline">¶</a></h3>
+<p>Deep copying a tree is fast in lxml:</p>
+<div class="highlight-python"><pre>lxe: deepcopy_all              (--TR T1)    5.0900 msec/pass
+cET: deepcopy_all              (--TR T1)   57.9181 msec/pass
+ET : deepcopy_all              (--TR T1)  499.1000 msec/pass
+
+lxe: deepcopy_all              (-ATR T2)    6.3980 msec/pass
+cET: deepcopy_all              (-ATR T2)   65.6390 msec/pass
+ET : deepcopy_all              (-ATR T2)  526.5379 msec/pass
+
+lxe: deepcopy_all              (S-TR T3)    1.4491 msec/pass
+cET: deepcopy_all              (S-TR T3)   14.7018 msec/pass
+ET : deepcopy_all              (S-TR T3)  123.5120 msec/pass</pre>
+</div>
+<p>So, for example, if you have a database-like scenario where you parse in a
+large tree and then search and copy independent subtrees from it for further
+processing, lxml is by far the best choice here.</p>
+</div>
+<div class="section" id="tree-traversal">
+<h3><a class="toc-backref" href="#id10">Tree traversal</a><a class="headerlink" href="#tree-traversal" title="Permalink to this headline">¶</a></h3>
+<p>Another area where lxml is very fast is iteration for tree traversal.  If your
+algorithms can benefit from step-by-step traversal of the XML tree and
+especially if few elements are of interest or the target element tag name is
+known, lxml is a good choice:</p>
+<div class="highlight-python"><pre>lxe: getiterator_all      (--TR T1)    1.6890 msec/pass
+cET: getiterator_all      (--TR T1)   23.8621 msec/pass
+ET : getiterator_all      (--TR T1)   11.1070 msec/pass
+
+lxe: getiterator_islice   (--TR T2)    0.0188 msec/pass
+cET: getiterator_islice   (--TR T2)    0.1841 msec/pass
+ET : getiterator_islice   (--TR T2)   11.7059 msec/pass
+
+lxe: getiterator_tag      (--TR T2)    0.0119 msec/pass
+cET: getiterator_tag      (--TR T2)    0.3560 msec/pass
+ET : getiterator_tag      (--TR T2)   10.6668 msec/pass
+
+lxe: getiterator_tag_all  (--TR T2)    0.2429 msec/pass
+cET: getiterator_tag_all  (--TR T2)   20.3710 msec/pass
+ET : getiterator_tag_all  (--TR T2)   10.6280 msec/pass</pre>
+</div>
+<p>This translates directly into similar timings for <tt class="docutils literal"><span class="pre">Element.findall()</span></tt>:</p>
+<div class="highlight-python"><pre>lxe: findall              (--TR T2)    2.4588 msec/pass
+cET: findall              (--TR T2)   24.1358 msec/pass
+ET : findall              (--TR T2)   13.0949 msec/pass
+
+lxe: findall              (--TR T3)    0.5939 msec/pass
+cET: findall              (--TR T3)    6.9802 msec/pass
+ET : findall              (--TR T3)    3.8991 msec/pass
+
+lxe: findall_tag          (--TR T2)    0.2789 msec/pass
+cET: findall_tag          (--TR T2)   20.5719 msec/pass
+ET : findall_tag          (--TR T2)   10.8678 msec/pass
+
+lxe: findall_tag          (--TR T3)    0.1638 msec/pass
+cET: findall_tag          (--TR T3)    5.0790 msec/pass
+ET : findall_tag          (--TR T3)    2.5120 msec/pass</pre>
+</div>
+<p>Note that all three libraries currently use the same Python
+implementation for <tt class="docutils literal"><span class="pre">.findall()</span></tt>, except for their native tree
+iterator (<tt class="docutils literal"><span class="pre">element.iter()</span></tt>).</p>
+</div>
+</div>
+<div class="section" id="xpath">
+<h2><a class="toc-backref" href="#id11">XPath</a><a class="headerlink" href="#xpath" title="Permalink to this headline">¶</a></h2>
+<p>The following timings are based on the benchmark script <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/benchmark/bench_xpath.py">bench_xpath.py</a>.</p>
+<p>This part of lxml does not have an equivalent in ElementTree.  However, lxml
+provides more than one way of accessing it and you should take care which part
+of the lxml API you use.  The most straight forward way is to call the
+<tt class="docutils literal"><span class="pre">xpath()</span></tt> method on an Element or ElementTree:</p>
+<div class="highlight-python"><pre>lxe: xpath_method         (--TC T1)    0.7598 msec/pass
+lxe: xpath_method         (--TC T2)   12.6798 msec/pass
+lxe: xpath_method         (--TC T3)    0.0758 msec/pass
+lxe: xpath_method         (--TC T4)    0.6182 msec/pass</pre>
+</div>
+<p>This is well suited for testing and when the XPath expressions are as diverse
+as the trees they are called on.  However, if you have a single XPath
+expression that you want to apply to a larger number of different elements,
+the <tt class="docutils literal"><span class="pre">XPath</span></tt> class is the most efficient way to do it:</p>
+<div class="highlight-python"><pre>lxe: xpath_class          (--TC T1)    0.2189 msec/pass
+lxe: xpath_class          (--TC T2)    1.4110 msec/pass
+lxe: xpath_class          (--TC T3)    0.0319 msec/pass
+lxe: xpath_class          (--TC T4)    0.0880 msec/pass</pre>
+</div>
+<p>Note that this still allows you to use variables in the expression, so you can
+parse it once and then adapt it through variables at call time.  In other
+cases, where you have a fixed Element or ElementTree and want to run different
+expressions on it, you should consider the <tt class="docutils literal"><span class="pre">XPathEvaluator</span></tt>:</p>
+<div class="highlight-python"><pre>lxe: xpath_element        (--TR T1)    0.1669 msec/pass
+lxe: xpath_element        (--TR T2)    6.9060 msec/pass
+lxe: xpath_element        (--TR T3)    0.0451 msec/pass
+lxe: xpath_element        (--TR T4)    0.1681 msec/pass</pre>
+</div>
+<p>While it looks slightly slower, creating an XPath object for each of the
+expressions generates a much higher overhead here:</p>
+<div class="highlight-python"><pre>lxe: xpath_class_repeat   (--TC T1)    0.7451 msec/pass
+lxe: xpath_class_repeat   (--TC T2)   12.2290 msec/pass
+lxe: xpath_class_repeat   (--TC T3)    0.0730 msec/pass
+lxe: xpath_class_repeat   (--TC T4)    0.5970 msec/pass</pre>
+</div>
+</div>
+<div class="section" id="a-longer-example">
+<h2><a class="toc-backref" href="#id12">A longer example</a><a class="headerlink" href="#a-longer-example" title="Permalink to this headline">¶</a></h2>
+<p>... based on lxml 1.3.</p>
+<p>A while ago, Uche Ogbuji posted a <a class="reference external" href="http://www.onlamp.com/pub/wlg/6291">benchmark proposal</a> that would
+read in a 3MB XML version of the <a class="reference external" href="http://www.ibiblio.org/bosak/xml/eg/religion.2.00.xml.zip">Old Testament</a> of the Bible and
+look for the word <em>begat</em> in all verses.  Apparently, it is contained
+in 120 out of almost 24000 verses.  This is easy to implement in
+ElementTree using <tt class="docutils literal"><span class="pre">findall()</span></tt>.  However, the fastest and most memory
+friendly way to do this is obviously <tt class="docutils literal"><span class="pre">iterparse()</span></tt>, as most of the
+data is not of any interest.</p>
+<p>Now, Uche&#8217;s original proposal was more or less the following:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">bench_ET</span><span class="p">():</span>
+    <span class="n">tree</span> <span class="o">=</span> <span class="n">ElementTree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s">&quot;ot.xml&quot;</span><span class="p">)</span>
+    <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">tree</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&quot;//v&quot;</span><span class="p">):</span>
+        <span class="n">text</span> <span class="o">=</span> <span class="n">v</span><span class="o">.</span><span class="n">text</span>
+        <span class="k">if</span> <span class="s">&#39;begat&#39;</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span>
+            <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
+    <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>which takes about one second on my machine today.  The faster <tt class="docutils literal"><span class="pre">iterparse()</span></tt>
+variant looks like this:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">bench_ET_iterparse</span><span class="p">():</span>
+    <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="k">for</span> <span class="n">event</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">ElementTree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="s">&quot;ot.xml&quot;</span><span class="p">):</span>
+        <span class="k">if</span> <span class="n">v</span><span class="o">.</span><span class="n">tag</span> <span class="o">==</span> <span class="s">&#39;v&#39;</span><span class="p">:</span>
+            <span class="n">text</span> <span class="o">=</span> <span class="n">v</span><span class="o">.</span><span class="n">text</span>
+            <span class="k">if</span> <span class="s">&#39;begat&#39;</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span>
+                <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
+        <span class="n">v</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+    <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>The improvement is about 10%.  At the time I first tried (early 2006), lxml
+didn&#8217;t have <tt class="docutils literal"><span class="pre">iterparse()</span></tt> support, but the <tt class="docutils literal"><span class="pre">findall()</span></tt> variant was already
+faster than ElementTree.  This changes immediately when you switch to
+cElementTree.  The latter only needs 0.17 seconds to do the trick today and
+only some impressive 0.10 seconds when running the iterparse version.  And
+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"><span class="pre">v.clear()</span></tt>, it is
+even a little faster (which isn&#8217;t the case for cElementTree).</p>
+<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="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">bench_lxml_xpath_all</span><span class="p">():</span>
+    <span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s">&quot;ot.xml&quot;</span><span class="p">)</span>
+    <span class="n">result</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;//v[contains(., &#39;begat&#39;)]/text()&quot;</span><span class="p">)</span>
+    <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This runs in about 0.13 seconds and is about the shortest possible
+implementation (in lines of Python code) that I could come up with.  Now, this
+is already a rather complex XPath expression compared to the simple &#8220;//v&#8221;
+ElementPath expression we started with.  Since this is also valid XPath, let&#8217;s
+try this instead:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">bench_lxml_xpath</span><span class="p">():</span>
+    <span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s">&quot;ot.xml&quot;</span><span class="p">)</span>
+    <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">tree</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;//v&quot;</span><span class="p">):</span>
+        <span class="n">text</span> <span class="o">=</span> <span class="n">v</span><span class="o">.</span><span class="n">text</span>
+        <span class="k">if</span> <span class="s">&#39;begat&#39;</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span>
+            <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
+    <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This gets us down to 0.12 seconds, thus showing that a generic XPath
+evaluation engine cannot always compete with a simpler, tailored solution.
+However, since this is not much different from the original findall variant,
+we can remove the complexity of the XPath call completely and just go with
+what we had in the beginning.  Under lxml, this runs in the same 0.12 seconds.</p>
+<p>But there is one thing left to try.  We can replace the simple ElementPath
+expression with a native tree iterator:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="k">def</span> <span class="nf">bench_lxml_getiterator</span><span class="p">():</span>
+    <span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s">&quot;ot.xml&quot;</span><span class="p">)</span>
+    <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">tree</span><span class="o">.</span><span class="n">getiterator</span><span class="p">(</span><span class="s">&quot;v&quot;</span><span class="p">):</span>
+        <span class="n">text</span> <span class="o">=</span> <span class="n">v</span><span class="o">.</span><span class="n">text</span>
+        <span class="k">if</span> <span class="s">&#39;begat&#39;</span> <span class="ow">in</span> <span class="n">text</span><span class="p">:</span>
+            <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
+    <span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This implements the same thing, just without the overhead of parsing and
+evaluating a path expression.  And this makes it another bit faster, down to
+0.11 seconds.  For comparison, cElementTree runs this version in 0.17 seconds.</p>
+<p>So, what have we learned?</p>
+<ul class="simple">
+<li>Python code is not slow.  The pure XPath solution was not even as fast as
+the first shot Python implementation.  In general, a few more lines in
+Python make things more readable, which is much more important than the last
+5% of performance.</li>
+<li>It&#8217;s important to know the available options - and it&#8217;s worth starting with
+the most simple one.  In this case, a programmer would then probably have
+started with <tt class="docutils literal"><span class="pre">getiterator(&quot;v&quot;)</span></tt> or <tt class="docutils literal"><span class="pre">iterparse()</span></tt>.  Either of them would
+already have been the most efficient, depending on which library is used.</li>
+<li>It&#8217;s important to know your tool.  lxml and cElementTree are both very fast
+libraries, but they do not have the same performance characteristics.  The
+fastest solution in one library can be comparatively slow in the other.  If
+you optimise, optimise for the specific target platform.</li>
+<li>It&#8217;s not always worth optimising.  After all that hassle we got from 0.12
+seconds for the initial implementation to 0.11 seconds.  Switching over to
+cElementTree and writing an <tt class="docutils literal"><span class="pre">iterparse()</span></tt> based version would have given
+us 0.10 seconds - not a big difference for 3MB of XML.</li>
+<li>Take care what operation is really dominating in your use case.  If we split
+up the operations, we can see that lxml is slightly slower than cElementTree
+on <tt class="docutils literal"><span class="pre">parse()</span></tt> (both about 0.06 seconds), but more visibly slower on
+<tt class="docutils literal"><span class="pre">iterparse()</span></tt>: 0.07 versus 0.10 seconds.  However, tree iteration in lxml
+is increadibly fast, so it can be better to parse the whole tree and then
+iterate over it rather than using <tt class="docutils literal"><span class="pre">iterparse()</span></tt> to do both in one step.
+Or, you can just wait for the lxml developers to optimise iterparse in one
+of the next releases...</li>
+</ul>
+</div>
+<div class="section" id="lxml-objectify">
+<h2><a class="toc-backref" href="#id13">lxml.objectify</a><a class="headerlink" href="#lxml-objectify" title="Permalink to this headline">¶</a></h2>
+<p>The following timings are based on the benchmark script <a class="reference external" href="http://codespeak.net/svn/lxml/trunk/benchmark/bench_objectify.py">bench_objectify.py</a>.</p>
+<p>Objectify is a data-binding API for XML based on lxml.etree, that was added in
+version 1.1.  It uses standard Python attribute access to traverse the XML
+tree.  It also features ObjectPath, a fast path language based on the same
+meme.</p>
+<p>Just like lxml.etree, lxml.objectify creates Python representations of
+elements on the fly.  To save memory, the normal Python garbage collection
+mechanisms will discard them when their last reference is gone.  In cases
+where deeply nested elements are frequently accessed through the objectify
+API, the create-discard cycles can become a bottleneck, as elements have to be
+instantiated over and over again.</p>
+<div class="section" id="objectpath">
+<h3><a class="toc-backref" href="#id14">ObjectPath</a><a class="headerlink" href="#objectpath" title="Permalink to this headline">¶</a></h3>
+<p>ObjectPath can be used to speed up the access to elements that are deep in the
+tree.  It avoids step-by-step Python element instantiations along the path,
+which can substantially improve the access time:</p>
+<div class="highlight-python"><pre>lxe: attribute                  (--TR T1)    4.8928 msec/pass
+lxe: attribute                  (--TR T2)   25.5480 msec/pass
+lxe: attribute                  (--TR T4)    4.6349 msec/pass
+
+lxe: objectpath                 (--TR T1)    1.4842 msec/pass
+lxe: objectpath                 (--TR T2)   21.1990 msec/pass
+lxe: objectpath                 (--TR T4)    1.4892 msec/pass
+
+lxe: attributes_deep            (--TR T1)   11.9710 msec/pass
+lxe: attributes_deep            (--TR T2)   32.4290 msec/pass
+lxe: attributes_deep            (--TR T4)   11.4839 msec/pass
+
+lxe: objectpath_deep            (--TR T1)    4.8139 msec/pass
+lxe: objectpath_deep            (--TR T2)   24.6511 msec/pass
+lxe: objectpath_deep            (--TR T4)    4.7588 msec/pass</pre>
+</div>
+<p>Note, however, that parsing ObjectPath expressions is not for free either, so
+this is most effective for frequently accessing the same element.</p>
+</div>
+<div class="section" id="caching-elements">
+<h3><a class="toc-backref" href="#id15">Caching Elements</a><a class="headerlink" href="#caching-elements" title="Permalink to this headline">¶</a></h3>
+<p>A way to improve the normal attribute access time is static instantiation of
+the Python objects, thus trading memory for speed.  Just create a cache
+dictionary and run:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">cache</span><span class="p">[</span><span class="n">root</span><span class="p">]</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">())</span>
+</pre></div>
+</div>
+<p>after parsing and:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="k">del</span> <span class="n">cache</span><span class="p">[</span><span class="n">root</span><span class="p">]</span>
+</pre></div>
+</div>
+<p>when you are done with the tree.  This will keep the Python element
+representations of all elements alive and thus avoid the overhead of repeated
+Python object creation.  You can also consider using filters or generator
+expressions to be more selective.  By choosing the right trees (or even
+subtrees and elements) to cache, you can trade memory usage against access
+speed:</p>
+<div class="highlight-python"><pre>lxe: attribute_cached           (--TR T1)    3.8228 msec/pass
+lxe: attribute_cached           (--TR T2)   23.7138 msec/pass
+lxe: attribute_cached           (--TR T4)    3.5269 msec/pass
+
+lxe: attributes_deep_cached     (--TR T1)    4.6771 msec/pass
+lxe: attributes_deep_cached     (--TR T2)   24.8699 msec/pass
+lxe: attributes_deep_cached     (--TR T4)    4.3321 msec/pass
+
+lxe: objectpath_deep_cached     (--TR T1)    1.1430 msec/pass
+lxe: objectpath_deep_cached     (--TR T2)   19.7470 msec/pass
+lxe: objectpath_deep_cached     (--TR T4)    1.1740 msec/pass</pre>
+</div>
+<p>Things to note: you cannot currently use <tt class="docutils literal"><span class="pre">weakref.WeakKeyDictionary</span></tt> objects
+for this as lxml&#8217;s element objects do not support weak references (which are
+costly in terms of memory).  Also note that new element objects that you add
+to these trees will not turn up in the cache automatically and will therefore
+still be garbage collected when all their Python references are gone, so this
+is most effective for largely immutable trees.  You should consider using a
+set instead of a list in this case and add new elements by hand.</p>
+</div>
+<div class="section" id="further-optimisations">
+<h3><a class="toc-backref" href="#id16">Further optimisations</a><a class="headerlink" href="#further-optimisations" title="Permalink to this headline">¶</a></h3>
+<p>Here are some more things to try if optimisation is required:</p>
+<ul class="simple">
+<li>A lot of time is usually spent in tree traversal to find the addressed
+elements in the tree.  If you often work in subtrees, do what you would also
+do with deep Python objects: assign the parent of the subtree to a variable
+or pass it into functions instead of starting at the root.  This allows
+accessing its descendents more directly.</li>
+<li>Try assigning data values directly to attributes instead of passing them
+through DataElement.</li>
+<li>If you use custom data types that are costly to parse, try running
+<tt class="docutils literal"><span class="pre">objectify.annotate()</span></tt> over read-only trees to speed up the attribute type
+inference on read access.</li>
+</ul>
+<p>Note that none of these measures is guaranteed to speed up your application.
+As usual, you should prefer readable code over premature optimisations and
+profile your expected use cases before bothering to apply optimisations at
+random.</p>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Benchmarks and Speed</a><ul>
+<li><a class="reference internal" href="#general-notes">General notes</a></li>
+<li><a class="reference internal" href="#how-to-read-the-timings">How to read the timings</a></li>
+<li><a class="reference internal" href="#parsing-and-serialising">Parsing and Serialising</a></li>
+<li><a class="reference internal" href="#the-elementtree-api">The ElementTree API</a><ul>
+<li><a class="reference internal" href="#child-access">Child access</a></li>
+<li><a class="reference internal" href="#element-creation">Element creation</a></li>
+<li><a class="reference internal" href="#merging-different-sources">Merging different sources</a></li>
+<li><a class="reference internal" href="#deepcopy">deepcopy</a></li>
+<li><a class="reference internal" href="#tree-traversal">Tree traversal</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#xpath">XPath</a></li>
+<li><a class="reference internal" href="#a-longer-example">A longer example</a></li>
+<li><a class="reference internal" href="#lxml-objectify">lxml.objectify</a><ul>
+<li><a class="reference internal" href="#objectpath">ObjectPath</a></li>
+<li><a class="reference internal" href="#caching-elements">Caching Elements</a></li>
+<li><a class="reference internal" href="#further-optimisations">Further optimisations</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/performance.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/resolvers.html b/doc/sphinx/resolvers.html
new file mode 100644 (file)
index 0000000..53f51a8
--- /dev/null
@@ -0,0 +1,339 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Document loading and URL resolving &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="document-loading-and-url-resolving">
+<h1><a class="toc-backref" href="#id2">Document loading and URL resolving</a><a class="headerlink" href="#document-loading-and-url-resolving" title="Permalink to this headline">¶</a></h1>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#document-loading-and-url-resolving" id="id2">Document loading and URL resolving</a><ul>
+<li><a class="reference internal" href="#xml-catalogs" id="id3">XML Catalogs</a></li>
+<li><a class="reference internal" href="#uri-resolvers" id="id4">URI Resolvers</a></li>
+<li><a class="reference internal" href="#document-loading-in-context" id="id5">Document loading in context</a></li>
+<li><a class="reference internal" href="#i-o-access-control-in-xslt" id="id6">I/O access control in XSLT</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<p>The normal way to load external entities (such as DTDs) is by using
+XML catalogs.  Lxml also has support for user provided document
+loaders in both the parsers and XSL transformations.  These so-called
+resolvers are subclasses of the etree.Resolver class.</p>
+<div class="section" id="xml-catalogs">
+<h2><a class="toc-backref" href="#id3">XML Catalogs</a><a class="headerlink" href="#xml-catalogs" title="Permalink to this headline">¶</a></h2>
+<p>When loading an external entity for a document, e.g. a DTD, the parser
+is normally configured to prevent network access (see the
+<tt class="docutils literal"><span class="pre">no_network</span></tt> parser option).  Instead, it will try to load the
+entity from their local file system path or, in the most common case
+that the entity uses a network URL as reference, from a local XML
+catalog.</p>
+<p><a class="reference external" href="http://www.oasis-open.org/committees/entity/spec.html">XML catalogs</a> are the preferred and agreed-on mechanism to load
+external entities from XML processors.  Most tools will use them, so
+it is worth configuring them properly on a system.  Many Linux
+installations use them by default, but on other systems they may need
+to get enabled manually.  The <a class="reference external" href="http://xmlsoft.org/">libxml2 site</a> has some documentation
+on <a class="reference external" href="http://xmlsoft.org/catalog.html">how to set up XML catalogs</a></p>
+</div>
+<div class="section" id="uri-resolvers">
+<h2><a class="toc-backref" href="#id4">URI Resolvers</a><a class="headerlink" href="#uri-resolvers" title="Permalink to this headline">¶</a></h2>
+<p>Here is an example of a custom resolver:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">DTDResolver</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">Resolver</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">resolve</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="nb">id</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;Resolving URL &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">url</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">resolve_string</span><span class="p">(</span>
+<span class="gp">... </span>            <span class="s">&#39;&lt;!ENTITY myentity &quot;[resolved text: </span><span class="si">%s</span><span class="s">]&quot;&gt;&#39;</span> <span class="o">%</span> <span class="n">url</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This defines a resolver that always returns a dynamically generated DTD
+fragment defining an entity.  The <tt class="docutils literal"><span class="pre">url</span></tt> argument passes the system URL of
+the requested document, the <tt class="docutils literal"><span class="pre">id</span></tt> argument is the public ID.  Note that any
+of these may be None.  The context object is not normally used by client code.</p>
+<p>Resolving is based on the methods of the Resolver object that build
+internal representations of the result document.  The following
+methods exist:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">resolve_string</span></tt> takes a parsable string as result document</li>
+<li><tt class="docutils literal"><span class="pre">resolve_filename</span></tt> takes a filename</li>
+<li><tt class="docutils literal"><span class="pre">resolve_file</span></tt> takes an open file-like object that has at least a read() method</li>
+<li><tt class="docutils literal"><span class="pre">resolve_empty</span></tt> resolves into an empty document</li>
+</ul>
+<p>The <tt class="docutils literal"><span class="pre">resolve()</span></tt> method may choose to return None, in which case the next
+registered resolver (or the default resolver) is consulted.  Resolving always
+terminates if <tt class="docutils literal"><span class="pre">resolve()</span></tt> returns the result of any of the above
+<tt class="docutils literal"><span class="pre">resolve_*()</span></tt> methods.</p>
+<p>Resolvers are registered local to a parser:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">load_dtd</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">resolvers</span><span class="o">.</span><span class="n">add</span><span class="p">(</span> <span class="n">DTDResolver</span><span class="p">()</span> <span class="p">)</span>
+</pre></div>
+</div>
+<p>Note that we instantiate a parser that loads the DTD.  This is not done by the
+default parser, which does no validation.  When we use this parser to parse a
+document that requires resolving a URL, it will call our custom resolver:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml</span> <span class="o">=</span> <span class="s">&#39;&lt;!DOCTYPE doc SYSTEM &quot;MissingDTD.dtd&quot;&gt;&lt;doc&gt;&amp;myentity;&lt;/doc&gt;&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml</span><span class="p">),</span> <span class="n">parser</span><span class="p">)</span>
+<span class="go">Resolving URL &#39;MissingDTD.dtd&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="go">[resolved text: MissingDTD.dtd]</span>
+</pre></div>
+</div>
+<p>The entity in the document was correctly resolved by the generated DTD
+fragment.</p>
+</div>
+<div class="section" id="document-loading-in-context">
+<h2><a class="toc-backref" href="#id5">Document loading in context</a><a class="headerlink" href="#document-loading-in-context" title="Permalink to this headline">¶</a></h2>
+<p>XML documents memorise their initial parser (and its resolvers) during their
+life-time.  This means that a lookup process related to a document will use
+the resolvers of the document&#8217;s parser.  We can demonstrate this with a
+resolver that only responds to a specific prefix:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">PrefixResolver</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">Resolver</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span> <span class="o">=</span> <span class="n">prefix</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">result_xml</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">             &lt;xsl:stylesheet</span>
+<span class="gp">... </span><span class="s">                    xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;</span>
+<span class="gp">... </span><span class="s">               &lt;test xmlns=&quot;testNS&quot;&gt;</span><span class="si">%s</span><span class="s">-TEST&lt;/test&gt;</span>
+<span class="gp">... </span><span class="s">             &lt;/xsl:stylesheet&gt;</span>
+<span class="gp">... </span><span class="s">             &#39;&#39;&#39;</span> <span class="o">%</span> <span class="n">prefix</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">resolve</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">pubid</span><span class="p">,</span> <span class="n">context</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">if</span> <span class="n">url</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="p">):</span>
+<span class="gp">... </span>            <span class="k">print</span><span class="p">(</span><span class="s">&quot;Resolved url </span><span class="si">%s</span><span class="s"> as prefix </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">prefix</span><span class="p">))</span>
+<span class="gp">... </span>            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">resolve_string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">result_xml</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>We demonstrate this in XSLT and use the following stylesheet as an example:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml_text</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;xsl:stylesheet version=&quot;1.0&quot;</span>
+<span class="gp">... </span><span class="s">   xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;xsl:include href=&quot;honk:test&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;xsl:template match=&quot;/&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;test&gt;</span>
+<span class="gp">... </span><span class="s">      &lt;xsl:value-of select=&quot;document(&#39;hoi:test&#39;)/*/*/text()&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/test&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/xsl:template&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/xsl:stylesheet&gt;</span>
+<span class="gp">... </span><span class="s">&quot;&quot;&quot;</span>
+</pre></div>
+</div>
+<p>Note that it needs to resolve two URIs: <tt class="docutils literal"><span class="pre">honk:test</span></tt> when compiling the XSLT
+document (i.e. when resolving <tt class="docutils literal"><span class="pre">xsl:import</span></tt> and <tt class="docutils literal"><span class="pre">xsl:include</span></tt> elements) and
+<tt class="docutils literal"><span class="pre">hoi:test</span></tt> at transformation time, when calls to the <tt class="docutils literal"><span class="pre">document</span></tt> function
+are resolved.  If we now register different resolvers with two different
+parsers, we can parse our document twice in different resolver contexts:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">hoi_parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">normal_doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml_text</span><span class="p">),</span> <span class="n">hoi_parser</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">hoi_parser</span><span class="o">.</span><span class="n">resolvers</span><span class="o">.</span><span class="n">add</span><span class="p">(</span> <span class="n">PrefixResolver</span><span class="p">(</span><span class="s">&quot;hoi&quot;</span><span class="p">)</span> <span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">hoi_doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml_text</span><span class="p">),</span> <span class="n">hoi_parser</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">honk_parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">honk_parser</span><span class="o">.</span><span class="n">resolvers</span><span class="o">.</span><span class="n">add</span><span class="p">(</span> <span class="n">PrefixResolver</span><span class="p">(</span><span class="s">&quot;honk&quot;</span><span class="p">)</span> <span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">honk_doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="n">xml_text</span><span class="p">),</span> <span class="n">honk_parser</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>These contexts are important for the further behaviour of the documents.  They
+memorise their original parser so that the correct set of resolvers is used in
+subsequent lookups.  To compile the stylesheet, XSLT must resolve the
+<tt class="docutils literal"><span class="pre">honk:test</span></tt> URI in the <tt class="docutils literal"><span class="pre">xsl:include</span></tt> element.  The <tt class="docutils literal"><span class="pre">hoi</span></tt> resolver cannot
+do that:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">normal_doc</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XSLTParseError</span>: <span class="n">Cannot resolve URI honk:test</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">hoi_doc</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XSLTParseError</span>: <span class="n">Cannot resolve URI honk:test</span>
+</pre></div>
+</div>
+<p>However, if we use the <tt class="docutils literal"><span class="pre">honk</span></tt> resolver associated with the respective
+document, everything works fine:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">honk_doc</span><span class="p">)</span>
+<span class="go">Resolved url honk:test as prefix honk</span>
+</pre></div>
+</div>
+<p>Running the transform accesses the same parser context again, but since it now
+needs to resolve the <tt class="docutils literal"><span class="pre">hoi</span></tt> URI in the call to the document function, its
+<tt class="docutils literal"><span class="pre">honk</span></tt> resolver will fail to do so:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">normal_doc</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XSLTApplyError</span>: <span class="n">Cannot resolve URI hoi:test</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">hoi_doc</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XSLTApplyError</span>: <span class="n">Cannot resolve URI hoi:test</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">honk_doc</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XSLTApplyError</span>: <span class="n">Cannot resolve URI hoi:test</span>
+</pre></div>
+</div>
+<p>This can only be solved by adding a <tt class="docutils literal"><span class="pre">hoi</span></tt> resolver to the original parser:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">honk_parser</span><span class="o">.</span><span class="n">resolvers</span><span class="o">.</span><span class="n">add</span><span class="p">(</span> <span class="n">PrefixResolver</span><span class="p">(</span><span class="s">&quot;hoi&quot;</span><span class="p">)</span> <span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">honk_doc</span><span class="p">)</span>
+<span class="go">Resolved url hoi:test as prefix hoi</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
+<span class="go">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
+<span class="go">&lt;test&gt;hoi-TEST&lt;/test&gt;</span>
+</pre></div>
+</div>
+<p>We can see that the <tt class="docutils literal"><span class="pre">hoi</span></tt> resolver was called to generate a document that
+was then inserted into the result document by the XSLT transformation.  Note
+that this is completely independent of the XML file you transform, as the URI
+is resolved from within the stylesheet context:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">normal_doc</span><span class="p">)</span>
+<span class="go">Resolved url hoi:test as prefix hoi</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
+<span class="go">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
+<span class="go">&lt;test&gt;hoi-TEST&lt;/test&gt;</span>
+</pre></div>
+</div>
+<p>It may be seen as a matter of taste what resolvers the generated document
+inherits.  For XSLT, the output document inherits the resolvers of the input
+document and not those of the stylesheet.  Therefore, the last result does not
+inherit any resolvers at all.</p>
+</div>
+<div class="section" id="i-o-access-control-in-xslt">
+<h2><a class="toc-backref" href="#id6">I/O access control in XSLT</a><a class="headerlink" href="#i-o-access-control-in-xslt" title="Permalink to this headline">¶</a></h2>
+<p>By default, XSLT supports all extension functions from libxslt and libexslt as
+well as Python regular expressions through EXSLT.  Some extensions enable
+style sheets to read and write files on the local file system.</p>
+<p>XSLT has a mechanism to control the access to certain I/O operations during
+the transformation process.  This is most interesting where XSL scripts come
+from potentially insecure sources and must be prevented from modifying the
+local file system.  Note, however, that there is no way to keep them from
+eating up your precious CPU time, so this should not stop you from thinking
+about what XSLT you execute.</p>
+<p>Access control is configured using the <tt class="docutils literal"><span class="pre">XSLTAccessControl</span></tt> class.  It can be
+called with a number of keyword arguments that allow or deny specific
+operations:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">honk_doc</span><span class="p">)</span>
+<span class="go">Resolved url honk:test as prefix honk</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">normal_doc</span><span class="p">)</span>
+<span class="go">Resolved url hoi:test as prefix hoi</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">ac</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLTAccessControl</span><span class="p">(</span><span class="n">read_network</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">honk_doc</span><span class="p">,</span> <span class="n">access_control</span><span class="o">=</span><span class="n">ac</span><span class="p">)</span>
+<span class="go">Resolved url honk:test as prefix honk</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">normal_doc</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XSLTApplyError: xsltLoadDocument</span>: <span class="n">read rights for hoi:test denied</span>
+</pre></div>
+</div>
+<p>There are a few things to keep in mind:</p>
+<ul class="simple">
+<li>XSL parsing (<tt class="docutils literal"><span class="pre">xsl:import</span></tt>, etc.) is not affected by this mechanism</li>
+<li><tt class="docutils literal"><span class="pre">read_file=False</span></tt> does not imply <tt class="docutils literal"><span class="pre">write_file=False</span></tt>, all controls are
+independent.</li>
+<li><tt class="docutils literal"><span class="pre">read_file</span></tt> only applies to files in the file system.  Any other scheme
+for URLs is controlled by the <tt class="docutils literal"><span class="pre">*_network</span></tt> keywords.</li>
+<li>If you need more fine-grained control than switching access on and off, you
+should consider writing a custom document loader that returns empty
+documents or raises exceptions if access is denied.</li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Document loading and URL resolving</a><ul>
+<li><a class="reference internal" href="#xml-catalogs">XML Catalogs</a></li>
+<li><a class="reference internal" href="#uri-resolvers">URI Resolvers</a></li>
+<li><a class="reference internal" href="#document-loading-in-context">Document loading in context</a></li>
+<li><a class="reference internal" href="#i-o-access-control-in-xslt">I/O access control in XSLT</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/resolvers.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/s5/lxml-ep2008.html b/doc/sphinx/s5/lxml-ep2008.html
new file mode 100644 (file)
index 0000000..d008706
--- /dev/null
@@ -0,0 +1,1176 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Implementing XML languages with lxml &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '../',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="../_static/jquery.js"></script>
+    <script type="text/javascript" src="../_static/underscore.js"></script>
+    <script type="text/javascript" src="../_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="../index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="implementing-xml-languages-with-lxml">
+<h1>Implementing XML languages with lxml<a class="headerlink" href="#implementing-xml-languages-with-lxml" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="dr-stefan-behnel">
+<h2>Dr. Stefan Behnel<a class="headerlink" href="#dr-stefan-behnel" title="Permalink to this headline">¶</a></h2>
+<dl class="class">
+<dt id="center">
+<em class="property">class </em><tt class="descname">center</tt><a class="headerlink" href="#center" title="Permalink to this definition">¶</a></dt>
+<dd><p><a class="reference external" href="http://codespeak.net/lxml/">http://codespeak.net/lxml/</a></p>
+<p><a class="reference external" href="mailto:lxml-dev&#37;&#52;&#48;codespeak&#46;net">lxml-dev<span>&#64;</span>codespeak<span>&#46;</span>net</a></p>
+<img alt="../_images/tagpython.png" src="../_images/tagpython.png" />
+</dd></dl>
+
+<div class="section" id="what-is-an-xml-language">
+<h3>What is an Â»XML language«?<a class="headerlink" href="#what-is-an-xml-language" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>a language in XML notation</li>
+<li>aka Â»XML dialect«<ul>
+<li>except that it&#8217;s not a dialect</li>
+</ul>
+</li>
+<li>Examples:<ul>
+<li>XML Schema</li>
+<li>Atom/RSS</li>
+<li>(X)HTML</li>
+<li>Open Document Format</li>
+<li>SOAP</li>
+<li>... add your own one here</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="popular-mistakes-to-avoid-1">
+<h3>Popular mistakes to avoid (1)<a class="headerlink" href="#popular-mistakes-to-avoid-1" title="Permalink to this headline">¶</a></h3>
+<p>&#8220;That&#8217;s easy, I can use regular expressions!&#8221;</p>
+<dl class="class">
+<dt>
+<tt class="descname">incremental center</tt></dt>
+<dd><p>No, you can&#8217;t.</p>
+</dd></dl>
+
+</div>
+<div class="section" id="popular-mistakes-to-avoid-2">
+<h3>Popular mistakes to avoid (2)<a class="headerlink" href="#popular-mistakes-to-avoid-2" title="Permalink to this headline">¶</a></h3>
+<p>&#8220;This is tree data, I&#8217;ll take the DOM!&#8221;</p>
+</div>
+<div class="section" id="id1">
+<h3>Popular mistakes to avoid (2)<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
+<p>&#8220;This is tree data, I&#8217;ll take the DOM!&#8221;</p>
+<ul class="simple">
+<li>DOM is ubiquitous, but it&#8217;s as complicated as Java</li>
+<li>uglify your application with tons of DOM code to<ul>
+<li>walk over non-element nodes to find the data you need</li>
+<li>convert text content to other data types</li>
+<li>modify the XML tree in memory</li>
+</ul>
+</li>
+</ul>
+<p>=&gt; write verbose, redundant, hard-to-maintain code</p>
+</div>
+<div class="section" id="popular-mistakes-to-avoid-3">
+<h3>Popular mistakes to avoid (3)<a class="headerlink" href="#popular-mistakes-to-avoid-3" title="Permalink to this headline">¶</a></h3>
+<p>&#8220;SAX is <em>so</em> fast and consumes <em>no</em> memory!&#8221;</p>
+</div>
+<div class="section" id="id2">
+<h3>Popular mistakes to avoid (3)<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
+<p>&#8220;SAX is <em>so</em> fast and consumes <em>no</em> memory!&#8221;</p>
+<ul class="simple">
+<li>but <em>writing</em> SAX code is <em>not</em> fast!</li>
+<li>write error-prone, state-keeping SAX code to<ul>
+<li>figure out where you are</li>
+<li>find the sections you need</li>
+<li>convert text content to other data types</li>
+<li>copy the XML data into custom data classes</li>
+<li>... and don&#8217;t forget the way back into XML!</li>
+</ul>
+</li>
+</ul>
+<p>=&gt; write confusing state-machine code</p>
+<p>=&gt; debugging into existence</p>
+</div>
+<div class="section" id="working-with-xml">
+<h3>Working with XML<a class="headerlink" href="#working-with-xml" title="Permalink to this headline">¶</a></h3>
+<blockquote>
+<div><p><strong>Getting XML work done</strong></p>
+<p>(instead of getting time wasted)</p>
+</div></blockquote>
+</div>
+<div class="section" id="how-can-you-work-with-xml">
+<h3>How can you work with XML?<a class="headerlink" href="#how-can-you-work-with-xml" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>Preparation:<ul>
+<li>Implement usable data classes as an abstraction layer</li>
+<li>Implement a mapping from XML to the data classes</li>
+<li>Implement a mapping from the data classes to XML</li>
+</ul>
+</li>
+<li>Workflow:<ul>
+<li>parse XML data</li>
+<li>map XML data to data classes</li>
+<li>work with data classes</li>
+<li>map data classes to XML</li>
+<li>serialise XML</li>
+</ul>
+</li>
+</ul>
+<dl class="class">
+<dt id="incremental">
+<em class="property">class </em><tt class="descname">incremental</tt><a class="headerlink" href="#incremental" title="Permalink to this definition">¶</a></dt>
+<dd><ul class="simple">
+<li>Approach:<ul>
+<li>get rid of XML and do everything in your own code</li>
+</ul>
+</li>
+</ul>
+</dd></dl>
+
+</div>
+<div class="section" id="what-if-you-could-simplify-this">
+<h3>What if you could simplify this?<a class="headerlink" href="#what-if-you-could-simplify-this" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>Preparation:<ul>
+<li>Extend usable XML API classes into an abstraction layer</li>
+</ul>
+</li>
+<li>Workflow:<ul>
+<li>parse XML data into XML API classes</li>
+<li>work with XML API classes</li>
+<li>serialise XML</li>
+</ul>
+</li>
+</ul>
+<dl class="class">
+<dt>
+<em class="property">class </em><tt class="descname">incremental</tt></dt>
+<dd><ul class="simple">
+<li>Approach:<ul>
+<li>cover only the quirks of XML and make it work <em>for</em> you</li>
+</ul>
+</li>
+</ul>
+</dd></dl>
+
+</div>
+<div class="section" id="id3">
+<h3>What if you could simplify this ...<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>... without sacrificing usability or flexibility?</li>
+<li>... using a high-speed, full-featured, pythonic XML toolkit?</li>
+<li>... with the power of XPath, XSLT and XML validation?</li>
+</ul>
+<dl class="class">
+<dt>
+<tt class="descname">incremental center</tt></dt>
+<dd><p>... then Â»lxml« is your friend!</p>
+</dd></dl>
+
+</div>
+<div class="section" id="overview">
+<h3>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>What is lxml?<ul>
+<li>what &amp; who</li>
+</ul>
+</li>
+<li>How do you use it?<ul>
+<li>Lesson 0: quick API overview<ul>
+<li>ElementTree concepts and lxml features</li>
+</ul>
+</li>
+<li>Lesson 1: parse XML<ul>
+<li>how to get XML data into memory</li>
+</ul>
+</li>
+<li>Lesson 2: generate XML<ul>
+<li>how to write an XML generator for a language</li>
+</ul>
+</li>
+<li>Lesson 3: working with XML trees made easy<ul>
+<li>how to write an XML API for a language</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="what-is-lxml">
+<h3>What is lxml?<a class="headerlink" href="#what-is-lxml" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>a fast, full-featured toolkit for XML and HTML handling<ul>
+<li><a class="reference external" href="http://codespeak.net/lxml/">http://codespeak.net/lxml/</a></li>
+<li><a class="reference external" href="mailto:lxml-dev&#37;&#52;&#48;codespeak&#46;net">lxml-dev<span>&#64;</span>codespeak<span>&#46;</span>net</a></li>
+</ul>
+</li>
+<li>based on and inspired by<ul>
+<li>the C libraries libxml2 and libxslt (by Daniel Veillard)</li>
+<li>the ElementTree API (by Fredrik Lundh)</li>
+<li>the Cython compiler (by Robert Bradshaw, Greg Ewing &amp; me)</li>
+<li>the Python language (by Guido &amp; [<em>paste Misc/ACKS here</em>])</li>
+<li>user feedback, ideas and patches (by you!)<ul>
+<li>keep doing that, we love you all!</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>maintained (and major parts) written by myself<ul>
+<li>initial design and implementation by Martijn Faassen</li>
+<li>extensive HTML API and tools by Ian Bicking</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="what-do-you-get-for-your-money">
+<h3>What do you get for your money?<a class="headerlink" href="#what-do-you-get-for-your-money" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>many tools in one:<ul>
+<li>Generic, ElementTree compatible XML API: <strong>lxml.etree</strong><ul>
+<li>but faster for many tasks and much more feature-rich</li>
+</ul>
+</li>
+<li>Special tool set for HTML handling: <strong>lxml.html</strong></li>
+<li>Special API for pythonic data binding: <strong>lxml.objectify</strong></li>
+<li>General purpose path languages: XPath and CSS selectors</li>
+<li>Validation: DTD, XML Schema, RelaxNG, Schematron</li>
+<li>XSLT, XInclude, C14N, ...</li>
+<li>Fast tree iteration, event-driven parsing, ...</li>
+</ul>
+</li>
+<li>it&#8217;s free, but it&#8217;s worth every â‚¬-Cent!<ul>
+<li>what users say:<ul>
+<li>»no qualification, I would recommend lxml for just about any
+HTML task«</li>
+<li>»THE tool [...] for newbies and experienced developers«</li>
+<li>»you can do pretty much anything with an intuitive API«</li>
+<li>»lxml takes all the pain out of XML«</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="lesson-0-a-quick-overview">
+<h3>Lesson 0: a quick overview<a class="headerlink" href="#lesson-0-a-quick-overview" title="Permalink to this headline">¶</a></h3>
+<blockquote>
+<div><p>why <strong>»lxml takes all the pain out of XML«</strong></p>
+<p>(a quick overview of lxml features and ElementTree concepts)</p>
+</div></blockquote>
+</div>
+<div class="section" id="namespaces-in-elementtree">
+<h3>Namespaces in ElementTree<a class="headerlink" href="#namespaces-in-elementtree" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">uses Clark notation:</p>
+<ul class="simple">
+<li>wrap namespace URI in <tt class="docutils literal"><span class="pre">{...}</span></tt></li>
+<li>append the tag name</li>
+</ul>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tag</span> <span class="o">=</span> <span class="s">&quot;{http://www.w3.org/the/namespace}tagname&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">no prefixes!</p>
+</li>
+<li><p class="first">a single, self-containing tag identifier</p>
+</li>
+</ul>
+</div>
+<div class="section" id="text-content-in-elementtree">
+<h3>Text content in ElementTree<a class="headerlink" href="#text-content-in-elementtree" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">uses <tt class="docutils literal"><span class="pre">.text</span></tt> and <tt class="docutils literal"><span class="pre">.tail</span></tt> attributes:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">div</span> <span class="o">=</span> <span class="n">html</span><span class="o">.</span><span class="n">fragment_fromstring</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="s">&quot;&lt;div&gt;&lt;p&gt;a paragraph&lt;br&gt;split in two&lt;/p&gt; parts&lt;/div&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">p</span> <span class="o">=</span> <span class="n">div</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">br</span> <span class="o">=</span> <span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">p</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;a paragraph&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">br</span><span class="o">.</span><span class="n">text</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">br</span><span class="o">.</span><span class="n">tail</span>
+<span class="go">&#39;split in two&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">p</span><span class="o">.</span><span class="n">tail</span>
+<span class="go">&#39; parts&#39;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">no text nodes!</p>
+<ul class="simple">
+<li>simplifies tree traversal a lot</li>
+<li>simplifies many XML algorithms</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="attributes-in-elementtree">
+<h3>Attributes in ElementTree<a class="headerlink" href="#attributes-in-elementtree" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">uses <tt class="docutils literal"><span class="pre">.get()</span></tt> and <tt class="docutils literal"><span class="pre">.set()</span></tt> methods:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="s">&#39;&lt;root a=&quot;the value&quot; b=&quot;of an&quot; c=&quot;attribute&quot;/&gt;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;a&#39;</span><span class="p">)</span>
+<span class="go">&#39;the value&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&#39;a&#39;</span><span class="p">,</span> <span class="s">&quot;THE value&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;a&#39;</span><span class="p">)</span>
+<span class="go">&#39;THE value&#39;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">or the <tt class="docutils literal"><span class="pre">.attrib</span></tt> dictionary property:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">d</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">attrib</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">list</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span>
+<span class="go">[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">list</span><span class="p">(</span><span class="nb">sorted</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
+<span class="go">[&#39;THE value&#39;, &#39;attribute&#39;, &#39;of an&#39;]</span>
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+<div class="section" id="tree-iteration-in-lxml-etree-1">
+<h3>Tree iteration in lxml.etree (1)<a class="headerlink" href="#tree-iteration-in-lxml-etree-1" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="s">&quot;&lt;root&gt; &lt;a&gt;&lt;b/&gt;&lt;b/&gt;&lt;/a&gt; &lt;c&gt;&lt;d/&gt;&lt;e&gt;&lt;f/&gt;&lt;/e&gt;&lt;g/&gt;&lt;/c&gt; &lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="p">])</span>   <span class="c"># children</span>
+<span class="go">[&#39;a&#39;, &#39;c&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</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="c"># self and descendants</span>
+<span class="go">[&#39;root&#39;, &#39;a&#39;, &#39;b&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterdescendants</span><span class="p">()])</span>
+<span class="go">[&#39;a&#39;, &#39;b&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;]</span>
+
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">iter_breadth_first</span><span class="p">(</span><span class="n">root</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="n">bfs_queue</span> <span class="o">=</span> <span class="n">collections</span><span class="o">.</span><span class="n">deque</span><span class="p">([</span><span class="n">root</span><span class="p">])</span>
+<span class="gp">... </span>    <span class="k">while</span> <span class="n">bfs_queue</span><span class="p">:</span>
+<span class="gp">... </span>        <span class="n">el</span> <span class="o">=</span> <span class="n">bfs_queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span>  <span class="c"># pop next element</span>
+<span class="gp">... </span>        <span class="n">bfs_queue</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">el</span><span class="p">)</span>      <span class="c"># append its children</span>
+<span class="gp">... </span>        <span class="k">yield</span> <span class="n">el</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span><span class="n">el</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">iter_breadth_first</span><span class="p">(</span><span class="n">root</span><span class="p">)])</span>
+<span class="go">[&#39;root&#39;, &#39;a&#39;, &#39;c&#39;, &#39;b&#39;, &#39;b&#39;, &#39;d&#39;, &#39;e&#39;, &#39;g&#39;, &#39;f&#39;]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="tree-iteration-in-lxml-etree-2">
+<h3>Tree iteration in lxml.etree (2)<a class="headerlink" href="#tree-iteration-in-lxml-etree-2" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="s">&quot;&lt;root&gt; &lt;a&gt;&lt;b/&gt;&lt;b/&gt;&lt;/a&gt; &lt;c&gt;&lt;d/&gt;&lt;e&gt;&lt;f/&gt;&lt;/e&gt;&lt;g/&gt;&lt;/c&gt; &lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree_walker</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterwalk</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">events</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;start&#39;</span><span class="p">,</span> <span class="s">&#39;end&#39;</span><span class="p">))</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">element</span><span class="p">)</span> <span class="ow">in</span> <span class="n">tree_walker</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> (</span><span class="si">%s</span><span class="s">)&quot;</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">event</span><span class="p">))</span>
+<span class="go">root (start)</span>
+<span class="go">a (start)</span>
+<span class="go">b (start)</span>
+<span class="go">b (end)</span>
+<span class="go">b (start)</span>
+<span class="go">b (end)</span>
+<span class="go">a (end)</span>
+<span class="go">c (start)</span>
+<span class="go">d (start)</span>
+<span class="go">d (end)</span>
+<span class="go">e (start)</span>
+<span class="go">f (start)</span>
+<span class="go">f (end)</span>
+<span class="go">e (end)</span>
+<span class="go">g (start)</span>
+<span class="go">g (end)</span>
+<span class="go">c (end)</span>
+<span class="go">root (end)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="path-languages-in-lxml">
+<h3>Path languages in lxml<a class="headerlink" href="#path-languages-in-lxml" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;root&gt;</span>
+  <span class="nt">&lt;speech</span> <span class="na">class=</span><span class="s">&#39;dialog&#39;</span><span class="nt">&gt;&lt;p&gt;</span>So be it!<span class="nt">&lt;/p&gt;&lt;/speech&gt;</span>
+  <span class="nt">&lt;p&gt;</span>stuff<span class="nt">&lt;/p&gt;</span>
+<span class="nt">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<ul>
+<li><p class="first">search it with XPath</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find_paragraphs</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//p&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">paragraphs</span> <span class="o">=</span> <span class="n">find_paragraphs</span><span class="p">(</span><span class="n">xml_tree</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span> <span class="n">p</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">paragraphs</span> <span class="p">])</span>
+<span class="go">[&#39;So be it!&#39;, &#39;stuff&#39;]</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">search it with CSS selectors</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find_dialogs</span> <span class="o">=</span> <span class="n">cssselect</span><span class="o">.</span><span class="n">CSSSelector</span><span class="p">(</span><span class="s">&quot;speech.dialog p&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">paragraphs</span> <span class="o">=</span> <span class="n">find_dialogs</span><span class="p">(</span><span class="n">xml_tree</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span> <span class="n">p</span><span class="o">.</span><span class="n">text</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">paragraphs</span> <span class="p">])</span>
+<span class="go">[&#39;So be it!&#39;]</span>
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+<div class="section" id="summary-of-lesson-0">
+<h3>Summary of lesson 0<a class="headerlink" href="#summary-of-lesson-0" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>lxml comes with various tools<ul>
+<li>that aim to hide the quirks of XML</li>
+<li>that simplify finding and handling data</li>
+<li>that make XML a pythonic tool by itself</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="lesson-1-parsing-xml-html">
+<h3>Lesson 1: parsing XML/HTML<a class="headerlink" href="#lesson-1-parsing-xml-html" title="Permalink to this headline">¶</a></h3>
+<blockquote>
+<div><p><strong>The input side</strong></p>
+<p>(a quick overview)</p>
+</div></blockquote>
+</div>
+<div class="section" id="parsing-xml-and-html-from">
+<h3>Parsing XML and HTML from ...<a class="headerlink" href="#parsing-xml-and-html-from" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>strings: <tt class="docutils literal"><span class="pre">fromstring(xml_data)</span></tt><ul>
+<li>byte strings, but also unicode strings</li>
+</ul>
+</li>
+<li>filenames: <tt class="docutils literal"><span class="pre">parse(filename)</span></tt></li>
+<li>HTTP/FTP URLs: <tt class="docutils literal"><span class="pre">parse(url)</span></tt></li>
+<li>file objects: <tt class="docutils literal"><span class="pre">parse(f)</span></tt><ul>
+<li><tt class="docutils literal"><span class="pre">f</span> <span class="pre">=</span> <span class="pre">open(filename,</span> <span class="pre">'rb')</span></tt> !</li>
+</ul>
+</li>
+<li>file-like objects: <tt class="docutils literal"><span class="pre">parse(f)</span></tt><ul>
+<li>only need a <tt class="docutils literal"><span class="pre">f.read(size)</span></tt> method</li>
+</ul>
+</li>
+<li>data chunks: <tt class="docutils literal"><span class="pre">parser.feed(xml_chunk)</span></tt><ul>
+<li><tt class="docutils literal"><span class="pre">result</span> <span class="pre">=</span> <span class="pre">parser.close()</span></tt></li>
+</ul>
+</li>
+</ul>
+<dl class="class">
+<dt>
+<tt class="descname">small right</tt></dt>
+<dd><p>(parsing from strings and filenames/URLs frees the GIL)</p>
+</dd></dl>
+
+</div>
+<div class="section" id="example-parsing-from-a-string">
+<h3>Example: parsing from a string<a class="headerlink" href="#example-parsing-from-a-string" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">using the <tt class="docutils literal"><span class="pre">fromstring()</span></tt> function:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">some_xml_data</span><span class="p">)</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">using the <tt class="docutils literal"><span class="pre">fromstring()</span></tt> function with a specific parser:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">HTMLParser</span><span class="p">(</span><span class="n">remove_comments</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">some_html_data</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">or the <tt class="docutils literal"><span class="pre">XML()</span></tt> and <tt class="docutils literal"><span class="pre">HTML()</span></tt> aliases for literals in code:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;child/&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root_element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">HTML</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;some&lt;br&gt;paragraph&lt;/p&gt;&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+<div class="section" id="parsing-xml-into">
+<h3>Parsing XML into ...<a class="headerlink" href="#parsing-xml-into" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>a tree in memory<ul>
+<li><tt class="docutils literal"><span class="pre">parse()</span></tt> and <tt class="docutils literal"><span class="pre">fromstring()</span></tt> functions</li>
+</ul>
+</li>
+<li>a tree in memory, but step-by-step with a generator<ul>
+<li><tt class="docutils literal"><span class="pre">iterparse()</span></tt> generates <tt class="docutils literal"><span class="pre">(start/end,</span> <span class="pre">element)</span></tt> events</li>
+<li>tree can be cleaned up to save space</li>
+</ul>
+</li>
+<li>SAX-like callbacks without building a tree<ul>
+<li><tt class="docutils literal"><span class="pre">parse()</span></tt> and <tt class="docutils literal"><span class="pre">fromstring()</span></tt> functions</li>
+<li>pass a <tt class="docutils literal"><span class="pre">target</span></tt> object into the parser</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="summary-of-lesson-1">
+<h3>Summary of lesson 1<a class="headerlink" href="#summary-of-lesson-1" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>parsing XML/HTML in lxml is mostly straight forward<ul>
+<li>simple functions that do the job</li>
+</ul>
+</li>
+<li>advanced use cases are pretty simple<ul>
+<li>event-driven parsing using <tt class="docutils literal"><span class="pre">iterparse()</span></tt></li>
+<li>special parser configuration with keyword arguments<ul>
+<li>configuration is generally local to a parser</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>BTW: parsing is <em>very</em> fast, as is serialising<ul>
+<li>don&#8217;t hesitate to do parse-serialise-parse cycles</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="lesson-2-generating-xml">
+<h3>Lesson 2: generating XML<a class="headerlink" href="#lesson-2-generating-xml" title="Permalink to this headline">¶</a></h3>
+<blockquote>
+<div><p><strong>The output side</strong></p>
+<p>(and how to make it safe and simple)</p>
+</div></blockquote>
+</div>
+<div class="section" id="the-example-language-atom">
+<h3>The example language: Atom<a class="headerlink" href="#the-example-language-atom" title="Permalink to this headline">¶</a></h3>
+<p>The Atom XML format</p>
+<ul class="simple">
+<li>Namespace: <a class="reference external" href="http://www.w3.org/2005/Atom">http://www.w3.org/2005/Atom</a></li>
+<li>W3C recommendation derived from RSS and friends</li>
+<li>Atom feeds describe news entries and annotated links<ul>
+<li>a <tt class="docutils literal"><span class="pre">feed</span></tt> contains one or more <tt class="docutils literal"><span class="pre">entry</span></tt> elements</li>
+<li>an <tt class="docutils literal"><span class="pre">entry</span></tt> contains <tt class="docutils literal"><span class="pre">author</span></tt>, <tt class="docutils literal"><span class="pre">link</span></tt>, <tt class="docutils literal"><span class="pre">summary</span></tt> and/or <tt class="docutils literal"><span class="pre">content</span></tt></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="example-generate-xml-1">
+<h3>Example: generate XML (1)<a class="headerlink" href="#example-generate-xml-1" title="Permalink to this headline">¶</a></h3>
+<p>The ElementMaker (or <em>E-factory</em>)</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.builder</span> <span class="kn">import</span> <span class="n">ElementMaker</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span> <span class="o">=</span> <span class="n">ElementMaker</span><span class="p">(</span><span class="n">namespace</span><span class="o">=</span><span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                 <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="bp">None</span> <span class="p">:</span> <span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="p">})</span>
+</pre></div>
+</div>
+<dl class="class">
+<dt>
+<em class="property">class </em><tt class="descname">incremental</tt></dt>
+<dd><div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">atom</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="n">A</span><span class="o">.</span><span class="n">author</span><span class="p">(</span> <span class="n">A</span><span class="o">.</span><span class="n">name</span><span class="p">(</span><span class="s">&quot;Stefan Behnel&quot;</span><span class="p">)</span> <span class="p">),</span>
+<span class="gp">... </span>  <span class="n">A</span><span class="o">.</span><span class="n">entry</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&quot;News from lxml&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">link</span><span class="p">(</span><span class="n">href</span><span class="o">=</span><span class="s">&quot;http://codespeak.net/lxml/&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">summary</span><span class="p">(</span><span class="s">&quot;See what&#39;s &lt;b&gt;fun&lt;/b&gt; about lxml...&quot;</span><span class="p">,</span>
+<span class="gp">... </span>              <span class="nb">type</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">),</span>
+<span class="gp">... </span>  <span class="p">)</span>
+<span class="gp">... </span><span class="p">)</span>
+</pre></div>
+</div>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.etree</span> <span class="kn">import</span> <span class="n">tostring</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span> <span class="n">tostring</span><span class="p">(</span><span class="n">atom</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="p">)</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</div>
+<div class="section" id="example-generate-xml-2">
+<h3>Example: generate XML (2)<a class="headerlink" href="#example-generate-xml-2" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">atom</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="n">A</span><span class="o">.</span><span class="n">author</span><span class="p">(</span> <span class="n">A</span><span class="o">.</span><span class="n">name</span><span class="p">(</span><span class="s">&quot;Stefan Behnel&quot;</span><span class="p">)</span> <span class="p">),</span>
+<span class="gp">... </span>  <span class="n">A</span><span class="o">.</span><span class="n">entry</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&quot;News from lxml&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">link</span><span class="p">(</span><span class="n">href</span><span class="o">=</span><span class="s">&quot;http://codespeak.net/lxml/&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">summary</span><span class="p">(</span><span class="s">&quot;See what&#39;s &lt;b&gt;fun&lt;/b&gt; about lxml...&quot;</span><span class="p">,</span>
+<span class="gp">... </span>              <span class="nb">type</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">),</span>
+<span class="gp">... </span>  <span class="p">)</span>
+<span class="gp">... </span><span class="p">)</span>
+</pre></div>
+</div>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;feed</span> <span class="na">xmlns=</span><span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="nt">&gt;</span>
+  <span class="nt">&lt;author&gt;</span>
+    <span class="nt">&lt;name&gt;</span>Stefan Behnel<span class="nt">&lt;/name&gt;</span>
+  <span class="nt">&lt;/author&gt;</span>
+  <span class="nt">&lt;entry&gt;</span>
+    <span class="nt">&lt;title&gt;</span>News from lxml<span class="nt">&lt;/title&gt;</span>
+    <span class="nt">&lt;link</span> <span class="na">href=</span><span class="s">&quot;http://codespeak.net/lxml/&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;summary</span> <span class="na">type=</span><span class="s">&quot;html&quot;</span><span class="nt">&gt;</span>See what&#39;s <span class="ni">&amp;lt;</span>b<span class="ni">&amp;gt;</span>fun<span class="ni">&amp;lt;</span>/b<span class="ni">&amp;gt;</span>
+                         about lxml...<span class="nt">&lt;/summary&gt;</span>
+  <span class="nt">&lt;/entry&gt;</span>
+<span class="nt">&lt;/feed&gt;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="be-careful-what-you-type">
+<h3>Be careful what you type!<a class="headerlink" href="#be-careful-what-you-type" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">atom</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="n">A</span><span class="o">.</span><span class="n">author</span><span class="p">(</span> <span class="n">A</span><span class="o">.</span><span class="n">name</span><span class="p">(</span><span class="s">&quot;Stefan Behnel&quot;</span><span class="p">)</span> <span class="p">),</span>
+<span class="gp">... </span>  <span class="n">A</span><span class="o">.</span><span class="n">entry</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">titel</span><span class="p">(</span><span class="s">&quot;News from lxml&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">link</span><span class="p">(</span><span class="n">href</span><span class="o">=</span><span class="s">&quot;http://codespeak.net/lxml/&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">summary</span><span class="p">(</span><span class="s">&quot;See what&#39;s &lt;b&gt;fun&lt;/b&gt; about lxml...&quot;</span><span class="p">,</span>
+<span class="gp">... </span>              <span class="nb">type</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">),</span>
+<span class="gp">... </span>  <span class="p">)</span>
+<span class="gp">... </span><span class="p">)</span>
+</pre></div>
+</div>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;feed</span> <span class="na">xmlns=</span><span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span><span class="nt">&gt;</span>
+  <span class="nt">&lt;author&gt;</span>
+    <span class="nt">&lt;name&gt;</span>Stefan Behnel<span class="nt">&lt;/name&gt;</span>
+  <span class="nt">&lt;/author&gt;</span>
+  <span class="nt">&lt;entry&gt;</span>
+    <span class="nt">&lt;titel&gt;</span>News from lxml<span class="nt">&lt;/titel&gt;</span>
+    <span class="nt">&lt;link</span> <span class="na">href=</span><span class="s">&quot;http://codespeak.net/lxml/&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;summary</span> <span class="na">type=</span><span class="s">&quot;html&quot;</span><span class="nt">&gt;</span>See what&#39;s <span class="ni">&amp;lt;</span>b<span class="ni">&amp;gt;</span>fun<span class="ni">&amp;lt;</span>/b<span class="ni">&amp;gt;</span>
+                         about lxml...<span class="nt">&lt;/summary&gt;</span>
+  <span class="nt">&lt;/entry&gt;</span>
+<span class="nt">&lt;/feed&gt;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="want-more-type-safety">
+<h3>Want more &#8216;type safety&#8217;?<a class="headerlink" href="#want-more-type-safety" title="Permalink to this headline">¶</a></h3>
+<p>Write an XML generator <em>module</em> instead:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># atomgen.py</span>
+
+<span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+<span class="kn">from</span> <span class="nn">lxml.builder</span> <span class="kn">import</span> <span class="n">ElementMaker</span>
+
+<span class="n">ATOM_NAMESPACE</span> <span class="o">=</span> <span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span>
+
+<span class="n">A</span> <span class="o">=</span> <span class="n">ElementMaker</span><span class="p">(</span><span class="n">namespace</span><span class="o">=</span><span class="n">ATOM_NAMESPACE</span><span class="p">,</span>
+                 <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="bp">None</span> <span class="p">:</span> <span class="n">ATOM_NAMESPACE</span><span class="p">})</span>
+
+<span class="n">feed</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">feed</span>
+<span class="n">entry</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">entry</span>
+<span class="n">title</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">title</span>
+<span class="c"># ... and so on and so forth ...</span>
+
+
+<span class="c"># plus a little validation function: isvalid()</span>
+<span class="n">isvalid</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">RelaxNG</span><span class="p">(</span><span class="nb">file</span><span class="o">=</span><span class="s">&quot;atom.rng&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="the-atom-generator-module">
+<h3>The Atom generator module<a class="headerlink" href="#the-atom-generator-module" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">atomgen</span> <span class="kn">as</span> <span class="nn">A</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">atom</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="n">A</span><span class="o">.</span><span class="n">author</span><span class="p">(</span> <span class="n">A</span><span class="o">.</span><span class="n">name</span><span class="p">(</span><span class="s">&quot;Stefan Behnel&quot;</span><span class="p">)</span> <span class="p">),</span>
+<span class="gp">... </span>  <span class="n">A</span><span class="o">.</span><span class="n">entry</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">link</span><span class="p">(</span><span class="n">href</span><span class="o">=</span><span class="s">&quot;http://codespeak.net/lxml/&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&quot;News from lxml&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">A</span><span class="o">.</span><span class="n">summary</span><span class="p">(</span><span class="s">&quot;See what&#39;s &lt;b&gt;fun&lt;/b&gt; about lxml...&quot;</span><span class="p">,</span>
+<span class="gp">... </span>              <span class="nb">type</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">),</span>
+<span class="gp">... </span>  <span class="p">)</span>
+<span class="gp">... </span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">A</span><span class="o">.</span><span class="n">isvalid</span><span class="p">(</span><span class="n">atom</span><span class="p">)</span> <span class="c"># ok, forgot the ID&#39;s =&gt; invalid XML ...</span>
+<span class="go">False</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">title</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">titel</span><span class="p">(</span><span class="s">&quot;News from lxml&quot;</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AttributeError</span>: <span class="n">&#39;module&#39; object has no attribute &#39;titel&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="mixing-languages-1">
+<h3>Mixing languages (1)<a class="headerlink" href="#mixing-languages-1" title="Permalink to this headline">¶</a></h3>
+<p>Atom can embed <em>serialised</em> HTML</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">lxml.html.builder</span> <span class="kn">as</span> <span class="nn">h</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">html_fragment</span> <span class="o">=</span> <span class="n">h</span><span class="o">.</span><span class="n">DIV</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="s">&quot;this is some</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span>
+<span class="gp">... </span>  <span class="n">h</span><span class="o">.</span><span class="n">A</span><span class="p">(</span><span class="s">&quot;HTML&quot;</span><span class="p">,</span> <span class="n">href</span><span class="o">=</span><span class="s">&quot;http://w3.org/MarkUp/&quot;</span><span class="p">),</span>
+<span class="gp">... </span>  <span class="s">&quot;</span><span class="se">\n</span><span class="s">content&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<dl class="class">
+<dt>
+<em class="property">class </em><tt class="descname">incremental</tt></dt>
+<dd><div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">serialised_html</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html_fragment</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">summary</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">summary</span><span class="p">(</span><span class="n">serialised_html</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">&quot;html&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<div class="highlight-pycon"><div class="highlight"><pre><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">summary</span><span class="p">))</span>
+<span class="go">&lt;summary xmlns=&quot;http://www.w3.org/2005/Atom&quot; type=&quot;html&quot;&gt;</span>
+<span class="go">   &amp;lt;div&amp;gt;this is some</span>
+<span class="go">   &amp;lt;a href=&quot;http://w3.org/MarkUp/&quot;&amp;gt;HTML&amp;lt;/a&amp;gt;</span>
+<span class="go">   content&amp;lt;/div&amp;gt;</span>
+<span class="go">&lt;/summary&gt;</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</div>
+<div class="section" id="mixing-languages-2">
+<h3>Mixing languages (2)<a class="headerlink" href="#mixing-languages-2" title="Permalink to this headline">¶</a></h3>
+<p>Atom can also embed non-escaped XHTML</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">deepcopy</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xhtml_fragment</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">html_fragment</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.html</span> <span class="kn">import</span> <span class="n">html_to_xhtml</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">html_to_xhtml</span><span class="p">(</span><span class="n">xhtml_fragment</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">summary</span> <span class="o">=</span> <span class="n">A</span><span class="o">.</span><span class="n">summary</span><span class="p">(</span><span class="n">xhtml_fragment</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">&quot;xhtml&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<dl class="class">
+<dt>
+<em class="property">class </em><tt class="descname">incremental</tt></dt>
+<dd><div class="highlight-pycon"><div class="highlight"><pre><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">summary</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;summary xmlns=&quot;http://www.w3.org/2005/Atom&quot; type=&quot;xhtml&quot;&gt;</span>
+<span class="go">  &lt;html:div xmlns:html=&quot;http://www.w3.org/1999/xhtml&quot;&gt;this is some</span>
+<span class="go">  &lt;html:a href=&quot;http://w3.org/MarkUp/&quot;&gt;HTML&lt;/html:a&gt;</span>
+<span class="go">  content&lt;/html:div&gt;</span>
+<span class="go">&lt;/summary&gt;</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</div>
+<div class="section" id="summary-of-lesson-2">
+<h3>Summary of lesson 2<a class="headerlink" href="#summary-of-lesson-2" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>generating XML is easy<ul>
+<li>use the ElementMaker</li>
+</ul>
+</li>
+<li>wrap it in a module that provides<ul>
+<li>the target namespace</li>
+<li>an ElementMaker name for each language element</li>
+<li>a validator</li>
+<li>maybe additional helper functions</li>
+</ul>
+</li>
+<li>mixing languages is easy<ul>
+<li>define a generator module for each</li>
+</ul>
+</li>
+</ul>
+<p>... this is all you need for the <em>output</em> side of XML languages</p>
+</div>
+<div class="section" id="lesson-3-designing-xml-apis">
+<h3>Lesson 3: Designing XML APIs<a class="headerlink" href="#lesson-3-designing-xml-apis" title="Permalink to this headline">¶</a></h3>
+<blockquote>
+<div><p><strong>The Element API</strong></p>
+<p>(and how to make it the way <em>you</em> want)</p>
+</div></blockquote>
+</div>
+<div class="section" id="trees-in-c-and-in-python">
+<h3>Trees in C and in Python<a class="headerlink" href="#trees-in-c-and-in-python" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>Trees have two representations:<ul>
+<li>a plain, complete, low-level C tree provided by libxml2</li>
+<li>a set of Python Element proxies, each representing one element</li>
+</ul>
+</li>
+<li>Proxies are created on-the-fly:<ul>
+<li>lxml creates an Element object for a C node on request</li>
+<li>proxies are garbage collected when going out of scope</li>
+<li>XML trees are garbage collected when deleting the last proxy</li>
+</ul>
+</li>
+</ul>
+<dl class="class">
+<dt>
+<em class="property">class </em><tt class="descname">center</tt></dt>
+<dd><img alt="../_images/proxies.png" src="../_images/proxies.png" />
+</dd></dl>
+
+</div>
+<div class="section" id="mapping-python-classes-to-nodes">
+<h3>Mapping Python classes to nodes<a class="headerlink" href="#mapping-python-classes-to-nodes" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>Proxies can be assigned to XML nodes <em>by user code</em><ul>
+<li>lxml tells you about a node, you return a class</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="example-a-simple-element-class-1">
+<h3>Example: a simple Element class (1)<a class="headerlink" href="#example-a-simple-element-class-1" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">define a subclass of ElementBase</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">HonkElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ElementBase</span><span class="p">):</span>
+<span class="gp">... </span>   <span class="nd">@property</span>
+<span class="gp">... </span>   <span class="k">def</span> <span class="nf">honking</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>      <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;honking&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="s">&#39;true&#39;</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">let it replace the default Element class</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementDefaultClassLookup</span><span class="p">(</span>
+<span class="gp">... </span>                            <span class="n">element</span><span class="o">=</span><span class="n">HonkElement</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">lookup</span><span class="p">)</span>
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+<div class="section" id="example-a-simple-element-class-2">
+<h3>Example: a simple Element class (2)<a class="headerlink" href="#example-a-simple-element-class-2" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">use the new Element class</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;root&gt;&lt;honk honking=&quot;true&quot;/&gt;&lt;/root&gt;&#39;</span><span class="p">,</span>
+<span class="gp">... </span>                 <span class="n">parser</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">honking</span>
+<span class="go">False</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">honking</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+<div class="section" id="id4">
+<h3>Mapping Python classes to nodes<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>The Element class lookup<ul>
+<li>lxml tells you about a node, you return a class</li>
+<li>no restrictions on lookup algorithm</li>
+<li>each parser can use a different class lookup scheme</li>
+<li>lookup schemes can be chained through fallbacks</li>
+</ul>
+</li>
+<li>Classes can be selected based on<ul>
+<li>the node type (element, comment or processing instruction)<ul>
+<li><tt class="docutils literal"><span class="pre">ElementDefaultClassLookup()</span></tt></li>
+</ul>
+</li>
+<li>the namespaced node name<ul>
+<li><tt class="docutils literal"><span class="pre">CustomElementClassLookup()</span></tt> + a fallback</li>
+<li><tt class="docutils literal"><span class="pre">ElementNamespaceClassLookup()</span></tt> + a fallback</li>
+</ul>
+</li>
+<li>the value of an attribute (e.g. <tt class="docutils literal"><span class="pre">id</span></tt> or <tt class="docutils literal"><span class="pre">class</span></tt>)<ul>
+<li><tt class="docutils literal"><span class="pre">AttributeBasedElementClassLookup()</span></tt> + a fallback</li>
+</ul>
+</li>
+<li>read-only inspection of the tree<ul>
+<li><tt class="docutils literal"><span class="pre">PythonElementClassLookup()</span></tt> + a fallback</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="designing-an-atom-api">
+<h3>Designing an Atom API<a class="headerlink" href="#designing-an-atom-api" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">a feed is a container for entries</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># atom.py</span>
+
+<span class="n">ATOM_NAMESPACE</span> <span class="o">=</span> <span class="s">&quot;http://www.w3.org/2005/Atom&quot;</span>
+<span class="n">_ATOM_NS</span> <span class="o">=</span> <span class="s">&quot;{</span><span class="si">%s</span><span class="s">}&quot;</span> <span class="o">%</span> <span class="n">ATOM_NAMESPACE</span>
+
+<span class="k">class</span> <span class="nc">FeedElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ElementBase</span><span class="p">):</span>
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">entries</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+       <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">_ATOM_NS</span> <span class="o">+</span> <span class="s">&quot;entry&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">it also has a couple of meta-data children, e.g. <tt class="docutils literal"><span class="pre">title</span></tt></p>
+<div class="highlight-python"><div class="highlight"><pre><span class="k">class</span> <span class="nc">FeedElement</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">ElementBase</span><span class="p">):</span>
+    <span class="c"># ...</span>
+    <span class="nd">@property</span>
+    <span class="k">def</span> <span class="nf">title</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="s">&quot;return the title or None&quot;</span>
+        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+<div class="section" id="consider-lxml-objectify">
+<h3>Consider lxml.objectify<a class="headerlink" href="#consider-lxml-objectify" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>ready-to-use, generic Python object API for XML</li>
+</ul>
+<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">objectify</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">feed</span> <span class="o">=</span> <span class="n">objectify</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s">&quot;atom-example.xml&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
+<span class="go">Example Feed</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span><span class="n">entry</span><span class="o">.</span><span class="n">title</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">])</span>
+<span class="go">[&#39;Atom-Powered Robots Run Amok&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">title</span><span class="p">)</span>
+<span class="go">Atom-Powered Robots Run Amok</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="still-room-for-more-convenience">
+<h3>Still room for more convenience<a class="headerlink" href="#still-room-for-more-convenience" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">itertools</span> <span class="kn">import</span> <span class="n">chain</span>
+
+<span class="k">class</span> <span class="nc">FeedElement</span><span class="p">(</span><span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifiedElement</span><span class="p">):</span>
+
+    <span class="k">def</span> <span class="nf">addIDs</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+        <span class="s">&quot;initialise the IDs of feed and entries&quot;</span>
+
+        <span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">chain</span><span class="p">([</span><span class="bp">self</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">entry</span><span class="p">):</span>
+            <span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">_ATOM_NS</span> <span class="o">+</span> <span class="s">&quot;id&quot;</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
+                <span class="nb">id</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_ATOM_NS</span> <span class="o">+</span> <span class="s">&quot;id&quot;</span><span class="p">)</span>
+                <span class="nb">id</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">make_guid</span><span class="p">()</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="incremental-api-design">
+<h3>Incremental API design<a class="headerlink" href="#incremental-api-design" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li>choose an XML API to start with<ul>
+<li>lxml.etree is general purpose</li>
+<li>lxml.objectify is nice for document-style XML</li>
+</ul>
+</li>
+<li>fix Elements that really need some API sugar<ul>
+<li>dict-mappings to children with specific content/attributes</li>
+<li>properties for specially typed attributes or child values</li>
+<li>simplified access to varying content types of an element</li>
+<li>shortcuts for unnecessarily deep subtrees</li>
+</ul>
+</li>
+<li>ignore what works well enough with the Element API<ul>
+<li>lists of homogeneous children -&gt; Element iteration</li>
+<li>string attributes -&gt; .get()/.set()</li>
+</ul>
+</li>
+<li>let the API grow at your fingertips<ul>
+<li>play with it and test use cases</li>
+<li>avoid &#8220;I want because I can&#8221; feature explosion!</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="setting-up-the-element-mapping">
+<h3>Setting up the Element mapping<a class="headerlink" href="#setting-up-the-element-mapping" title="Permalink to this headline">¶</a></h3>
+<p>Atom has a namespace =&gt; leave the mapping to lxml</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="c"># ...</span>
+<span class="n">_atom_lookup</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementNamespaceClassLookup</span><span class="p">(</span>
+                  <span class="n">objectify</span><span class="o">.</span><span class="n">ObjectifyElementClassLookup</span><span class="p">())</span>
+
+<span class="c"># map the classes to tag names</span>
+<span class="n">ns</span> <span class="o">=</span> <span class="n">_atom_lookup</span><span class="o">.</span><span class="n">get_namespace</span><span class="p">(</span><span class="n">ATOM_NAMESPACE</span><span class="p">)</span>
+<span class="n">ns</span><span class="p">[</span><span class="s">&quot;feed&quot;</span><span class="p">]</span>  <span class="o">=</span> <span class="n">FeedElement</span>
+<span class="n">ns</span><span class="p">[</span><span class="s">&quot;entry&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">EntryElement</span>
+<span class="c"># ... and so on</span>
+<span class="c"># or use ns.update(vars()) with appropriate class names</span>
+
+<span class="c"># create a parser that does some whitespace cleanup</span>
+<span class="n">atom_parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+
+<span class="c"># make it use our Atom classes</span>
+<span class="n">atom_parser</span><span class="o">.</span><span class="n">set_element_class_lookup</span><span class="p">(</span><span class="n">_atom_lookup</span><span class="p">)</span>
+
+<span class="c"># and help users in using our parser setup</span>
+<span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="nb">input</span><span class="p">):</span>
+    <span class="k">return</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">atom_parser</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="using-your-new-atom-api">
+<h3>Using your new Atom API<a class="headerlink" href="#using-your-new-atom-api" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">atom</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">feed</span> <span class="o">=</span> <span class="n">atom</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s">&quot;ep2008/atom-example.xml&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">))</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span><span class="n">entry</span><span class="o">.</span><span class="n">title</span> <span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">feed</span><span class="o">.</span><span class="n">entry</span><span class="p">])</span>
+<span class="go">[&#39;Atom-Powered Robots Run Amok&#39;]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">link_tag</span> <span class="o">=</span> <span class="s">&quot;{</span><span class="si">%s</span><span class="s">}link&quot;</span> <span class="o">%</span> <span class="n">atom</span><span class="o">.</span><span class="n">ATOM_NAMESPACE</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span><span class="n">link</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;href&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">link</span> <span class="ow">in</span> <span class="n">feed</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="n">link_tag</span><span class="p">)])</span>
+<span class="go">[&#39;http://example.org/&#39;, &#39;http://example.org/2003/12/13/atom03&#39;]</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="summary-of-lesson-3">
+<h3>Summary of lesson 3<a class="headerlink" href="#summary-of-lesson-3" title="Permalink to this headline">¶</a></h3>
+<p>To implement an XML API ...</p>
+<ol class="arabic simple">
+<li>start off with lxml&#8217;s Element API<ul>
+<li>or take a look at the object API of lxml.objectify</li>
+</ul>
+</li>
+<li>specialise it into a set of custom Element classes</li>
+<li>map them to XML tags using one of the lookup schemes</li>
+<li>improve the API incrementally while using it<ul>
+<li>discover inconveniences and beautify them</li>
+<li>avoid putting work into things that work</li>
+</ul>
+</li>
+</ol>
+</div>
+<div class="section" id="conclusion">
+<h3>Conclusion<a class="headerlink" href="#conclusion" title="Permalink to this headline">¶</a></h3>
+<p>lxml ...</p>
+<ul class="simple">
+<li>provides a convenient set of tools for XML and HTML<ul>
+<li>parsing</li>
+<li>generating</li>
+<li>working with in-memory trees</li>
+</ul>
+</li>
+<li>follows Python idioms wherever possible<ul>
+<li>highly extensible through wrapping and subclassing</li>
+<li>callable objects for XPath, CSS selectors, XSLT, schemas</li>
+<li>iteration for tree traversal (even while parsing)</li>
+<li>list-/dict-like APIs, properties, keyword arguments, ...</li>
+</ul>
+</li>
+<li>makes extension and specialisation easy<ul>
+<li>write a special XML generator module in trivial code</li>
+<li>write your own XML API incrementally on-the-fly</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="../main.html">
+              <img class="logo" src="../_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="../main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Implementing XML languages with lxml</a><ul>
+<li><a class="reference internal" href="#dr-stefan-behnel">Dr. Stefan Behnel</a><ul>
+<li><a class="reference internal" href="#what-is-an-xml-language">What is an Â»XML language«?</a></li>
+<li><a class="reference internal" href="#popular-mistakes-to-avoid-1">Popular mistakes to avoid (1)</a></li>
+<li><a class="reference internal" href="#popular-mistakes-to-avoid-2">Popular mistakes to avoid (2)</a></li>
+<li><a class="reference internal" href="#id1">Popular mistakes to avoid (2)</a></li>
+<li><a class="reference internal" href="#popular-mistakes-to-avoid-3">Popular mistakes to avoid (3)</a></li>
+<li><a class="reference internal" href="#id2">Popular mistakes to avoid (3)</a></li>
+<li><a class="reference internal" href="#working-with-xml">Working with XML</a></li>
+<li><a class="reference internal" href="#how-can-you-work-with-xml">How can you work with XML?</a></li>
+<li><a class="reference internal" href="#what-if-you-could-simplify-this">What if you could simplify this?</a></li>
+<li><a class="reference internal" href="#id3">What if you could simplify this ...</a></li>
+<li><a class="reference internal" href="#overview">Overview</a></li>
+<li><a class="reference internal" href="#what-is-lxml">What is lxml?</a></li>
+<li><a class="reference internal" href="#what-do-you-get-for-your-money">What do you get for your money?</a></li>
+<li><a class="reference internal" href="#lesson-0-a-quick-overview">Lesson 0: a quick overview</a></li>
+<li><a class="reference internal" href="#namespaces-in-elementtree">Namespaces in ElementTree</a></li>
+<li><a class="reference internal" href="#text-content-in-elementtree">Text content in ElementTree</a></li>
+<li><a class="reference internal" href="#attributes-in-elementtree">Attributes in ElementTree</a></li>
+<li><a class="reference internal" href="#tree-iteration-in-lxml-etree-1">Tree iteration in lxml.etree (1)</a></li>
+<li><a class="reference internal" href="#tree-iteration-in-lxml-etree-2">Tree iteration in lxml.etree (2)</a></li>
+<li><a class="reference internal" href="#path-languages-in-lxml">Path languages in lxml</a></li>
+<li><a class="reference internal" href="#summary-of-lesson-0">Summary of lesson 0</a></li>
+<li><a class="reference internal" href="#lesson-1-parsing-xml-html">Lesson 1: parsing XML/HTML</a></li>
+<li><a class="reference internal" href="#parsing-xml-and-html-from">Parsing XML and HTML from ...</a></li>
+<li><a class="reference internal" href="#example-parsing-from-a-string">Example: parsing from a string</a></li>
+<li><a class="reference internal" href="#parsing-xml-into">Parsing XML into ...</a></li>
+<li><a class="reference internal" href="#summary-of-lesson-1">Summary of lesson 1</a></li>
+<li><a class="reference internal" href="#lesson-2-generating-xml">Lesson 2: generating XML</a></li>
+<li><a class="reference internal" href="#the-example-language-atom">The example language: Atom</a></li>
+<li><a class="reference internal" href="#example-generate-xml-1">Example: generate XML (1)</a></li>
+<li><a class="reference internal" href="#example-generate-xml-2">Example: generate XML (2)</a></li>
+<li><a class="reference internal" href="#be-careful-what-you-type">Be careful what you type!</a></li>
+<li><a class="reference internal" href="#want-more-type-safety">Want more &#8216;type safety&#8217;?</a></li>
+<li><a class="reference internal" href="#the-atom-generator-module">The Atom generator module</a></li>
+<li><a class="reference internal" href="#mixing-languages-1">Mixing languages (1)</a></li>
+<li><a class="reference internal" href="#mixing-languages-2">Mixing languages (2)</a></li>
+<li><a class="reference internal" href="#summary-of-lesson-2">Summary of lesson 2</a></li>
+<li><a class="reference internal" href="#lesson-3-designing-xml-apis">Lesson 3: Designing XML APIs</a></li>
+<li><a class="reference internal" href="#trees-in-c-and-in-python">Trees in C and in Python</a></li>
+<li><a class="reference internal" href="#mapping-python-classes-to-nodes">Mapping Python classes to nodes</a></li>
+<li><a class="reference internal" href="#example-a-simple-element-class-1">Example: a simple Element class (1)</a></li>
+<li><a class="reference internal" href="#example-a-simple-element-class-2">Example: a simple Element class (2)</a></li>
+<li><a class="reference internal" href="#id4">Mapping Python classes to nodes</a></li>
+<li><a class="reference internal" href="#designing-an-atom-api">Designing an Atom API</a></li>
+<li><a class="reference internal" href="#consider-lxml-objectify">Consider lxml.objectify</a></li>
+<li><a class="reference internal" href="#still-room-for-more-convenience">Still room for more convenience</a></li>
+<li><a class="reference internal" href="#incremental-api-design">Incremental API design</a></li>
+<li><a class="reference internal" href="#setting-up-the-element-mapping">Setting up the Element mapping</a></li>
+<li><a class="reference internal" href="#using-your-new-atom-api">Using your new Atom API</a></li>
+<li><a class="reference internal" href="#summary-of-lesson-3">Summary of lesson 3</a></li>
+<li><a class="reference internal" href="#conclusion">Conclusion</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="../_sources/s5/lxml-ep2008.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="../search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="../genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="../main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/sax.html b/doc/sphinx/sax.html
new file mode 100644 (file)
index 0000000..4cea0ed
--- /dev/null
@@ -0,0 +1,209 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Sax support &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="sax-support">
+<h1><a class="toc-backref" href="#id1">Sax support</a><a class="headerlink" href="#sax-support" title="Permalink to this headline">¶</a></h1>
+<p>In this document we&#8217;ll describe lxml&#8217;s SAX support.  lxml has support for
+producing SAX events for an ElementTree or Element.  lxml can also turn SAX
+events into an ElementTree.  The SAX API used by lxml is compatible with that
+in the Python core (xml.sax), so is useful for interfacing lxml with code that
+uses the Python core SAX facilities.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#sax-support" id="id1">Sax support</a><ul>
+<li><a class="reference internal" href="#building-a-tree-from-sax-events" id="id2">Building a tree from SAX events</a></li>
+<li><a class="reference internal" href="#producing-sax-events-from-an-elementtree-or-element" id="id3">Producing SAX events from an ElementTree or Element</a></li>
+<li><a class="reference internal" href="#interfacing-with-pulldom-minidom" id="id4">Interfacing with pulldom/minidom</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="building-a-tree-from-sax-events">
+<h2><a class="toc-backref" href="#id2">Building a tree from SAX events</a><a class="headerlink" href="#building-a-tree-from-sax-events" title="Permalink to this headline">¶</a></h2>
+<p>First of all, lxml has support for building a new tree given SAX events.  To
+do this, we use the special SAX content handler defined by lxml named
+<tt class="docutils literal"><span class="pre">lxml.sax.ElementTreeContentHandler</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">lxml.sax</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span> <span class="o">=</span> <span class="n">lxml</span><span class="o">.</span><span class="n">sax</span><span class="o">.</span><span class="n">ElementTreeContentHandler</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>Now let&#8217;s fire some SAX events at it:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span><span class="o">.</span><span class="n">startElementNS</span><span class="p">((</span><span class="bp">None</span><span class="p">,</span> <span class="s">&#39;a&#39;</span><span class="p">),</span> <span class="s">&#39;a&#39;</span><span class="p">,</span> <span class="p">{})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span><span class="o">.</span><span class="n">startElementNS</span><span class="p">((</span><span class="bp">None</span><span class="p">,</span> <span class="s">&#39;b&#39;</span><span class="p">),</span> <span class="s">&#39;b&#39;</span><span class="p">,</span> <span class="p">{(</span><span class="bp">None</span><span class="p">,</span> <span class="s">&#39;foo&#39;</span><span class="p">):</span> <span class="s">&#39;bar&#39;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span><span class="o">.</span><span class="n">characters</span><span class="p">(</span><span class="s">&#39;Hello world&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span><span class="o">.</span><span class="n">endElementNS</span><span class="p">((</span><span class="bp">None</span><span class="p">,</span> <span class="s">&#39;b&#39;</span><span class="p">),</span> <span class="s">&#39;b&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span><span class="o">.</span><span class="n">endElementNS</span><span class="p">((</span><span class="bp">None</span><span class="p">,</span> <span class="s">&#39;a&#39;</span><span class="p">),</span> <span class="s">&#39;a&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This constructs an equivalent tree.  You can access it through the <tt class="docutils literal"><span class="pre">etree</span></tt>
+property of the handler:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">handler</span><span class="o">.</span><span class="n">etree</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">lxml</span><span class="o">.</span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">())</span>
+<span class="go">b&#39;&lt;a&gt;&lt;b foo=&quot;bar&quot;&gt;Hello world&lt;/b&gt;&lt;/a&gt;&#39;</span>
+</pre></div>
+</div>
+<p>By passing a <tt class="docutils literal"><span class="pre">makeelement</span></tt> function the constructor of
+<tt class="docutils literal"><span class="pre">ElementTreeContentHandler</span></tt>, e.g. the one of a parser you configured, you
+can determine which element class lookup scheme should be used.</p>
+</div>
+<div class="section" id="producing-sax-events-from-an-elementtree-or-element">
+<h2><a class="toc-backref" href="#id3">Producing SAX events from an ElementTree or Element</a><a class="headerlink" href="#producing-sax-events-from-an-elementtree-or-element" title="Permalink to this headline">¶</a></h2>
+<p>Let&#8217;s make a tree we can generate SAX events for:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;b&gt;Text&lt;/b&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">lxml</span><span class="o">.</span><span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>To see whether the correct SAX events are produced, we&#8217;ll write a custom
+content handler.:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">xml.sax.handler</span> <span class="kn">import</span> <span class="n">ContentHandler</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">MyContentHandler</span><span class="p">(</span><span class="n">ContentHandler</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">a_amount</span> <span class="o">=</span> <span class="mi">0</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">b_amount</span> <span class="o">=</span> <span class="mi">0</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="bp">None</span>
+<span class="gp">...</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">startElementNS</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">qname</span><span class="p">,</span> <span class="n">attributes</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">uri</span><span class="p">,</span> <span class="n">localname</span> <span class="o">=</span> <span class="n">name</span>
+<span class="gp">... </span>        <span class="k">if</span> <span class="n">localname</span> <span class="o">==</span> <span class="s">&#39;a&#39;</span><span class="p">:</span>
+<span class="gp">... </span>            <span class="bp">self</span><span class="o">.</span><span class="n">a_amount</span> <span class="o">+=</span> <span class="mi">1</span>
+<span class="gp">... </span>        <span class="k">if</span> <span class="n">localname</span> <span class="o">==</span> <span class="s">&#39;b&#39;</span><span class="p">:</span>
+<span class="gp">... </span>            <span class="bp">self</span><span class="o">.</span><span class="n">b_amount</span> <span class="o">+=</span> <span class="mi">1</span>
+<span class="gp">...</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">characters</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">data</span>
+</pre></div>
+</div>
+<p>Note that it only defines the startElementNS() method and not startElement().
+The SAX event generator in lxml.sax currently only supports namespace-aware
+processing.</p>
+<p>To test the content handler, we can produce SAX events from the tree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span> <span class="o">=</span> <span class="n">MyContentHandler</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">lxml</span><span class="o">.</span><span class="n">sax</span><span class="o">.</span><span class="n">saxify</span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="n">handler</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>This is what we expect:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span><span class="o">.</span><span class="n">a_amount</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span><span class="o">.</span><span class="n">b_amount</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">handler</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;Text&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="interfacing-with-pulldom-minidom">
+<h2><a class="toc-backref" href="#id4">Interfacing with pulldom/minidom</a><a class="headerlink" href="#interfacing-with-pulldom-minidom" title="Permalink to this headline">¶</a></h2>
+<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&#8217;s
+DOM implementation connot generate SAX events from a DOM tree.</p>
+<p>You can use xml.dom.pulldom to build a minidom from lxml:</p>
+<div class="highlight-pycon"><div class="highlight"><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>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">lxml</span><span class="o">.</span><span class="n">sax</span><span class="o">.</span><span class="n">saxify</span><span class="p">(</span><span class="n">tree</span><span class="p">,</span> <span class="n">handler</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>PullDOM makes the result available through the <tt class="docutils literal"><span class="pre">document</span></tt> attribute:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">dom</span> <span class="o">=</span> <span class="n">handler</span><span class="o">.</span><span class="n">document</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">dom</span><span class="o">.</span><span class="n">firstChild</span><span class="o">.</span><span class="n">localName</span><span class="p">)</span>
+<span class="go">a</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Sax support</a><ul>
+<li><a class="reference internal" href="#building-a-tree-from-sax-events">Building a tree from SAX events</a></li>
+<li><a class="reference internal" href="#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li>
+<li><a class="reference internal" href="#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/sax.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/search.html b/doc/sphinx/search.html
new file mode 100644 (file)
index 0000000..9b65c89
--- /dev/null
@@ -0,0 +1,99 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Search &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <script type="text/javascript" src="_static/searchtools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" />
+  <script type="text/javascript">
+    jQuery(function() { Search.loadIndex("searchindex.js"); });
+  </script>
+   
+
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <h1 id="search-documentation">Search</h1>
+  <div id="fallback" class="admonition warning">
+  <script type="text/javascript">$('#fallback').hide();</script>
+  <p>
+    Please activate JavaScript to enable the search
+    functionality.
+  </p>
+  </div>
+  <p>
+    From here you can search these documents. Enter your search
+    words into the box below and click "search". Note that the search
+    function will automatically search for all of the words. Pages
+    containing fewer words won't appear in the result list.
+  </p>
+  <form action="" method="get">
+    <input type="text" name="q" value="" />
+    <input type="submit" value="search" />
+    <span id="search-progress" style="padding-left: 10px"></span>
+  </form>
+  
+  <div id="search-results">
+  
+  </div>
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/sitemap.html b/doc/sphinx/sitemap.html
new file mode 100644 (file)
index 0000000..04a2323
--- /dev/null
@@ -0,0 +1,282 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Sitemap &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="sitemap">
+<h1>Sitemap<a class="headerlink" href="#sitemap" title="Permalink to this headline">¶</a></h1>
+<p>Contents:</p>
+<div class="toctree-wrapper compound">
+<ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="main.html">lxml</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="main.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="main.html#documentation">Documentation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="main.html#download">Download</a></li>
+<li class="toctree-l2"><a class="reference internal" href="main.html#mailing-list">Mailing list</a></li>
+<li class="toctree-l2"><a class="reference internal" href="main.html#bug-tracker">Bug tracker</a></li>
+<li class="toctree-l2"><a class="reference internal" href="main.html#license">License</a></li>
+<li class="toctree-l2"><a class="reference internal" href="main.html#old-versions">Old Versions</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="intro.html">Why lxml?</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#motto">Motto</a></li>
+<li class="toctree-l2"><a class="reference internal" href="intro.html#aims">Aims</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="api.html">APIs specific to lxml.etree</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="api.html#lxml-etree">lxml.etree</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#other-element-apis">Other Element APIs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#trees-and-documents">Trees and Documents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#iteration">Iteration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#error-logging">Error logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#serialisation">Serialisation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#cdata">CDATA</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="performance.html">Benchmarks and Speed</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="performance.html#general-notes">General notes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="performance.html#how-to-read-the-timings">How to read the timings</a></li>
+<li class="toctree-l2"><a class="reference internal" href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li>
+<li class="toctree-l2"><a class="reference internal" href="performance.html#the-elementtree-api">The ElementTree API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="performance.html#xpath">XPath</a></li>
+<li class="toctree-l2"><a class="reference internal" href="performance.html#a-longer-example">A longer example</a></li>
+<li class="toctree-l2"><a class="reference internal" href="performance.html#lxml-objectify">lxml.objectify</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="compatibility.html">ElementTree compatibility of lxml.etree</a></li>
+<li class="toctree-l1"><a class="reference internal" href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="FAQ.html#general-questions">General Questions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="FAQ.html#installation">Installation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="FAQ.html#contributing">Contributing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="FAQ.html#bugs">Bugs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="FAQ.html#id1">Threading</a></li>
+<li class="toctree-l2"><a class="reference internal" href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="tutorial.html">The lxml.etree Tutorial</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#the-element-class">The Element class</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#the-elementtree-class">The ElementTree class</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#namespaces">Namespaces</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#the-e-factory">The E-factory</a></li>
+<li class="toctree-l2"><a class="reference internal" href="tutorial.html#elementpath">ElementPath</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="api.html#lxml-etree">lxml.etree</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#other-element-apis">Other Element APIs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#trees-and-documents">Trees and Documents</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#iteration">Iteration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#error-logging">Error logging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#serialisation">Serialisation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#cdata">CDATA</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li>
+<li class="toctree-l2"><a class="reference internal" href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="parsing.html">Parsing XML and HTML with lxml</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="parsing.html#parsers">Parsers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="parsing.html#the-target-parser-interface">The target parser interface</a></li>
+<li class="toctree-l2"><a class="reference internal" href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li>
+<li class="toctree-l2"><a class="reference internal" href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li>
+<li class="toctree-l2"><a class="reference internal" href="parsing.html#python-unicode-strings">Python unicode strings</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="validation.html">Validation with lxml</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="validation.html#validation-at-parse-time">Validation at parse time</a></li>
+<li class="toctree-l2"><a class="reference internal" href="validation.html#id1">DTD</a></li>
+<li class="toctree-l2"><a class="reference internal" href="validation.html#relaxng">RelaxNG</a></li>
+<li class="toctree-l2"><a class="reference internal" href="validation.html#xmlschema">XMLSchema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="validation.html#id2">Schematron</a></li>
+<li class="toctree-l2"><a class="reference internal" href="validation.html#id3">(Pre-ISO-Schematron)</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="xpathxslt.html">XPath and XSLT with lxml</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="xpathxslt.html#xpath">XPath</a></li>
+<li class="toctree-l2"><a class="reference internal" href="xpathxslt.html#xslt">XSLT</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="objectify.html">lxml.objectify</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li>
+<li class="toctree-l2"><a class="reference internal" href="objectify.html#asserting-a-schema">Asserting a Schema</a></li>
+<li class="toctree-l2"><a class="reference internal" href="objectify.html#objectpath">ObjectPath</a></li>
+<li class="toctree-l2"><a class="reference internal" href="objectify.html#python-data-types">Python data types</a></li>
+<li class="toctree-l2"><a class="reference internal" href="objectify.html#how-data-types-are-matched">How data types are matched</a></li>
+<li class="toctree-l2"><a class="reference internal" href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="lxmlhtml.html">lxml.html</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="lxmlhtml.html#parsing-html">Parsing HTML</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxmlhtml.html#working-with-links">Working with links</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxmlhtml.html#forms">Forms</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxmlhtml.html#html-diff">HTML Diff</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxmlhtml.html#examples">Examples</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="cssselect.html">lxml.cssselect</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cssselect.html#css-selectors">CSS Selectors</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cssselect.html#namespaces">Namespaces</a></li>
+<li class="toctree-l2"><a class="reference internal" href="cssselect.html#limitations">Limitations</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="elementsoup.html">BeautifulSoup Parser</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li>
+<li class="toctree-l2"><a class="reference internal" href="elementsoup.html#entity-handling">Entity handling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li>
+<li class="toctree-l2"><a class="reference internal" href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="html5parser.html">html5lib Parser</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="html5parser.html#function-reference">Function Reference</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="resolvers.html">Document loading and URL resolving</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="resolvers.html#xml-catalogs">XML Catalogs</a></li>
+<li class="toctree-l2"><a class="reference internal" href="resolvers.html#uri-resolvers">URI Resolvers</a></li>
+<li class="toctree-l2"><a class="reference internal" href="resolvers.html#document-loading-in-context">Document loading in context</a></li>
+<li class="toctree-l2"><a class="reference internal" href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="extensions.html">Python extensions for XPath and XSLT</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li>
+<li class="toctree-l2"><a class="reference internal" href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="element_classes.html">Using custom Element classes in lxml</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li>
+<li class="toctree-l2"><a class="reference internal" href="element_classes.html#element-initialization">Element initialization</a></li>
+<li class="toctree-l2"><a class="reference internal" href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li>
+<li class="toctree-l2"><a class="reference internal" href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li>
+<li class="toctree-l2"><a class="reference internal" href="element_classes.html#id1">Implementing namespaces</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sax.html">Sax support</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="capi.html">The public C-API of lxml.etree</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li>
+<li class="toctree-l2"><a class="reference internal" href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="build.html">How to build lxml from source</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="build.html#cython">Cython</a></li>
+<li class="toctree-l2"><a class="reference internal" href="build.html#github-git-and-hg">Github, git and hg</a></li>
+<li class="toctree-l2"><a class="reference internal" href="build.html#id2">Setuptools</a></li>
+<li class="toctree-l2"><a class="reference internal" href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li>
+<li class="toctree-l2"><a class="reference internal" href="build.html#building-an-egg">Building an egg</a></li>
+<li class="toctree-l2"><a class="reference internal" href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li>
+<li class="toctree-l2"><a class="reference internal" href="build.html#static-linking-on-windows">Static linking on Windows</a></li>
+<li class="toctree-l2"><a class="reference internal" href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="lxml-source-howto.html">How to read the source of lxml</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxml-source-howto.html#where-to-start">Where to start?</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxml-source-howto.html#python-modules">Python modules</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li>
+<li class="toctree-l2"><a class="reference internal" href="lxml-source-howto.html#lxml-html">lxml.html</a></li>
+</ul>
+</li>
+<li class="toctree-l1 current"><a class="current reference internal" href="">Sitemap</a></li>
+</ul>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/sitemap.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/tutorial.html b/doc/sphinx/tutorial.html
new file mode 100644 (file)
index 0000000..76fba5c
--- /dev/null
@@ -0,0 +1,1167 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <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" />
+
+    <title>The lxml.etree Tutorial &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="the-lxml-etree-tutorial">
+<h1><a class="toc-backref" href="#id2">The lxml.etree Tutorial</a><a class="headerlink" href="#the-lxml-etree-tutorial" title="Permalink to this headline">¶</a></h1>
+<table class="docutils field-list" frame="void" rules="none">
+<col class="field-name" />
+<col class="field-body" />
+<tbody valign="top">
+<tr class="field"><th class="field-name">Author:</th><td class="field-body">Stefan Behnel</td>
+</tr>
+</tbody>
+</table>
+<p>This is a tutorial on XML processing with <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>.  It briefly
+overviews the main concepts of the <a class="reference external" href="http://effbot.org/zone/element-index.htm#documentation">ElementTree API</a>, and some simple
+enhancements that make your life as a programmer easier.</p>
+<p>For a complete reference of the API, see the <a class="reference external" href="api/index.html">generated API
+documentation</a>.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#the-lxml-etree-tutorial" id="id2">The lxml.etree Tutorial</a><ul>
+<li><a class="reference internal" href="#the-element-class" id="id3">The Element class</a><ul>
+<li><a class="reference internal" href="#elements-are-lists" id="id4">Elements are lists</a></li>
+<li><a class="reference internal" href="#elements-carry-attributes" id="id5">Elements carry attributes</a></li>
+<li><a class="reference internal" href="#elements-contain-text" id="id6">Elements contain text</a></li>
+<li><a class="reference internal" href="#using-xpath-to-find-text" id="id7">Using XPath to find text</a></li>
+<li><a class="reference internal" href="#tree-iteration" id="id8">Tree iteration</a></li>
+<li><a class="reference internal" href="#serialisation" id="id9">Serialisation</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#the-elementtree-class" id="id10">The ElementTree class</a></li>
+<li><a class="reference internal" href="#parsing-from-strings-and-files" id="id11">Parsing from strings and files</a><ul>
+<li><a class="reference internal" href="#the-fromstring-function" id="id12">The fromstring() function</a></li>
+<li><a class="reference internal" href="#the-xml-function" id="id13">The XML() function</a></li>
+<li><a class="reference internal" href="#the-parse-function" id="id14">The parse() function</a></li>
+<li><a class="reference internal" href="#parser-objects" id="id15">Parser objects</a></li>
+<li><a class="reference internal" href="#incremental-parsing" id="id16">Incremental parsing</a></li>
+<li><a class="reference internal" href="#event-driven-parsing" id="id17">Event-driven parsing</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#namespaces" id="id18">Namespaces</a></li>
+<li><a class="reference internal" href="#the-e-factory" id="id19">The E-factory</a></li>
+<li><a class="reference internal" href="#elementpath" id="id20">ElementPath</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<p>A common way to import <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> is as follows:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+</pre></div>
+</div>
+<p>If your code only uses the ElementTree API and does not rely on any
+functionality that is specific to <tt class="docutils literal"><span class="pre">lxml.etree</span></tt>, you can also use (any part
+of) the following import chain as a fall-back to the original ElementTree:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="k">try</span><span class="p">:</span>
+  <span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+  <span class="k">print</span><span class="p">(</span><span class="s">&quot;running with lxml.etree&quot;</span><span class="p">)</span>
+<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
+  <span class="k">try</span><span class="p">:</span>
+    <span class="c"># Python 2.5</span>
+    <span class="kn">import</span> <span class="nn">xml.etree.cElementTree</span> <span class="kn">as</span> <span class="nn">etree</span>
+    <span class="k">print</span><span class="p">(</span><span class="s">&quot;running with cElementTree on Python 2.5+&quot;</span><span class="p">)</span>
+  <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
+    <span class="k">try</span><span class="p">:</span>
+      <span class="c"># Python 2.5</span>
+      <span class="kn">import</span> <span class="nn">xml.etree.ElementTree</span> <span class="kn">as</span> <span class="nn">etree</span>
+      <span class="k">print</span><span class="p">(</span><span class="s">&quot;running with ElementTree on Python 2.5+&quot;</span><span class="p">)</span>
+    <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
+      <span class="k">try</span><span class="p">:</span>
+        <span class="c"># normal cElementTree install</span>
+        <span class="kn">import</span> <span class="nn">cElementTree</span> <span class="kn">as</span> <span class="nn">etree</span>
+        <span class="k">print</span><span class="p">(</span><span class="s">&quot;running with cElementTree&quot;</span><span class="p">)</span>
+      <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
+        <span class="k">try</span><span class="p">:</span>
+          <span class="c"># normal ElementTree install</span>
+          <span class="kn">import</span> <span class="nn">elementtree.ElementTree</span> <span class="kn">as</span> <span class="nn">etree</span>
+          <span class="k">print</span><span class="p">(</span><span class="s">&quot;running with ElementTree&quot;</span><span class="p">)</span>
+        <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
+          <span class="k">print</span><span class="p">(</span><span class="s">&quot;Failed to import ElementTree from any known place&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>To aid in writing portable code, this tutorial makes it clear in the examples
+which part of the presented API is an extension of lxml.etree over the
+original <a class="reference external" href="http://effbot.org/zone/element-index.htm#documentation">ElementTree API</a>, as defined by Fredrik Lundh&#8217;s <a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree
+library</a>.</p>
+<div class="section" id="the-element-class">
+<h2><a class="toc-backref" href="#id3">The Element class</a><a class="headerlink" href="#the-element-class" title="Permalink to this headline">¶</a></h2>
+<p>An <tt class="docutils literal"><span class="pre">Element</span></tt> is the main container object for the ElementTree API.  Most of
+the XML tree functionality is accessed through this class.  Elements are
+easily created through the <tt class="docutils literal"><span class="pre">Element</span></tt> factory:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>The XML tag name of elements is accessed through the <tt class="docutils literal"><span class="pre">tag</span></tt> property:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+</pre></div>
+</div>
+<p>Elements are organised in an XML tree structure.  To create child elements and
+add them to a parent element, you can use the <tt class="docutils literal"><span class="pre">append()</span></tt> method:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><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">Element</span><span class="p">(</span><span class="s">&quot;child1&quot;</span><span class="p">)</span> <span class="p">)</span>
+</pre></div>
+</div>
+<p>However, this is so common that there is a shorter and much more efficient way
+to do this: the <tt class="docutils literal"><span class="pre">SubElement</span></tt> factory.  It accepts the same arguments as the
+<tt class="docutils literal"><span class="pre">Element</span></tt> factory, but additionally requires the parent as first argument:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">child2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;child2&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">child3</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;child3&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>To see that this is really XML, you can serialise the tree you have created:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><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&gt;</span>
+<span class="go">  &lt;child1/&gt;</span>
+<span class="go">  &lt;child2/&gt;</span>
+<span class="go">  &lt;child3/&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<div class="section" id="elements-are-lists">
+<h3><a class="toc-backref" href="#id4">Elements are lists</a><a class="headerlink" href="#elements-are-lists" title="Permalink to this headline">¶</a></h3>
+<p>To make the access to these subelements as easy and straight forward as
+possible, elements behave like normal Python lists:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">child</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">child1</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">3</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="c"># lxml.etree only!</span>
+<span class="go">1</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">children</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">child1</span>
+<span class="go">child2</span>
+<span class="go">child3</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;child0&quot;</span><span class="p">))</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">start</span> <span class="o">=</span> <span class="n">root</span><span class="p">[:</span><span class="mi">1</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">end</span>   <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">:]</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">start</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">child0</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">end</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">child3</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="c"># this moves the element in lxml.etree!</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">root</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">child3</span>
+<span class="go">child1</span>
+<span class="go">child2</span>
+</pre></div>
+</div>
+<p>Prior to ElementTree 1.3 and lxml 2.0, you could also check the truth value of
+an Element to see if it has children, i.e. if the list of children is empty.
+This is no longer supported as people tend to find it surprising that a
+non-None reference to an existing Element can evaluate to False.  Instead, use
+<tt class="docutils literal"><span class="pre">len(element)</span></tt>, which is both more explicit and less error prone.</p>
+<p>Note in the examples that the last element was <em>moved</em> to a different position
+in the last example.  This is a difference from the original ElementTree (and
+from lists), where elements can sit in multiple positions of any number of
+trees.  In lxml.etree, elements can only sit in one position of one tree at a
+time.</p>
+<p>If you want to <em>copy</em> an element to a different position, consider creating an
+independent <em>deep copy</em> using the <tt class="docutils literal"><span class="pre">copy</span></tt> module from Python&#8217;s standard
+library:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">deepcopy</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">element</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;neu&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">element</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> <span class="n">deepcopy</span><span class="p">(</span><span class="n">root</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">element</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">child1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">([</span> <span class="n">c</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">root</span> <span class="p">])</span>
+<span class="go">[&#39;child3&#39;, &#39;child1&#39;, &#39;child2&#39;]</span>
+</pre></div>
+</div>
+<p>The way up in the tree is provided through the <tt class="docutils literal"><span class="pre">getparent()</span></tt> method:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="ow">is</span> <span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span>  <span class="c"># lxml.etree only!</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>The siblings (or neighbours) of an element are accessed as next and previous
+elements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="n">root</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getprevious</span><span class="p">()</span> <span class="c"># lxml.etree only!</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">is</span> <span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getnext</span><span class="p">()</span> <span class="c"># lxml.etree only!</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="elements-carry-attributes">
+<h3><a class="toc-backref" href="#id5">Elements carry attributes</a><a class="headerlink" href="#elements-carry-attributes" title="Permalink to this headline">¶</a></h3>
+<p>XML elements support attributes.  You can create them directly in the Element
+factory:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">,</span> <span class="n">interesting</span><span class="o">=</span><span class="s">&quot;totally&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root interesting=&quot;totally&quot;/&gt;&#39;</span>
+</pre></div>
+</div>
+<p>Fast and direct access to these attributes is provided by the <tt class="docutils literal"><span class="pre">set()</span></tt> and
+<tt class="docutils literal"><span class="pre">get()</span></tt> methods of elements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;interesting&quot;</span><span class="p">))</span>
+<span class="go">totally</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">&quot;interesting&quot;</span><span class="p">,</span> <span class="s">&quot;somewhat&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;interesting&quot;</span><span class="p">))</span>
+<span class="go">somewhat</span>
+</pre></div>
+</div>
+<p>However, a very convenient way of dealing with them is through the dictionary
+interface of the <tt class="docutils literal"><span class="pre">attrib</span></tt> property:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">attributes</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">attrib</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">attributes</span><span class="p">[</span><span class="s">&quot;interesting&quot;</span><span class="p">])</span>
+<span class="go">somewhat</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;hello&quot;</span><span class="p">))</span>
+<span class="go">None</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">attributes</span><span class="p">[</span><span class="s">&quot;hello&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&quot;Guten Tag&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">attributes</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;hello&quot;</span><span class="p">))</span>
+<span class="go">Guten Tag</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;hello&quot;</span><span class="p">))</span>
+<span class="go">Guten Tag</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="elements-contain-text">
+<h3><a class="toc-backref" href="#id6">Elements contain text</a><a class="headerlink" href="#elements-contain-text" title="Permalink to this headline">¶</a></h3>
+<p>Elements can contain text:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;TEXT&quot;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="go">TEXT</span>
+
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;TEXT&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+<p>In many XML documents (<em>data-centric</em> documents), this is the only place where
+text can be found.  It is encapsulated by a leaf tag at the very bottom of the
+tree hierarchy.</p>
+<p>However, if XML is used for tagged text documents such as (X)HTML, text can
+also appear between different elements, right in the middle of the tree:</p>
+<div class="highlight-html"><div class="highlight"><pre><span class="nt">&lt;html&gt;&lt;body&gt;</span>Hello<span class="nt">&lt;br/&gt;</span>World<span class="nt">&lt;/body&gt;&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>Here, the <tt class="docutils literal"><span class="pre">&lt;br/&gt;</span></tt> tag is surrounded by text.  This is often referred to as
+<em>document-style</em> or <em>mixed-content</em> XML.  Elements support this through their
+<tt class="docutils literal"><span class="pre">tail</span></tt> property.  It contains the text that directly follows the element, up
+to the next element in the XML tree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">html</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;html&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">html</span><span class="p">,</span> <span class="s">&quot;body&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;TEXT&quot;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">b&#39;&lt;html&gt;&lt;body&gt;TEXT&lt;/body&gt;&lt;/html&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">br</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">body</span><span class="p">,</span> <span class="s">&quot;br&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">b&#39;&lt;html&gt;&lt;body&gt;TEXT&lt;br/&gt;&lt;/body&gt;&lt;/html&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">br</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="s">&quot;TAIL&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="go">b&#39;&lt;html&gt;&lt;body&gt;TEXT&lt;br/&gt;TAIL&lt;/body&gt;&lt;/html&gt;&#39;</span>
+</pre></div>
+</div>
+<p>The two properties <tt class="docutils literal"><span class="pre">.text</span></tt> and <tt class="docutils literal"><span class="pre">.tail</span></tt> are enough to represent any
+text content in an XML document.  This way, the ElementTree API does
+not require any <a class="reference external" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1312295772">special text nodes</a> in addition to the Element
+class, that tend to get in the way fairly often (as you might know
+from classic <a class="reference external" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html">DOM</a> APIs).</p>
+<p>However, there are cases where the tail text also gets in the way.
+For example, when you serialise an Element from within the tree, you
+do not always want its tail text in the result (although you would
+still want the tail text of its children).  For this purpose, the
+<tt class="docutils literal"><span class="pre">tostring()</span></tt> function accepts the keyword argument <tt class="docutils literal"><span class="pre">with_tail</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">br</span><span class="p">)</span>
+<span class="go">b&#39;&lt;br/&gt;TAIL&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">br</span><span class="p">,</span> <span class="n">with_tail</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> <span class="c"># lxml.etree only!</span>
+<span class="go">b&#39;&lt;br/&gt;&#39;</span>
+</pre></div>
+</div>
+<p>If you want to read <em>only</em> the text, i.e. without any intermediate
+tags, you have to recursively concatenate all <tt class="docutils literal"><span class="pre">text</span></tt> and <tt class="docutils literal"><span class="pre">tail</span></tt>
+attributes in the correct order.  Again, the <tt class="docutils literal"><span class="pre">tostring()</span></tt> function
+comes to the rescue, this time using the <tt class="docutils literal"><span class="pre">method</span></tt> keyword:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">html</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&quot;text&quot;</span><span class="p">)</span>
+<span class="go">b&#39;TEXTTAIL&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="using-xpath-to-find-text">
+<h3><a class="toc-backref" href="#id7">Using XPath to find text</a><a class="headerlink" href="#using-xpath-to-find-text" title="Permalink to this headline">¶</a></h3>
+<p>Another way to extract the text content of a tree is <a class="reference external" href="xpathxslt.html#xpath">XPath</a>, which
+also allows you to extract the separate text chunks into a list:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">html</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;string()&quot;</span><span class="p">))</span> <span class="c"># lxml.etree only!</span>
+<span class="go">TEXTTAIL</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">html</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;//text()&quot;</span><span class="p">))</span> <span class="c"># lxml.etree only!</span>
+<span class="go">[&#39;TEXT&#39;, &#39;TAIL&#39;]</span>
+</pre></div>
+</div>
+<p>If you want to use this more often, you can wrap it in a function:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">build_text_list</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//text()&quot;</span><span class="p">)</span> <span class="c"># lxml.etree only!</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">build_text_list</span><span class="p">(</span><span class="n">html</span><span class="p">))</span>
+<span class="go">[&#39;TEXT&#39;, &#39;TAIL&#39;]</span>
+</pre></div>
+</div>
+<p>Note that a string result returned by XPath is a special &#8216;smart&#8217;
+object that knows about its origins.  You can ask it where it came
+from through its <tt class="docutils literal"><span class="pre">getparent()</span></tt> method, just as you would with
+Elements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">texts</span> <span class="o">=</span> <span class="n">build_text_list</span><span class="p">(</span><span class="n">html</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+<span class="go">TEXT</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parent</span> <span class="o">=</span> <span class="n">texts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">parent</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">body</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+<span class="go">TAIL</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">br</span>
+</pre></div>
+</div>
+<p>You can also find out if it&#8217;s normal text content or tail text:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">is_text</span><span class="p">)</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">is_text</span><span class="p">)</span>
+<span class="go">False</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">texts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">is_tail</span><span class="p">)</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>While this works for the results of the <tt class="docutils literal"><span class="pre">text()</span></tt> function, lxml will
+not tell you the origin of a string value that was constructed by the
+XPath functions <tt class="docutils literal"><span class="pre">string()</span></tt> or <tt class="docutils literal"><span class="pre">concat()</span></tt>:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">stringify</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;string()&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">stringify</span><span class="p">(</span><span class="n">html</span><span class="p">))</span>
+<span class="go">TEXTTAIL</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">stringify</span><span class="p">(</span><span class="n">html</span><span class="p">)</span><span class="o">.</span><span class="n">getparent</span><span class="p">())</span>
+<span class="go">None</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="tree-iteration">
+<h3><a class="toc-backref" href="#id8">Tree iteration</a><a class="headerlink" href="#tree-iteration" title="Permalink to this headline">¶</a></h3>
+<p>For problems like the above, where you want to recursively traverse the tree
+and do something with its elements, tree iteration is a very convenient
+solution.  Elements provide a tree iterator for this purpose.  It yields
+elements in <em>document order</em>, i.e. in the order their tags would appear if you
+serialised the tree to XML:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;root&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;child&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Child 1&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;child&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Child 2&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&quot;another&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Child 3&quot;</span>
+
+<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&gt;</span>
+<span class="go">  &lt;child&gt;Child 1&lt;/child&gt;</span>
+<span class="go">  &lt;child&gt;Child 2&lt;/child&gt;</span>
+<span class="go">  &lt;another&gt;Child 3&lt;/another&gt;</span>
+<span class="go">&lt;/root&gt;</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">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</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="go">root - None</span>
+<span class="go">child - Child 1</span>
+<span class="go">child - Child 2</span>
+<span class="go">another - Child 3</span>
+</pre></div>
+</div>
+<p>If you know you are only interested in a single tag, you can pass its name to
+<tt class="docutils literal"><span class="pre">iter()</span></tt> to have it filter for you:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><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="s">&quot;child&quot;</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</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="go">child - Child 1</span>
+<span class="go">child - Child 2</span>
+</pre></div>
+</div>
+<p>By default, iteration yields all nodes in the tree, including
+ProcessingInstructions, Comments and Entity instances.  If you want to
+make sure only Element objects are returned, you can pass the
+<tt class="docutils literal"><span class="pre">Element</span></tt> factory as tag parameter:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><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">Entity</span><span class="p">(</span><span class="s">&quot;#234&quot;</span><span class="p">))</span>
+<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">&quot;some comment&quot;</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">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</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">&quot;SPECIAL: </span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</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>
+<span class="go">root - None</span>
+<span class="go">child - Child 1</span>
+<span class="go">child - Child 2</span>
+<span class="go">another - Child 3</span>
+<span class="go">SPECIAL: &amp;#234; - &amp;#234;</span>
+<span class="go">SPECIAL: &lt;!--some comment--&gt; - some comment</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="n">tag</span><span class="o">=</span><span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> - </span><span class="si">%s</span><span class="s">&quot;</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="go">root - None</span>
+<span class="go">child - Child 1</span>
+<span class="go">child - Child 2</span>
+<span class="go">another - Child 3</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="n">tag</span><span class="o">=</span><span class="n">etree</span><span class="o">.</span><span class="n">Entity</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</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="go">&amp;#234;</span>
+</pre></div>
+</div>
+<p>In lxml.etree, elements provide <a class="reference external" href="api.html#iteration">further iterators</a> for all directions in the
+tree: children, parents (or rather ancestors) and siblings.</p>
+</div>
+<div class="section" id="serialisation">
+<h3><a class="toc-backref" href="#id9">Serialisation</a><a class="headerlink" href="#serialisation" title="Permalink to this headline">¶</a></h3>
+<p>Serialisation commonly uses the <tt class="docutils literal"><span class="pre">tostring()</span></tt> function that returns a
+string, or the <tt class="docutils literal"><span class="pre">ElementTree.write()</span></tt> method that writes to a file, a
+file-like object, or a URL (via FTP PUT or HTTP POST).  Both calls accept
+the same keyword arguments like <tt class="docutils literal"><span class="pre">pretty_print</span></tt> for formatted output
+or <tt class="docutils literal"><span class="pre">encoding</span></tt> to select a specific output encoding other than plain
+ASCII:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;root&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;/root&gt;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;/root&gt;&#39;</span>
+
+<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">xml_declaration</span><span class="o">=</span><span class="bp">True</span><span class="p">))</span>
+<span class="go">&lt;?xml version=&#39;1.0&#39; encoding=&#39;ASCII&#39;?&gt;</span>
+<span class="go">&lt;root&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;/root&gt;</span>
+
+<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">encoding</span><span class="o">=</span><span class="s">&#39;iso-8859-1&#39;</span><span class="p">))</span>
+<span class="go">&lt;?xml version=&#39;1.0&#39; encoding=&#39;iso-8859-1&#39;?&gt;</span>
+<span class="go">&lt;root&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;/root&gt;</span>
+
+<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&gt;</span>
+<span class="go">  &lt;a&gt;</span>
+<span class="go">    &lt;b/&gt;</span>
+<span class="go">  &lt;/a&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<p>Note that pretty printing appends a newline at the end.</p>
+<p>Since lxml 2.0 (and ElementTree 1.3), the serialisation functions can
+do more than XML serialisation.  You can serialise to HTML or extract
+the text content by passing the <tt class="docutils literal"><span class="pre">method</span></tt> keyword:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span>
+<span class="gp">... </span>   <span class="s">&#39;&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Hello&lt;br/&gt;World&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </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="c"># default: method = &#39;xml&#39;</span>
+<span class="go">b&#39;&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Hello&lt;br/&gt;World&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&#39;xml&#39;</span><span class="p">)</span> <span class="c"># same as above</span>
+<span class="go">b&#39;&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Hello&lt;br/&gt;World&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&#39;html&#39;</span><span class="p">)</span>
+<span class="go">b&#39;&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;Hello&lt;br&gt;World&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&#39;</span>
+
+<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">method</span><span class="o">=</span><span class="s">&#39;html&#39;</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;html&gt;</span>
+<span class="go">&lt;head&gt;&lt;/head&gt;</span>
+<span class="go">&lt;body&gt;&lt;p&gt;Hello&lt;br&gt;World&lt;/p&gt;&lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&#39;text&#39;</span><span class="p">)</span>
+<span class="go">b&#39;HelloWorld&#39;</span>
+</pre></div>
+</div>
+<p>As for XML serialisation, the default encoding for plain text
+serialisation is ASCII:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">br</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;.//br&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">br</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="s">u&#39;W</span><span class="se">\xf6</span><span class="s">rld&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&#39;text&#39;</span><span class="p">)</span>  
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">UnicodeEncodeError</span>: <span class="n">&#39;ascii&#39; codec can&#39;t encode character u&#39;\xf6&#39; ...</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&#39;text&#39;</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s">&quot;UTF-8&quot;</span><span class="p">)</span>
+<span class="go">b&#39;HelloW\xc3\xb6rld&#39;</span>
+</pre></div>
+</div>
+<p>Here, serialising to a Python unicode string instead of a byte string
+might become handy.  Just pass the <tt class="docutils literal"><span class="pre">unicode</span></tt> type as encoding:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </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">encoding</span><span class="o">=</span><span class="nb">unicode</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">&#39;text&#39;</span><span class="p">)</span>
+<span class="go">u&#39;HelloW\xf6rld&#39;</span>
+</pre></div>
+</div>
+<p>The W3C has a good <a class="reference external" href="http://www.w3.org/International/tutorials/tutorial-char-enc/">article about the Unicode character set and
+character encodings</a>.</p>
+</div>
+</div>
+<div class="section" id="the-elementtree-class">
+<h2><a class="toc-backref" href="#id10">The ElementTree class</a><a class="headerlink" href="#the-elementtree-class" title="Permalink to this headline">¶</a></h2>
+<p>An <tt class="docutils literal"><span class="pre">ElementTree</span></tt> is mainly a document wrapper around a tree with a
+root node.  It provides a couple of methods for parsing, serialisation
+and general document handling.  One of the bigger differences is that
+it serialises as a complete document, as opposed to a single
+<tt class="docutils literal"><span class="pre">Element</span></tt>.  This includes top-level processing instructions and
+comments, as well as a DOCTYPE and other DTD content in the document:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
+<span class="gp">... </span><span class="s">&lt;!DOCTYPE root SYSTEM &quot;test&quot; [ &lt;!ENTITY tasty &quot;eggs&quot;&gt; ]&gt;</span>
+<span class="gp">... </span><span class="s">&lt;root&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a&gt;&amp;tasty;&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">))</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">docinfo</span><span class="o">.</span><span class="n">doctype</span><span class="p">)</span>
+<span class="go">&lt;!DOCTYPE root SYSTEM &quot;test&quot;&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="c"># lxml 1.3.4 and later</span>
+<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">tree</span><span class="p">))</span>
+<span class="go">&lt;!DOCTYPE root SYSTEM &quot;test&quot; [</span>
+<span class="go">&lt;!ENTITY tasty &quot;eggs&quot;&gt;</span>
+<span class="go">]&gt;</span>
+<span class="go">&lt;root&gt;</span>
+<span class="go">  &lt;a&gt;eggs&lt;/a&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="c"># lxml 1.3.4 and later</span>
+<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">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">())))</span>
+<span class="go">&lt;!DOCTYPE root SYSTEM &quot;test&quot; [</span>
+<span class="go">&lt;!ENTITY tasty &quot;eggs&quot;&gt;</span>
+<span class="go">]&gt;</span>
+<span class="go">&lt;root&gt;</span>
+<span class="go">  &lt;a&gt;eggs&lt;/a&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="c"># ElementTree and lxml &lt;= 1.3.3</span>
+<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">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()))</span>
+<span class="go">&lt;root&gt;</span>
+<span class="go">  &lt;a&gt;eggs&lt;/a&gt;</span>
+<span class="go">&lt;/root&gt;</span>
+</pre></div>
+</div>
+<p>Note that this has changed in lxml 1.3.4 to match the behaviour of
+lxml 2.0.  Before, the examples were serialised without DTD content,
+which made lxml loose DTD information in an input-output cycle.</p>
+</div>
+<div class="section" id="parsing-from-strings-and-files">
+<h2><a class="toc-backref" href="#id11">Parsing from strings and files</a><a class="headerlink" href="#parsing-from-strings-and-files" title="Permalink to this headline">¶</a></h2>
+<p><tt class="docutils literal"><span class="pre">lxml.etree</span></tt> supports parsing XML in a number of ways and from all
+important sources, namely strings, files, URLs (http/ftp) and
+file-like objects.  The main parse functions are <tt class="docutils literal"><span class="pre">fromstring()</span></tt> and
+<tt class="docutils literal"><span class="pre">parse()</span></tt>, both called with the source as first argument.  By
+default, they use the standard parser, but you can always pass a
+different parser as second argument.</p>
+<div class="section" id="the-fromstring-function">
+<h3><a class="toc-backref" href="#id12">The fromstring() function</a><a class="headerlink" href="#the-fromstring-function" title="Permalink to this headline">¶</a></h3>
+<p>The <tt class="docutils literal"><span class="pre">fromstring()</span></tt> function is the easiest way to parse a string:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">some_xml_data</span> <span class="o">=</span> <span class="s">&quot;&lt;root&gt;data&lt;/root&gt;&quot;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">some_xml_data</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;data&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="the-xml-function">
+<h3><a class="toc-backref" href="#id13">The XML() function</a><a class="headerlink" href="#the-xml-function" title="Permalink to this headline">¶</a></h3>
+<p>The <tt class="docutils literal"><span class="pre">XML()</span></tt> function behaves like the <tt class="docutils literal"><span class="pre">fromstring()</span></tt> function, but is
+commonly used to write XML literals right into the source:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;data&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;data&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="the-parse-function">
+<h3><a class="toc-backref" href="#id14">The parse() function</a><a class="headerlink" href="#the-parse-function" title="Permalink to this headline">¶</a></h3>
+<p>The <tt class="docutils literal"><span class="pre">parse()</span></tt> function is used to parse from files and file-like objects:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">some_file_like</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;data&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">some_file_like</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">)</span>
+<span class="go">b&#39;&lt;root&gt;data&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+<p>Note that <tt class="docutils literal"><span class="pre">parse()</span></tt> returns an ElementTree object, not an Element object as
+the string parser functions:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">root</span>
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;data&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+<p>The reasoning behind this difference is that <tt class="docutils literal"><span class="pre">parse()</span></tt> returns a
+complete document from a file, while the string parsing functions are
+commonly used to parse XML fragments.</p>
+<p>The <tt class="docutils literal"><span class="pre">parse()</span></tt> function supports any of the following sources:</p>
+<ul class="simple">
+<li>an open file object</li>
+<li>a file-like object that has a <tt class="docutils literal"><span class="pre">.read(byte_count)</span></tt> method returning
+a byte string on each call</li>
+<li>a filename string</li>
+<li>an HTTP or FTP URL string</li>
+</ul>
+<p>Note that passing a filename or URL is usually faster than passing an
+open file.</p>
+</div>
+<div class="section" id="parser-objects">
+<h3><a class="toc-backref" href="#id15">Parser objects</a><a class="headerlink" href="#parser-objects" title="Permalink to this headline">¶</a></h3>
+<p>By default, <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> uses a standard parser with a default setup.  If
+you want to configure the parser, you can create a you instance:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">remove_blank_text</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="c"># lxml.etree only!</span>
+</pre></div>
+</div>
+<p>This creates a parser that removes empty text between tags while parsing,
+which can reduce the size of the tree and avoid dangling tail text if you know
+that whitespace-only content is not meaningful for your data.  An example:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;  &lt;a/&gt;   &lt;b&gt;  &lt;/b&gt;     &lt;/root&gt;&quot;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;&lt;a/&gt;&lt;b&gt;  &lt;/b&gt;&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+<p>Note that the whitespace content inside the <tt class="docutils literal"><span class="pre">&lt;b&gt;</span></tt> tag was not removed, as
+content at leaf elements tends to be data content (even if blank).  You can
+easily remove it in an additional step by traversing the tree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><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="s">&quot;*&quot;</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">element</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span>
+<span class="gp">... </span>        <span class="n">element</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="bp">None</span>
+
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;&lt;a/&gt;&lt;b/&gt;&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+<p>See <tt class="docutils literal"><span class="pre">help(etree.XMLParser)</span></tt> to find out about the available parser options.</p>
+</div>
+<div class="section" id="incremental-parsing">
+<h3><a class="toc-backref" href="#id16">Incremental parsing</a><a class="headerlink" href="#incremental-parsing" title="Permalink to this headline">¶</a></h3>
+<p><tt class="docutils literal"><span class="pre">lxml.etree</span></tt> provides two ways for incremental step-by-step parsing.  One is
+through file-like objects, where it calls the <tt class="docutils literal"><span class="pre">read()</span></tt> method repeatedly.
+This is best used where the data arrives from a source like <tt class="docutils literal"><span class="pre">urllib</span></tt> or any
+other file-like object that can provide data on request.  Note that the parser
+will block and wait until data becomes available in this case:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">DataSource</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="n">data</span> <span class="o">=</span> <span class="p">[</span> <span class="n">b</span><span class="s">&quot;&lt;roo&quot;</span><span class="p">,</span> <span class="n">b</span><span class="s">&quot;t&gt;&lt;&quot;</span><span class="p">,</span> <span class="n">b</span><span class="s">&quot;a/&quot;</span><span class="p">,</span> <span class="n">b</span><span class="s">&quot;&gt;&lt;&quot;</span><span class="p">,</span> <span class="n">b</span><span class="s">&quot;/root&gt;&quot;</span> <span class="p">]</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">read</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">requested_size</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="k">try</span><span class="p">:</span>
+<span class="gp">... </span>            <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="k">except</span> <span class="ne">IndexError</span><span class="p">:</span>
+<span class="gp">... </span>            <span class="k">return</span> <span class="n">b</span><span class="s">&#39;&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">DataSource</span><span class="p">())</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">tree</span><span class="p">)</span>
+<span class="go">b&#39;&lt;root&gt;&lt;a/&gt;&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+<p>The second way is through a feed parser interface, given by the <tt class="docutils literal"><span class="pre">feed(data)</span></tt>
+and <tt class="docutils literal"><span class="pre">close()</span></tt> methods:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">()</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s">&quot;&lt;roo&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s">&quot;t&gt;&lt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s">&quot;a/&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s">&quot;&gt;&lt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s">&quot;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root&gt;&lt;a/&gt;&lt;/root&gt;&#39;</span>
+</pre></div>
+</div>
+<p>Here, you can interrupt the parsing process at any time and continue it later
+on with another call to the <tt class="docutils literal"><span class="pre">feed()</span></tt> method.  This comes in handy if you
+want to avoid blocking calls to the parser, e.g. in frameworks like Twisted,
+or whenever data comes in slowly or in chunks and you want to do other things
+while waiting for the next chunk.</p>
+<p>After calling the <tt class="docutils literal"><span class="pre">close()</span></tt> method (or when an exception was raised
+by the parser), you can reuse the parser by calling its <tt class="docutils literal"><span class="pre">feed()</span></tt>
+method again:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span><span class="o">.</span><span class="n">feed</span><span class="p">(</span><span class="s">&quot;&lt;root/&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </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="go">b&#39;&lt;root/&gt;&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="event-driven-parsing">
+<h3><a class="toc-backref" href="#id17">Event-driven parsing</a><a class="headerlink" href="#event-driven-parsing" title="Permalink to this headline">¶</a></h3>
+<p>Sometimes, all you need from a document is a small fraction somewhere deep
+inside the tree, so parsing the whole tree into memory, traversing it and
+dropping it can be too much overhead.  <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> supports this use case
+with two event-driven parser interfaces, one that generates parser events
+while building the tree (<tt class="docutils literal"><span class="pre">iterparse</span></tt>), and one that does not build the tree
+at all, and instead calls feedback methods on a target object in a SAX-like
+fashion.</p>
+<p>Here is a simple <tt class="docutils literal"><span class="pre">iterparse()</span></tt> example:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">some_file_like</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;data&lt;/a&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">event</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">some_file_like</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">, </span><span class="si">%4s</span><span class="s">, </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</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="go">end,    a, data</span>
+<span class="go">end, root, None</span>
+</pre></div>
+</div>
+<p>By default, <tt class="docutils literal"><span class="pre">iterparse()</span></tt> only generates events when it is done parsing an
+element, but you can control this through the <tt class="docutils literal"><span class="pre">events</span></tt> keyword argument:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">some_file_like</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;data&lt;/a&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">event</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">some_file_like</span><span class="p">,</span>
+<span class="gp">... </span>                                      <span class="n">events</span><span class="o">=</span><span class="p">(</span><span class="s">&quot;start&quot;</span><span class="p">,</span> <span class="s">&quot;end&quot;</span><span class="p">)):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%5s</span><span class="s">, </span><span class="si">%4s</span><span class="s">, </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</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="go">start, root, None</span>
+<span class="go">start,    a, data</span>
+<span class="go">  end,    a, data</span>
+<span class="go">  end, root, None</span>
+</pre></div>
+</div>
+<p>Note that the text, tail and children of an Element are not necessarily there
+yet when receiving the <tt class="docutils literal"><span class="pre">start</span></tt> event.  Only the <tt class="docutils literal"><span class="pre">end</span></tt> event guarantees
+that the Element has been parsed completely.</p>
+<p>It also allows to <tt class="docutils literal"><span class="pre">.clear()</span></tt> or modify the content of an Element to
+save memory. So if you parse a large tree and you want to keep memory
+usage small, you should clean up parts of the tree that you no longer
+need:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">some_file_like</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="s">&quot;&lt;root&gt;&lt;a&gt;&lt;b&gt;data&lt;/b&gt;&lt;/a&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">event</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">some_file_like</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">if</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span> <span class="o">==</span> <span class="s">&#39;b&#39;</span><span class="p">:</span>
+<span class="gp">... </span>        <span class="k">print</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">elif</span> <span class="n">element</span><span class="o">.</span><span class="n">tag</span> <span class="o">==</span> <span class="s">&#39;a&#39;</span><span class="p">:</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&quot;** cleaning up the subtree&quot;</span><span class="p">)</span>
+<span class="gp">... </span>        <span class="n">element</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+<span class="go">data</span>
+<span class="go">** cleaning up the subtree</span>
+<span class="go">None</span>
+<span class="go">** cleaning up the subtree</span>
+</pre></div>
+</div>
+<p>A very important use cases for <tt class="docutils literal"><span class="pre">iterparse()</span></tt> is parsing large
+generated XML files, e.g. database dumps.  Most often, these XML
+formats only have one main data item element that hangs directly below
+the root node and that is repeated thousands of times.  In this case,
+it is best practice to let <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> do the tree building and to
+only intercept exactly on this one Element, using the normal tree API
+for data extraction.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xml_file</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;root&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a&gt;&lt;b&gt;ABC&lt;/b&gt;&lt;c&gt;abc&lt;/c&gt;&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a&gt;&lt;b&gt;MORE DATA&lt;/b&gt;&lt;c&gt;more data&lt;/c&gt;&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;a&gt;&lt;b&gt;XYZ&lt;/b&gt;&lt;c&gt;xyz&lt;/c&gt;&lt;/a&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/root&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">etree</span><span class="o">.</span><span class="n">iterparse</span><span class="p">(</span><span class="n">xml_file</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="s">&#39;a&#39;</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> -- </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">element</span><span class="o">.</span><span class="n">findtext</span><span class="p">(</span><span class="s">&#39;b&#39;</span><span class="p">),</span> <span class="n">element</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="n">element</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
+<span class="go">ABC -- abc</span>
+<span class="go">MORE DATA -- more data</span>
+<span class="go">XYZ -- xyz</span>
+</pre></div>
+</div>
+<p>If, for some reason, building the tree is not desired at all, the
+target parser interface of <tt class="docutils literal"><span class="pre">lxml.etree</span></tt> can be used.  It creates
+SAX-like events by calling the methods of a target object.  By
+implementing some or all of these methods, you can control which
+events are generated:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">class</span> <span class="nc">ParserTarget</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="n">events</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="gp">... </span>    <span class="n">close_count</span> <span class="o">=</span> <span class="mi">0</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">attrib</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">events</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="s">&quot;start&quot;</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">attrib</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="gp">... </span>        <span class="n">events</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">events</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">events</span><span class="p">,</span> <span class="p">[]</span>
+<span class="gp">... </span>        <span class="bp">self</span><span class="o">.</span><span class="n">close_count</span> <span class="o">+=</span> <span class="mi">1</span>
+<span class="gp">... </span>        <span class="k">return</span> <span class="n">events</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser_target</span> <span class="o">=</span> <span class="n">ParserTarget</span><span class="p">()</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">parser_target</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">events</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&lt;root test=&quot;true&quot;/&gt;&#39;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
+<span class="go">1</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="n">events</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&#39;event: </span><span class="si">%s</span><span class="s"> - tag: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">event</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+<span class="gp">... </span>    <span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">event</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&#39; * </span><span class="si">%s</span><span class="s"> = </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
+<span class="go">event: start - tag: root</span>
+<span class="go"> * test = true</span>
+</pre></div>
+</div>
+<p>You can reuse the parser and its target as often as you like, so you
+should take care that the <tt class="docutils literal"><span class="pre">.close()</span></tt> methods really resets the
+target to a usable state (also in the case of an error!).</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">events</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&lt;root test=&quot;true&quot;/&gt;&#39;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
+<span class="go">2</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">events</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&lt;root test=&quot;true&quot;/&gt;&#39;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
+<span class="go">3</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">events</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&#39;&lt;root test=&quot;true&quot;/&gt;&#39;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">parser_target</span><span class="o">.</span><span class="n">close_count</span><span class="p">)</span>
+<span class="go">4</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">event</span> <span class="ow">in</span> <span class="n">events</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&#39;event: </span><span class="si">%s</span><span class="s"> - tag: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">event</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">event</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
+<span class="gp">... </span>    <span class="k">for</span> <span class="n">attr</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">event</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
+<span class="gp">... </span>        <span class="k">print</span><span class="p">(</span><span class="s">&#39; * </span><span class="si">%s</span><span class="s"> = </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">attr</span><span class="p">,</span> <span class="n">value</span><span class="p">))</span>
+<span class="go">event: start - tag: root</span>
+<span class="go"> * test = true</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="section" id="namespaces">
+<h2><a class="toc-backref" href="#id18">Namespaces</a><a class="headerlink" href="#namespaces" title="Permalink to this headline">¶</a></h2>
+<p>The ElementTree API avoids <a class="reference external" href="http://www.w3.org/TR/xml-names/#ns-qualnames">namespace prefixes</a> wherever possible and deploys
+the real namespaces instead:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xhtml</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;{http://www.w3.org/1999/xhtml}html&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="s">&quot;{http://www.w3.org/1999/xhtml}body&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Hello World&quot;</span>
+
+<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">xhtml</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;html:html xmlns:html=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</span>
+<span class="go">  &lt;html:body&gt;Hello World&lt;/html:body&gt;</span>
+<span class="go">&lt;/html:html&gt;</span>
+</pre></div>
+</div>
+<p>The notation that ElementTree uses was originally brought up by <a class="reference external" href="http://www.jclark.com/xml/xmlns.htm">James
+Clark</a>.  It has the major advantage of providing a universally
+qualified name for a tag, regardless of any prefixes that may or may
+not have been used or defined in a document.  By moving the
+indirection of prefixes out of the way, it makes namespace aware code
+much clearer and safer.</p>
+<p>As you can see from the example, prefixes only become important when
+you serialise the result.  However, the above code looks somewhat
+verbose due to the lengthy namespace names.  And retyping or copying a
+string over and over again is error prone.  It is therefore common
+practice to store a namespace URI in a global variable.  To adapt the
+namespace prefixes for serialisation, you can also pass a mapping to
+the Element factory function, e.g. to define the default namespace:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">XHTML_NAMESPACE</span> <span class="o">=</span> <span class="s">&quot;http://www.w3.org/1999/xhtml&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">XHTML</span> <span class="o">=</span> <span class="s">&quot;{</span><span class="si">%s</span><span class="s">}&quot;</span> <span class="o">%</span> <span class="n">XHTML_NAMESPACE</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">NSMAP</span> <span class="o">=</span> <span class="p">{</span><span class="bp">None</span> <span class="p">:</span> <span class="n">XHTML_NAMESPACE</span><span class="p">}</span> <span class="c"># the default namespace (no prefix)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xhtml</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="n">XHTML</span> <span class="o">+</span> <span class="s">&quot;html&quot;</span><span class="p">,</span> <span class="n">nsmap</span><span class="o">=</span><span class="n">NSMAP</span><span class="p">)</span> <span class="c"># lxml only!</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">xhtml</span><span class="p">,</span> <span class="n">XHTML</span> <span class="o">+</span> <span class="s">&quot;body&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Hello World&quot;</span>
+
+<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">xhtml</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;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</span>
+<span class="go">  &lt;body&gt;Hello World&lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>lxml.etree allows you to look up the current namespaces defined for a
+node through the <tt class="docutils literal"><span class="pre">.nsmap</span></tt> property:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xhtml</span><span class="o">.</span><span class="n">nsmap</span>
+<span class="go">{None: &#39;http://www.w3.org/1999/xhtml&#39;}</span>
+</pre></div>
+</div>
+<p>Note, however, that this includes all prefixes known in the context of
+an Element, not only those that it defines itself.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&#39;root&#39;</span><span class="p">,</span> <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;a&#39;</span><span class="p">:</span> <span class="s">&#39;http://a.b/c&#39;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">child</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="s">&#39;child&#39;</span><span class="p">,</span>
+<span class="gp">... </span>                         <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;b&#39;</span><span class="p">:</span> <span class="s">&#39;http://b.c/d&#39;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">len</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">nsmap</span><span class="p">)</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">len</span><span class="p">(</span><span class="n">child</span><span class="o">.</span><span class="n">nsmap</span><span class="p">)</span>
+<span class="go">2</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">child</span><span class="o">.</span><span class="n">nsmap</span><span class="p">[</span><span class="s">&#39;a&#39;</span><span class="p">]</span>
+<span class="go">&#39;http://a.b/c&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">child</span><span class="o">.</span><span class="n">nsmap</span><span class="p">[</span><span class="s">&#39;b&#39;</span><span class="p">]</span>
+<span class="go">&#39;http://b.c/d&#39;</span>
+</pre></div>
+</div>
+<p>Therefore, modifying the returned dict cannot have any meaningful
+impact on the Element.  Any changes to it are ignored.</p>
+<p>Namespaces on attributes work alike, but since version 2.3, lxml.etree
+will make sure that the attribute uses a prefixed namespace
+declaration.  This is because unprefixed attribute names are not
+considered being in a namespace by the XML namespace specification
+(<a class="reference external" href="http://www.w3.org/TR/2009/REC-xml-names-20091208/#defaulting">section 6.2</a>), so they may end up loosing their namespace on a
+serialise-parse roundtrip, even if they appear in a namespaced
+element.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">body</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">XHTML</span> <span class="o">+</span> <span class="s">&quot;bgcolor&quot;</span><span class="p">,</span> <span class="s">&quot;#CCFFAA&quot;</span><span class="p">)</span>
+
+<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">xhtml</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;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</span>
+<span class="go">  &lt;body xmlns:html=&quot;http://www.w3.org/1999/xhtml&quot; html:bgcolor=&quot;#CCFFAA&quot;&gt;Hello World&lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">body</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&quot;bgcolor&quot;</span><span class="p">))</span>
+<span class="go">None</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">body</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">XHTML</span> <span class="o">+</span> <span class="s">&quot;bgcolor&quot;</span><span class="p">)</span>
+<span class="go">&#39;#CCFFAA&#39;</span>
+</pre></div>
+</div>
+<p>You can also use XPath with fully qualified names:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find_xhtml_body</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ETXPath</span><span class="p">(</span>      <span class="c"># lxml only !</span>
+<span class="gp">... </span>    <span class="s">&quot;//{</span><span class="si">%s</span><span class="s">}body&quot;</span> <span class="o">%</span> <span class="n">XHTML_NAMESPACE</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">results</span> <span class="o">=</span> <span class="n">find_xhtml_body</span><span class="p">(</span><span class="n">xhtml</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{http://www.w3.org/1999/xhtml}body</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="the-e-factory">
+<h2><a class="toc-backref" href="#id19">The E-factory</a><a class="headerlink" href="#the-e-factory" title="Permalink to this headline">¶</a></h2>
+<p>The <tt class="docutils literal"><span class="pre">E-factory</span></tt> provides a simple and compact syntax for generating XML and
+HTML:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.builder</span> <span class="kn">import</span> <span class="n">E</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">def</span> <span class="nf">CLASS</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">):</span> <span class="c"># class is a reserved word in Python</span>
+<span class="gp">... </span>    <span class="k">return</span> <span class="p">{</span><span class="s">&quot;class&quot;</span><span class="p">:</span><span class="s">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">args</span><span class="p">)}</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">html</span> <span class="o">=</span> <span class="n">page</span> <span class="o">=</span> <span class="p">(</span>
+<span class="gp">... </span>  <span class="n">E</span><span class="o">.</span><span class="n">html</span><span class="p">(</span>       <span class="c"># create an Element called &quot;html&quot;</span>
+<span class="gp">... </span>    <span class="n">E</span><span class="o">.</span><span class="n">head</span><span class="p">(</span>
+<span class="gp">... </span>      <span class="n">E</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s">&quot;This is a sample document&quot;</span><span class="p">)</span>
+<span class="gp">... </span>    <span class="p">),</span>
+<span class="gp">... </span>    <span class="n">E</span><span class="o">.</span><span class="n">body</span><span class="p">(</span>
+<span class="gp">... </span>      <span class="n">E</span><span class="o">.</span><span class="n">h1</span><span class="p">(</span><span class="s">&quot;Hello!&quot;</span><span class="p">,</span> <span class="n">CLASS</span><span class="p">(</span><span class="s">&quot;title&quot;</span><span class="p">)),</span>
+<span class="gp">... </span>      <span class="n">E</span><span class="o">.</span><span class="n">p</span><span class="p">(</span><span class="s">&quot;This is a paragraph with &quot;</span><span class="p">,</span> <span class="n">E</span><span class="o">.</span><span class="n">b</span><span class="p">(</span><span class="s">&quot;bold&quot;</span><span class="p">),</span> <span class="s">&quot; text in it!&quot;</span><span class="p">),</span>
+<span class="gp">... </span>      <span class="n">E</span><span class="o">.</span><span class="n">p</span><span class="p">(</span><span class="s">&quot;This is another paragraph, with a&quot;</span><span class="p">,</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">      &quot;</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="s">&quot;link&quot;</span><span class="p">,</span> <span class="n">href</span><span class="o">=</span><span class="s">&quot;http://www.python.org&quot;</span><span class="p">),</span> <span class="s">&quot;.&quot;</span><span class="p">),</span>
+<span class="gp">... </span>      <span class="n">E</span><span class="o">.</span><span class="n">p</span><span class="p">(</span><span class="s">&quot;Here are some reservered characters: &lt;spam&amp;egg&gt;.&quot;</span><span class="p">),</span>
+<span class="gp">... </span>      <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;p&gt;And finally an embedded XHTML fragment.&lt;/p&gt;&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="p">)</span>
+<span class="gp">... </span>  <span class="p">)</span>
+<span class="gp">... </span><span class="p">)</span>
+
+<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">page</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;html&gt;</span>
+<span class="go">  &lt;head&gt;</span>
+<span class="go">    &lt;title&gt;This is a sample document&lt;/title&gt;</span>
+<span class="go">  &lt;/head&gt;</span>
+<span class="go">  &lt;body&gt;</span>
+<span class="go">    &lt;h1 class=&quot;title&quot;&gt;Hello!&lt;/h1&gt;</span>
+<span class="go">    &lt;p&gt;This is a paragraph with &lt;b&gt;bold&lt;/b&gt; text in it!&lt;/p&gt;</span>
+<span class="go">    &lt;p&gt;This is another paragraph, with a</span>
+<span class="go">      &lt;a href=&quot;http://www.python.org&quot;&gt;link&lt;/a&gt;.&lt;/p&gt;</span>
+<span class="go">    &lt;p&gt;Here are some reservered characters: &amp;lt;spam&amp;amp;egg&amp;gt;.&lt;/p&gt;</span>
+<span class="go">    &lt;p&gt;And finally an embedded XHTML fragment.&lt;/p&gt;</span>
+<span class="go">  &lt;/body&gt;</span>
+<span class="go">&lt;/html&gt;</span>
+</pre></div>
+</div>
+<p>The Element creation based on attribute access makes it easy to build up a
+simple vocabulary for an XML language:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml.builder</span> <span class="kn">import</span> <span class="n">ElementMaker</span> <span class="c"># lxml only !</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">E</span> <span class="o">=</span> <span class="n">ElementMaker</span><span class="p">(</span><span class="n">namespace</span><span class="o">=</span><span class="s">&quot;http://my.de/fault/namespace&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                 <span class="n">nsmap</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;p&#39;</span> <span class="p">:</span> <span class="s">&quot;http://my.de/fault/namespace&quot;</span><span class="p">})</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">DOC</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">doc</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">TITLE</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">title</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">SECTION</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">section</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">PAR</span> <span class="o">=</span> <span class="n">E</span><span class="o">.</span><span class="n">par</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">my_doc</span> <span class="o">=</span> <span class="n">DOC</span><span class="p">(</span>
+<span class="gp">... </span>  <span class="n">TITLE</span><span class="p">(</span><span class="s">&quot;The dog and the hog&quot;</span><span class="p">),</span>
+<span class="gp">... </span>  <span class="n">SECTION</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="n">TITLE</span><span class="p">(</span><span class="s">&quot;The dog&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">PAR</span><span class="p">(</span><span class="s">&quot;Once upon a time, ...&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">PAR</span><span class="p">(</span><span class="s">&quot;And then ...&quot;</span><span class="p">)</span>
+<span class="gp">... </span>  <span class="p">),</span>
+<span class="gp">... </span>  <span class="n">SECTION</span><span class="p">(</span>
+<span class="gp">... </span>    <span class="n">TITLE</span><span class="p">(</span><span class="s">&quot;The hog&quot;</span><span class="p">),</span>
+<span class="gp">... </span>    <span class="n">PAR</span><span class="p">(</span><span class="s">&quot;Sooner or later ...&quot;</span><span class="p">)</span>
+<span class="gp">... </span>  <span class="p">)</span>
+<span class="gp">... </span><span class="p">)</span>
+
+<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">my_doc</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;p:doc xmlns:p=&quot;http://my.de/fault/namespace&quot;&gt;</span>
+<span class="go">  &lt;p:title&gt;The dog and the hog&lt;/p:title&gt;</span>
+<span class="go">  &lt;p:section&gt;</span>
+<span class="go">    &lt;p:title&gt;The dog&lt;/p:title&gt;</span>
+<span class="go">    &lt;p:par&gt;Once upon a time, ...&lt;/p:par&gt;</span>
+<span class="go">    &lt;p:par&gt;And then ...&lt;/p:par&gt;</span>
+<span class="go">  &lt;/p:section&gt;</span>
+<span class="go">  &lt;p:section&gt;</span>
+<span class="go">    &lt;p:title&gt;The hog&lt;/p:title&gt;</span>
+<span class="go">    &lt;p:par&gt;Sooner or later ...&lt;/p:par&gt;</span>
+<span class="go">  &lt;/p:section&gt;</span>
+<span class="go">&lt;/p:doc&gt;</span>
+</pre></div>
+</div>
+<p>One such example is the module <tt class="docutils literal"><span class="pre">lxml.html.builder</span></tt>, which provides a
+vocabulary for HTML.</p>
+</div>
+<div class="section" id="elementpath">
+<h2><a class="toc-backref" href="#id20">ElementPath</a><a class="headerlink" href="#elementpath" title="Permalink to this headline">¶</a></h2>
+<p>The ElementTree library comes with a simple XPath-like path language
+called <a class="reference external" href="http://effbot.org/zone/element-xpath.htm">ElementPath</a>.  The main difference is that you can use the
+<tt class="docutils literal"><span class="pre">{namespace}tag</span></tt> notation in ElementPath expressions.  However,
+advanced features like value comparison and functions are not
+available.</p>
+<p>In addition to a <a class="reference external" href="xpathxslt.html#xpath">full XPath implementation</a>, lxml.etree supports the
+ElementPath language in the same way ElementTree does, even using
+(almost) the same implementation.  The API provides four methods here
+that you can find on Elements and ElementTrees:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">iterfind()</span></tt> iterates over all Elements that match the path
+expression</li>
+<li><tt class="docutils literal"><span class="pre">findall()</span></tt> returns a list of matching Elements</li>
+<li><tt class="docutils literal"><span class="pre">find()</span></tt> efficiently returns only the first match</li>
+<li><tt class="docutils literal"><span class="pre">findtext()</span></tt> returns the <tt class="docutils literal"><span class="pre">.text</span></tt> content of the first match</li>
+</ul>
+<p>Here are some examples:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a x=&#39;123&#39;&gt;aText&lt;b/&gt;&lt;c/&gt;&lt;b/&gt;&lt;/a&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Find a child of an Element:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;b&quot;</span><span class="p">))</span>
+<span class="go">None</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">a</span>
+</pre></div>
+</div>
+<p>Find an Element anywhere in the tree:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;.//b&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="p">[</span> <span class="n">b</span><span class="o">.</span><span class="n">tag</span> <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">iterfind</span><span class="p">(</span><span class="s">&quot;.//b&quot;</span><span class="p">)</span> <span class="p">]</span>
+<span class="go">[&#39;b&#39;, &#39;b&#39;]</span>
+</pre></div>
+</div>
+<p>Find Elements with a certain attribute:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&quot;.//a[@x]&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">a</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&quot;.//a[@y]&quot;</span><span class="p">))</span>
+<span class="go">[]</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">The lxml.etree Tutorial</a><ul>
+<li><a class="reference internal" href="#the-element-class">The Element class</a><ul>
+<li><a class="reference internal" href="#elements-are-lists">Elements are lists</a></li>
+<li><a class="reference internal" href="#elements-carry-attributes">Elements carry attributes</a></li>
+<li><a class="reference internal" href="#elements-contain-text">Elements contain text</a></li>
+<li><a class="reference internal" href="#using-xpath-to-find-text">Using XPath to find text</a></li>
+<li><a class="reference internal" href="#tree-iteration">Tree iteration</a></li>
+<li><a class="reference internal" href="#serialisation">Serialisation</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#the-elementtree-class">The ElementTree class</a></li>
+<li><a class="reference internal" href="#parsing-from-strings-and-files">Parsing from strings and files</a><ul>
+<li><a class="reference internal" href="#the-fromstring-function">The fromstring() function</a></li>
+<li><a class="reference internal" href="#the-xml-function">The XML() function</a></li>
+<li><a class="reference internal" href="#the-parse-function">The parse() function</a></li>
+<li><a class="reference internal" href="#parser-objects">Parser objects</a></li>
+<li><a class="reference internal" href="#incremental-parsing">Incremental parsing</a></li>
+<li><a class="reference internal" href="#event-driven-parsing">Event-driven parsing</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#namespaces">Namespaces</a></li>
+<li><a class="reference internal" href="#the-e-factory">The E-factory</a></li>
+<li><a class="reference internal" href="#elementpath">ElementPath</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/tutorial.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/valgrind.html b/doc/sphinx/valgrind.html
new file mode 100644 (file)
index 0000000..1ff7f38
--- /dev/null
@@ -0,0 +1,89 @@
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title><no title> &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_MODINDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="shortcut icon" href="_static/favicon.ico"/>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <p>The command used to run the tests with valgrind:</p>
+<p>valgrind &#8211;tool=memcheck &#8211;leak-check=full &#8211;suppressions=valgrind-python.supp python2.3 test.py</p>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+              <li><a href="_sources/valgrind.txt"
+                     rel="nofollow">Show Source</a></li>
+            </ul>
+          <div id="searchbox" style="display: none">
+            <h3>Quick search</h3>
+              <form class="search" action="search.html" method="get">
+                <input type="text" name="q" size="18" />
+                <input type="submit" value="Go" />
+                <input type="hidden" name="check_keywords" value="yes" />
+                <input type="hidden" name="area" value="default" />
+              </form>
+              <p class="searchtip" style="font-size: 90%">
+              Enter search terms or a module, class or function name.
+              </p>
+          </div>
+          <script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+      &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/validation.html b/doc/sphinx/validation.html
new file mode 100644 (file)
index 0000000..da8946e
--- /dev/null
@@ -0,0 +1,584 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>Validation with lxml &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="validation-with-lxml">
+<h1><a class="toc-backref" href="#id4">Validation with lxml</a><a class="headerlink" href="#validation-with-lxml" title="Permalink to this headline">¶</a></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
+identical APIs in lxml, represented by validator classes with the obvious
+names.</p>
+<p>lxml also provides support for ISO-<a class="reference external" href="http://www.schematron.com">Schematron</a>, based on the pure-XSLT
+<a class="reference external" href="http://www.schematron.com/implementation.html">skeleton implementation</a> of Schematron:</p>
+<p>There is also basic support for <span class="incremental">pre-ISO-Schematron</span> through the libxml2
+Schematron features. However, this does not currently support error reporting
+in the validation phase due to insufficiencies in the implementation as of
+libxml2 2.6.30.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#validation-with-lxml" id="id4">Validation with lxml</a><ul>
+<li><a class="reference internal" href="#validation-at-parse-time" id="id5">Validation at parse time</a></li>
+<li><a class="reference internal" href="#id1" id="id6">DTD</a></li>
+<li><a class="reference internal" href="#relaxng" id="id7">RelaxNG</a></li>
+<li><a class="reference internal" href="#xmlschema" id="id8">XMLSchema</a></li>
+<li><a class="reference internal" href="#id2" id="id9">Schematron</a></li>
+<li><a class="reference internal" href="#id3" id="id10">(Pre-ISO-Schematron)</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<p>The usual setup procedure:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+</pre></div>
+</div>
+<div class="section" id="validation-at-parse-time">
+<h2><a class="toc-backref" href="#id5">Validation at parse time</a><a class="headerlink" href="#validation-at-parse-time" title="Permalink to this headline">¶</a></h2>
+<p>The parser in lxml can do on-the-fly validation of a document against
+a DTD or an XML schema.  The DTD is retrieved automatically based on
+the DOCTYPE of the parsed document.  All you have to do is use a
+parser that has DTD validation enabled:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">dtd_validation</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Obviously, a request for validation enables the DTD loading feature.
+There are two other options that enable loading the DTD, but that do
+not perform any validation.  The first is the <tt class="docutils literal"><span class="pre">load_dtd</span></tt> keyword
+option, which simply loads the DTD into the parser and makes it
+available to the document as external subset.  You can retrieve the
+DTD from the parsed document using the <tt class="docutils literal"><span class="pre">docinfo</span></tt> property of the
+result ElementTree object.  The internal subset is available as
+<tt class="docutils literal"><span class="pre">internalDTD</span></tt>, the external subset is provided as <tt class="docutils literal"><span class="pre">externalDTD</span></tt>.</p>
+<p>The third way way to activate DTD loading is with the
+<tt class="docutils literal"><span class="pre">attribute_defaults</span></tt> option, which loads the DTD and weaves
+attribute default values into the document.  Again, no validation is
+performed unless explicitly requested.</p>
+<p>XML schema is supported in a similar way, but requires an explicit
+schema to be provided:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">schema_root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">  &lt;xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsd:element name=&quot;a&quot; type=&quot;xsd:integer&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/xsd:schema&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schema</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLSchema</span><span class="p">(</span><span class="n">schema_root</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">parser</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLParser</span><span class="p">(</span><span class="n">schema</span> <span class="o">=</span> <span class="n">schema</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&lt;a&gt;5&lt;/a&gt;&quot;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>If the validation fails (be it for a DTD or an XML schema), the parser
+will raise an exception:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="s">&quot;&lt;a&gt;no int&lt;/a&gt;&quot;</span><span class="p">,</span> <span class="n">parser</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+<span class="gr">lxml.etree.XMLSyntaxError: Element &#39;a&#39;</span>: <span class="n">&#39;no int&#39; is not a valid value of the atomic type &#39;xs:integer&#39;.</span>
+</pre></div>
+</div>
+<p>If you want the parser to succeed regardless of the outcome of the
+validation, you should use a non validating parser and run the
+validation separately after parsing the document.</p>
+</div>
+<div class="section" id="id1">
+<h2><a class="toc-backref" href="#id6">DTD</a><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
+<p>As described above, the parser support for DTDs depends on internal or
+external subsets of the XML file.  This means that the XML file itself
+must either contain a DTD or must reference a DTD to make this work.
+If you want to validate an XML document against a DTD that is not
+referenced by the document itself, you can use the <tt class="docutils literal"><span class="pre">DTD</span></tt> class.</p>
+<p>To use the <tt class="docutils literal"><span class="pre">DTD</span></tt> class, you must first pass a filename or file-like object
+into the constructor to parse a DTD:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&quot;&lt;!ELEMENT b EMPTY&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">dtd</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">DTD</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Now you can use it to validate documents:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;b/&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">dtd</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;b&gt;&lt;a/&gt;&lt;/b&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">dtd</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">root</span><span class="p">))</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+<p>The reason for the validation failure can be found in the error log:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">dtd</span><span class="o">.</span><span class="n">error_log</span><span class="o">.</span><span class="n">filter_from_errors</span><span class="p">()[</span><span class="mi">0</span><span class="p">])</span>
+<span class="go">&lt;string&gt;:1:0:ERROR:VALID:DTD_NOT_EMPTY: Element b was declared EMPTY this one has content</span>
+</pre></div>
+</div>
+<p>As an alternative to parsing from a file, you can use the
+<tt class="docutils literal"><span class="pre">external_id</span></tt> keyword argument to parse from a catalog.  The
+following example reads the DocBook DTD in version 4.2, if available
+in the system catalog:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">dtd</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">DTD</span><span class="p">(</span><span class="n">external_id</span> <span class="o">=</span> <span class="s">&quot;-//OASIS//DTD DocBook XML V4.2//EN&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="relaxng">
+<h2><a class="toc-backref" href="#id7">RelaxNG</a><a class="headerlink" href="#relaxng" title="Permalink to this headline">¶</a></h2>
+<p>The <tt class="docutils literal"><span class="pre">RelaxNG</span></tt> class takes an ElementTree object to construct a Relax NG
+validator:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;element name=&quot;a&quot; xmlns=&quot;http://relaxng.org/ns/structure/1.0&quot;&gt;</span>
+<span class="gp">... </span><span class="s"> &lt;zeroOrMore&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;element name=&quot;b&quot;&gt;</span>
+<span class="gp">... </span><span class="s">      &lt;text /&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/element&gt;</span>
+<span class="gp">... </span><span class="s"> &lt;/zeroOrMore&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/element&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">relaxng_doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">relaxng</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">RelaxNG</span><span class="p">(</span><span class="n">relaxng_doc</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Alternatively, pass a filename to the <tt class="docutils literal"><span class="pre">file</span></tt> keyword argument to parse from
+a file.  This also enables correct handling of include files from within the
+RelaxNG parser.</p>
+<p>You can then validate some ElementTree document against the schema. You&#8217;ll get
+back True if the document is valid against the Relax NG schema, and False if
+not:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">valid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">valid</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">relaxng</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">invalid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">invalid</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">relaxng</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc2</span><span class="p">)</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+<p>Calling the schema object has the same effect as calling its validate
+method. This is sometimes used in conditional statements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">invalid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">invalid</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">if</span> <span class="ow">not</span> <span class="n">relaxng</span><span class="p">(</span><span class="n">doc2</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;invalid!&quot;</span><span class="p">)</span>
+<span class="go">invalid!</span>
+</pre></div>
+</div>
+<p>If you prefer getting an exception when validating, you can use the
+<tt class="docutils literal"><span class="pre">assert_</span></tt> or <tt class="docutils literal"><span class="pre">assertValid</span></tt> methods:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">relaxng</span><span class="o">.</span><span class="n">assertValid</span><span class="p">(</span><span class="n">doc2</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.DocumentInvalid</span>: <span class="n">Did not expect element c there, line 1</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">relaxng</span><span class="o">.</span><span class="n">assert_</span><span class="p">(</span><span class="n">doc2</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AssertionError</span>: <span class="n">Did not expect element c there, line 1</span>
+</pre></div>
+</div>
+<p>If you want to find out why the validation failed in the second case, you can
+look up the error log of the validation process and check it for relevant
+messages:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">log</span> <span class="o">=</span> <span class="n">relaxng</span><span class="o">.</span><span class="n">error_log</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">log</span><span class="o">.</span><span class="n">last_error</span><span class="p">)</span>
+<span class="go">&lt;string&gt;:1:0:ERROR:RELAXNGV:RELAXNG_ERR_ELEMWRONG: Did not expect element c there</span>
+</pre></div>
+</div>
+<p>You can see that the error (ERROR) happened during RelaxNG validation
+(RELAXNGV).  The message then tells you what went wrong.  You can also
+look at the error domain and its type directly:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">error</span> <span class="o">=</span> <span class="n">log</span><span class="o">.</span><span class="n">last_error</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
+<span class="go">RELAXNGV</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
+<span class="go">RELAXNG_ERR_ELEMWRONG</span>
+</pre></div>
+</div>
+<p>Note that this error log is local to the RelaxNG object.  It will only
+contain log entries that appeared during the validation.</p>
+<p>Similar to XSLT, there&#8217;s also a less efficient but easier shortcut method to
+do one-shot RelaxNG validation:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span><span class="o">.</span><span class="n">relaxng</span><span class="p">(</span><span class="n">relaxng_doc</span><span class="p">)</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc2</span><span class="o">.</span><span class="n">relaxng</span><span class="p">(</span><span class="n">relaxng_doc</span><span class="p">)</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+<p>libxml2 does not currently support the <a class="reference external" href="http://www.thaiopensource.com/relaxng/trang.html">RelaxNG Compact Syntax</a>.
+However, the <a class="reference external" href="http://www.thaiopensource.com/relaxng/trang.html">trang</a> translator can convert the compact syntax to the
+XML syntax, which can then be used with lxml.</p>
+</div>
+<div class="section" id="xmlschema">
+<h2><a class="toc-backref" href="#id8">XMLSchema</a><a class="headerlink" href="#xmlschema" title="Permalink to this headline">¶</a></h2>
+<p>lxml.etree also has XML Schema (XSD) support, using the class
+lxml.etree.XMLSchema.  The API is very similar to the Relax NG and DTD
+classes.  Pass an ElementTree object to construct a XMLSchema validator:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;xsd:schema xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&gt;</span>
+<span class="gp">... </span><span class="s">&lt;xsd:element name=&quot;a&quot; type=&quot;AType&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">&lt;xsd:complexType name=&quot;AType&quot;&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;xsd:sequence&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsd:element name=&quot;b&quot; type=&quot;xsd:string&quot; /&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/xsd:sequence&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/xsd:complexType&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/xsd:schema&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xmlschema_doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xmlschema</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XMLSchema</span><span class="p">(</span><span class="n">xmlschema_doc</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>You can then validate some ElementTree document with this.  Like with RelaxNG,
+you&#8217;ll get back true if the document is valid against the XML schema, and
+false if not:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">valid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">valid</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xmlschema</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">invalid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">invalid</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xmlschema</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc2</span><span class="p">)</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+<p>Calling the schema object has the same effect as calling its validate method.
+This is sometimes used in conditional statements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">invalid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">invalid</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">if</span> <span class="ow">not</span> <span class="n">xmlschema</span><span class="p">(</span><span class="n">doc2</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;invalid!&quot;</span><span class="p">)</span>
+<span class="go">invalid!</span>
+</pre></div>
+</div>
+<p>If you prefer getting an exception when validating, you can use the
+<tt class="docutils literal"><span class="pre">assert_</span></tt> or <tt class="docutils literal"><span class="pre">assertValid</span></tt> methods:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xmlschema</span><span class="o">.</span><span class="n">assertValid</span><span class="p">(</span><span class="n">doc2</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.DocumentInvalid: Element &#39;c&#39;</span>: <span class="n">This element is not expected. Expected is ( b )., line 1</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xmlschema</span><span class="o">.</span><span class="n">assert_</span><span class="p">(</span><span class="n">doc2</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">AssertionError: Element &#39;c&#39;</span>: <span class="n">This element is not expected. Expected is ( b )., line 1</span>
+</pre></div>
+</div>
+<p>Error reporting works as for the RelaxNG class:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">log</span> <span class="o">=</span> <span class="n">xmlschema</span><span class="o">.</span><span class="n">error_log</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">error</span> <span class="o">=</span> <span class="n">log</span><span class="o">.</span><span class="n">last_error</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">domain_name</span><span class="p">)</span>
+<span class="go">SCHEMASV</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">error</span><span class="o">.</span><span class="n">type_name</span><span class="p">)</span>
+<span class="go">SCHEMAV_ELEMENT_CONTENT</span>
+</pre></div>
+</div>
+<p>If you were to print this log entry, you would get something like the
+following.  Note that the error message depends on the libxml2 version in
+use:</p>
+<div class="highlight-python"><pre>&lt;string&gt;:1:ERROR::SCHEMAV_ELEMENT_CONTENT: Element 'c': This element is not expected. Expected is ( b ).</pre>
+</div>
+<p>Similar to XSLT and RelaxNG, there&#8217;s also a less efficient but easier shortcut
+method to do XML Schema validation:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span><span class="o">.</span><span class="n">xmlschema</span><span class="p">(</span><span class="n">xmlschema_doc</span><span class="p">)</span>
+<span class="go">True</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc2</span><span class="o">.</span><span class="n">xmlschema</span><span class="p">(</span><span class="n">xmlschema_doc</span><span class="p">)</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="id2">
+<h2><a class="toc-backref" href="#id9">Schematron</a><a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
+<p>From version 2.3 on lxml features ISO-<a class="reference external" href="http://www.schematron.com">Schematron</a> support built on the
+de-facto reference implementation of Schematron, the pure-XSLT-1.0
+<a class="reference external" href="http://www.schematron.com/implementation.html">skeleton implementation</a>. This is provided by the lxml.isoschematron package
+that implements the Schematron class, with an API compatible to the other
+validators&#8217;.  Pass an Element or ElementTree object to construct a Schematron
+validator:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">isoschematron</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;schema xmlns=&quot;http://purl.oclc.org/dsdl/schematron&quot; &gt;</span>
+<span class="gp">... </span><span class="s">  &lt;pattern id=&quot;sum_equals_100_percent&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;title&gt;Sum equals 100%.&lt;/title&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;rule context=&quot;Total&quot;&gt;</span>
+<span class="gp">... </span><span class="s">      &lt;assert test=&quot;sum(//Percent)=100&quot;&gt;Sum is not 100%.&lt;/assert&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/rule&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/pattern&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/schema&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">sct_doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schematron</span> <span class="o">=</span> <span class="n">isoschematron</span><span class="o">.</span><span class="n">Schematron</span><span class="p">(</span><span class="n">sct_doc</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>You can then validate some ElementTree document with this. Just like with
+XMLSchema or RelaxNG, you&#8217;ll get back true if the document is valid against the
+schema, and false if not:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">valid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;Total&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;20&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;30&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;50&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/Total&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">valid</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schematron</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">getroot</span><span class="p">(),</span> <span class="s">&quot;Percent&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;10&quot;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schematron</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+<p>Calling the schema object has the same effect as calling its validate method.
+This can be useful for conditional statements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">is_valid</span> <span class="o">=</span> <span class="n">isoschematron</span><span class="o">.</span><span class="n">Schematron</span><span class="p">(</span><span class="n">sct_doc</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">if</span> <span class="ow">not</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">doc</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;invalid!&quot;</span><span class="p">)</span>
+<span class="go">invalid!</span>
+</pre></div>
+</div>
+<p>Built on a pure-xslt implementation, the actual validator is created as an
+XSLT 1.0 stylesheet using these steps:</p>
+<ol class="arabic simple" start="0">
+<li>(Extract embedded Schematron from XML Schema or RelaxNG schema)</li>
+<li>Process inclusions</li>
+<li>Process abstract patterns</li>
+<li>Compile the schematron schema to XSLT</li>
+</ol>
+<p>To allow more control over the individual steps, isoschematron.Schematron
+supports an extended API:</p>
+<p>The <tt class="docutils literal"><span class="pre">include</span></tt> and <tt class="docutils literal"><span class="pre">expand</span></tt> keyword arguments can be used to switch off
+steps 1) and 2).</p>
+<p>To set parameters for steps 1), 2) and 3) dictionaries containing parameters
+for XSLT can be provided using the keyword arguments <tt class="docutils literal"><span class="pre">include_params</span></tt>,
+<tt class="docutils literal"><span class="pre">expand_params</span></tt> or <tt class="docutils literal"><span class="pre">compile_params</span></tt>. Schematron automatically converts these
+parameters to stylesheet parameters so you need not worry to set string
+parameters using quotes or to use XSLT.strparam(). If you ever need to pass an
+XPath as argument to the XSLT stylesheet you can pass in an etree.XPath object
+(see XPath and XSLT with lxml: <a class="reference external" href="xpathxslt.html#stylesheet-parameters">Stylesheet-parameters</a> for background on this).</p>
+<p>The <tt class="docutils literal"><span class="pre">phase</span></tt> parameter of the compile step is additionally exposed as a keyword
+argument. If set, it overrides occurrence in <tt class="docutils literal"><span class="pre">compile_params</span></tt>. Note that
+isoschematron.Schematron might expose more common parameters as additional keyword
+args in the future.</p>
+<p>By setting <tt class="docutils literal"><span class="pre">store_schematron</span></tt> to True, the (included-and-expanded) schematron
+document tree is stored and made available through the <tt class="docutils literal"><span class="pre">schematron</span></tt> property.</p>
+<p>Similarly, setting <tt class="docutils literal"><span class="pre">store_xslt</span></tt> to True will result in the validation XSLT
+document tree being kept; it can be retrieved through the <tt class="docutils literal"><span class="pre">validator_xslt</span></tt>
+property.</p>
+<p>Finally, with <tt class="docutils literal"><span class="pre">store_report</span></tt> set to True (default: False), the resulting
+validation report document gets stored and can be accessed as the
+<tt class="docutils literal"><span class="pre">validation_report</span></tt> property.</p>
+<p>Using the <tt class="docutils literal"><span class="pre">phase</span></tt> parameter of isoschematron.Schematron allows for selective
+validation of predefined pattern groups:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;schema xmlns=&quot;http://purl.oclc.org/dsdl/schematron&quot; &gt;</span>
+<span class="gp">... </span><span class="s">  &lt;phase id=&quot;phase.sum_check&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;active pattern=&quot;sum_equals_100_percent&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/phase&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;phase id=&quot;phase.entries_check&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;active pattern=&quot;all_positive&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/phase&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;pattern id=&quot;sum_equals_100_percent&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;title&gt;Sum equals 100%.&lt;/title&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;rule context=&quot;Total&quot;&gt;</span>
+<span class="gp">... </span><span class="s">      &lt;assert test=&quot;sum(//Percent)=100&quot;&gt;Sum is not 100%.&lt;/assert&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/rule&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/pattern&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;pattern id=&quot;all_positive&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;title&gt;All entries must be positive.&lt;/title&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;rule context=&quot;Percent&quot;&gt;</span>
+<span class="gp">... </span><span class="s">      &lt;assert test=&quot;number(.)&gt;0&quot;&gt;Number (&lt;value-of select=&quot;.&quot;/&gt;) not positive&lt;/assert&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/rule&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/pattern&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/schema&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">sct_doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schematron</span> <span class="o">=</span> <span class="n">isoschematron</span><span class="o">.</span><span class="n">Schematron</span><span class="p">(</span><span class="n">sct_doc</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">valid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;Total&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;20&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;30&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;50&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/Total&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">valid</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schematron</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">invalid_positive</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;Total&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;0&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;50&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;50&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/Total&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">invalid_positive</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schematron</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+<p>If the constraint of Percent entries being positive is not of interest in a
+certain validation scenario, it can now be disabled:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">selective</span> <span class="o">=</span> <span class="n">isoschematron</span><span class="o">.</span><span class="n">Schematron</span><span class="p">(</span><span class="n">sct_doc</span><span class="p">,</span> <span class="n">phase</span><span class="o">=</span><span class="s">&quot;phase.sum_check&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">selective</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+<p>The usage of validation phases is a unique feature of ISO-Schematron and can be
+a very powerful tool e.g. for establishing validation stages or to provide
+different validators for different &#8220;validation audiences&#8221;.</p>
+</div>
+<div class="section" id="id3">
+<h2><a class="toc-backref" href="#id10">(Pre-ISO-Schematron)</a><a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
+<p>Since version 2.0, lxml.etree features <a class="reference external" href="http://www.ascc.net/xml/schematron">pre-ISO-Schematron</a> support, using the
+class lxml.etree.Schematron.  It requires at least libxml2 2.6.21 to
+work.  The API is the same as for the other validators.  Pass an
+ElementTree object to construct a Schematron validator:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;schema xmlns=&quot;http://www.ascc.net/xml/schematron&quot; &gt;</span>
+<span class="gp">... </span><span class="s">  &lt;pattern name=&quot;Sum equals 100%.&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;rule context=&quot;Total&quot;&gt;</span>
+<span class="gp">... </span><span class="s">      &lt;assert test=&quot;sum(//Percent)=100&quot;&gt;Sum is not 100%.&lt;/assert&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/rule&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;/pattern&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/schema&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">sct_doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schematron</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Schematron</span><span class="p">(</span><span class="n">sct_doc</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>You can then validate some ElementTree document with this.  Like with RelaxNG,
+you&#8217;ll get back true if the document is valid against the schema, and false if
+not:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">valid</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;Total&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;20&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;30&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">  &lt;Percent&gt;50&lt;/Percent&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/Total&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">valid</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schematron</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">doc</span><span class="o">.</span><span class="n">getroot</span><span class="p">(),</span> <span class="s">&quot;Percent&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s">&quot;10&quot;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">schematron</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+<p>Calling the schema object has the same effect as calling its validate method.
+This is sometimes used in conditional statements:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">is_valid</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Schematron</span><span class="p">(</span><span class="n">sct_doc</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">if</span> <span class="ow">not</span> <span class="n">is_valid</span><span class="p">(</span><span class="n">doc</span><span class="p">):</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&quot;invalid!&quot;</span><span class="p">)</span>
+<span class="go">invalid!</span>
+</pre></div>
+</div>
+<p>Note that libxml2 restricts error reporting to the parsing step (when creating
+the Schematron instance).  There is not currently any support for error
+reporting during validation.</p>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">Validation with lxml</a><ul>
+<li><a class="reference internal" href="#validation-at-parse-time">Validation at parse time</a></li>
+<li><a class="reference internal" href="#id1">DTD</a></li>
+<li><a class="reference internal" href="#relaxng">RelaxNG</a></li>
+<li><a class="reference internal" href="#xmlschema">XMLSchema</a></li>
+<li><a class="reference internal" href="#id2">Schematron</a></li>
+<li><a class="reference internal" href="#id3">(Pre-ISO-Schematron)</a></li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/validation.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/doc/sphinx/xpathxslt.html b/doc/sphinx/xpathxslt.html
new file mode 100644 (file)
index 0000000..16d702c
--- /dev/null
@@ -0,0 +1,736 @@
+
+
+<!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">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>XPath and XSLT with lxml &mdash; lxml v2.3 - Processing XML and HTML with Python</title>
+    <link rel="stylesheet" href="_static/default.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    '',
+        VERSION:     '2.3',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <link rel="top" title="lxml v2.3 - Processing XML and HTML with Python" href="index.html" /> 
+  </head>
+  <body>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             accesskey="I">index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body">
+            
+  <div class="section" id="xpath-and-xslt-with-lxml">
+<h1><a class="toc-backref" href="#id1">XPath and XSLT with lxml</a><a class="headerlink" href="#xpath-and-xslt-with-lxml" title="Permalink to this headline">¶</a></h1>
+<p>lxml supports XPath 1.0, XSLT 1.0 and the EXSLT extensions through
+libxml2 and libxslt in a standards compliant way.</p>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#xpath-and-xslt-with-lxml" id="id1">XPath and XSLT with lxml</a><ul>
+<li><a class="reference internal" href="#xpath" id="id2">XPath</a><ul>
+<li><a class="reference internal" href="#the-xpath-method" id="id3">The <tt class="docutils literal"><span class="pre">xpath()</span></tt> method</a></li>
+<li><a class="reference internal" href="#namespaces-and-prefixes" id="id4">Namespaces and prefixes</a></li>
+<li><a class="reference internal" href="#xpath-return-values" id="id5">XPath return values</a></li>
+<li><a class="reference internal" href="#generating-xpath-expressions" id="id6">Generating XPath expressions</a></li>
+<li><a class="reference internal" href="#the-xpath-class" id="id7">The <tt class="docutils literal"><span class="pre">XPath</span></tt> class</a></li>
+<li><a class="reference internal" href="#regular-expressions-in-xpath" id="id8">Regular expressions in XPath</a></li>
+<li><a class="reference internal" href="#the-xpathevaluator-classes" id="id9">The <tt class="docutils literal"><span class="pre">XPathEvaluator</span></tt> classes</a></li>
+<li><a class="reference internal" href="#etxpath" id="id10"><tt class="docutils literal"><span class="pre">ETXPath</span></tt></a></li>
+<li><a class="reference internal" href="#error-handling" id="id11">Error handling</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#xslt" id="id12">XSLT</a><ul>
+<li><a class="reference internal" href="#xslt-result-objects" id="id13">XSLT result objects</a></li>
+<li><a class="reference internal" href="#stylesheet-parameters" id="id14">Stylesheet parameters</a></li>
+<li><a class="reference internal" href="#errors-and-messages" id="id15">Errors and messages</a></li>
+<li><a class="reference internal" href="#the-xslt-tree-method" id="id16">The <tt class="docutils literal"><span class="pre">xslt()</span></tt> tree method</a></li>
+<li><a class="reference internal" href="#dealing-with-stylesheet-complexity" id="id17">Dealing with stylesheet complexity</a></li>
+<li><a class="reference internal" href="#profiling" id="id18">Profiling</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<p>The usual setup procedure:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">lxml</span> <span class="kn">import</span> <span class="n">etree</span>
+</pre></div>
+</div>
+<div class="section" id="xpath">
+<h2><a class="toc-backref" href="#id2">XPath</a><a class="headerlink" href="#xpath" title="Permalink to this headline">¶</a></h2>
+<p>lxml.etree supports the simple path syntax of the <a class="reference external" href="http://effbot.org/zone/element.htm#searching-for-subelements">find, findall and
+findtext</a> methods on ElementTree and Element, as known from the original
+ElementTree library (<a class="reference external" href="http://effbot.org/zone/element-xpath.htm">ElementPath</a>).  As an lxml specific extension, these
+classes also provide an <tt class="docutils literal"><span class="pre">xpath()</span></tt> method that supports expressions in the
+complete XPath syntax, as well as <a class="reference external" href="extensions.html#xpath-extension-functions">custom extension functions</a>.</p>
+<p>There are also specialized XPath evaluator classes that are more efficient for
+frequent evaluation: <tt class="docutils literal"><span class="pre">XPath</span></tt> and <tt class="docutils literal"><span class="pre">XPathEvaluator</span></tt>.  See the <a class="reference external" href="performance.html#xpath">performance
+comparison</a> to learn when to use which.  Their semantics when used on
+Elements and ElementTrees are the same as for the <tt class="docutils literal"><span class="pre">xpath()</span></tt> method described
+here.</p>
+<div class="section" id="the-xpath-method">
+<h3><a class="toc-backref" href="#id3">The <tt class="docutils literal"><span class="pre">xpath()</span></tt> method</a><a class="headerlink" href="#the-xpath-method" title="Permalink to this headline">¶</a></h3>
+<p>For ElementTree, the xpath method performs a global XPath query against the
+document (if absolute) or against the root node (if relative):</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;foo&gt;&lt;bar&gt;&lt;/bar&gt;&lt;/foo&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;/foo/bar&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">len</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;bar&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;bar&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;bar&#39;</span>
+</pre></div>
+</div>
+<p>When <tt class="docutils literal"><span class="pre">xpath()</span></tt> is used on an Element, the XPath expression is evaluated
+against the element (if relative) or against the root tree (if absolute):</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;bar&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;bar&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">bar</span> <span class="o">=</span> <span class="n">root</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span> <span class="o">=</span> <span class="n">bar</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;/foo/bar&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;bar&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">bar</span><span class="o">.</span><span class="n">getroottree</span><span class="p">()</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span> <span class="o">=</span> <span class="n">tree</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;/foo/bar&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;bar&#39;</span>
+</pre></div>
+</div>
+<p>The <tt class="docutils literal"><span class="pre">xpath()</span></tt> method has support for XPath variables:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">expr</span> <span class="o">=</span> <span class="s">&quot;//*[local-name() = $name]&quot;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;foo&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">foo</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;bar&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">bar</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;$text&quot;</span><span class="p">,</span> <span class="n">text</span> <span class="o">=</span> <span class="s">&quot;Hello World!&quot;</span><span class="p">))</span>
+<span class="go">Hello World!</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="namespaces-and-prefixes">
+<h3><a class="toc-backref" href="#id4">Namespaces and prefixes</a><a class="headerlink" href="#namespaces-and-prefixes" title="Permalink to this headline">¶</a></h3>
+<p>If your XPath expression uses namespace prefixes, you must define them
+in a prefix mapping.  To this end, pass a dictionary to the
+<tt class="docutils literal"><span class="pre">namespaces</span></tt> keyword argument that maps the namespace prefixes used
+in the XPath expression to namespace URIs:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;a:foo xmlns:a=&quot;http://codespeak.net/ns/test1&quot;</span>
+<span class="gp">... </span><span class="s">       xmlns:b=&quot;http://codespeak.net/ns/test2&quot;&gt;</span>
+<span class="gp">... </span><span class="s">   &lt;b:bar&gt;Text&lt;/b:bar&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/a:foo&gt;</span>
+<span class="gp">... </span><span class="s">&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&#39;/t:foo/b:bar&#39;</span><span class="p">,</span>
+<span class="gp">... </span>              <span class="n">namespaces</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;t&#39;</span><span class="p">:</span> <span class="s">&#39;http://codespeak.net/ns/test1&#39;</span><span class="p">,</span>
+<span class="gp">... </span>                          <span class="s">&#39;b&#39;</span><span class="p">:</span> <span class="s">&#39;http://codespeak.net/ns/test2&#39;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">len</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
+<span class="go">1</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span>
+<span class="go">&#39;{http://codespeak.net/ns/test2}bar&#39;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;Text&#39;</span>
+</pre></div>
+</div>
+<p>The prefixes you choose here are not linked to the prefixes used
+inside the XML document.  The document may define whatever prefixes it
+likes, including the empty prefix, without breaking the above code.</p>
+<p>Note that XPath does not have a notion of a default namespace.  The
+empty prefix is therefore undefined for XPath and cannot be used in
+namespace prefix mappings.</p>
+<p>There is also an optional <tt class="docutils literal"><span class="pre">extensions</span></tt> argument which is used to
+define <a class="reference external" href="extensions.html#xpath-extension-functions">custom extension functions</a> in Python that are local to this
+evaluation.  The namespace prefixes that they use in the XPath
+expression must also be defined in the namespace prefix mapping.</p>
+</div>
+<div class="section" id="xpath-return-values">
+<h3><a class="toc-backref" href="#id5">XPath return values</a><a class="headerlink" href="#xpath-return-values" title="Permalink to this headline">¶</a></h3>
+<p>The return value types of XPath evaluations vary, depending on the
+XPath expression used:</p>
+<ul class="simple">
+<li>True or False, when the XPath expression has a boolean result</li>
+<li>a float, when the XPath expression has a numeric result (integer or float)</li>
+<li>a &#8216;smart&#8217; string (as described below), when the XPath expression has
+a string result.</li>
+<li>a list of items, when the XPath expression has a list as result.
+The items may include Elements (also comments and processing
+instructions), strings and tuples.  Text nodes and attributes in the
+result are returned as &#8216;smart&#8217; string values.  Namespace
+declarations are returned as tuples of strings: <tt class="docutils literal"><span class="pre">(prefix,</span> <span class="pre">URI)</span></tt>.</li>
+</ul>
+<p>XPath string results are &#8216;smart&#8217; in that they provide a
+<tt class="docutils literal"><span class="pre">getparent()</span></tt> method that knows their origin:</p>
+<ul class="simple">
+<li>for attribute values, <tt class="docutils literal"><span class="pre">result.getparent()</span></tt> returns the Element
+that carries them.  An example is <tt class="docutils literal"><span class="pre">//foo/&#64;attribute</span></tt>, where the
+parent would be a <tt class="docutils literal"><span class="pre">foo</span></tt> Element.</li>
+<li>for the <tt class="docutils literal"><span class="pre">text()</span></tt> function (as in <tt class="docutils literal"><span class="pre">//text()</span></tt>), it returns the
+Element that contains the text or tail that was returned.</li>
+</ul>
+<p>You can distinguish between different text origins with the boolean
+properties <tt class="docutils literal"><span class="pre">is_text</span></tt>, <tt class="docutils literal"><span class="pre">is_tail</span></tt> and <tt class="docutils literal"><span class="pre">is_attribute</span></tt>.</p>
+<p>Note that <tt class="docutils literal"><span class="pre">getparent()</span></tt> may not always return an Element.  For
+example, the XPath functions <tt class="docutils literal"><span class="pre">string()</span></tt> and <tt class="docutils literal"><span class="pre">concat()</span></tt> will
+construct strings that do not have an origin.  For them,
+<tt class="docutils literal"><span class="pre">getparent()</span></tt> will return None.</p>
+<p>There are certain cases where the smart string behaviour is
+undesirable.  For example, it means that the tree will be kept alive
+by the string, which may have a considerable memory impact in the case
+that the string value is the only thing in the tree that is actually
+of interest.  For these cases, you can deactivate the parental
+relationship using the keyword argument <tt class="docutils literal"><span class="pre">smart_strings</span></tt>.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;TEXT&lt;/a&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find_text</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//text()&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">text</span> <span class="o">=</span> <span class="n">find_text</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
+<span class="go">TEXT</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">text</span><span class="o">.</span><span class="n">getparent</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="go">TEXT</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find_text</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//text()&quot;</span><span class="p">,</span> <span class="n">smart_strings</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">text</span> <span class="o">=</span> <span class="n">find_text</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
+<span class="go">TEXT</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">hasattr</span><span class="p">(</span><span class="n">text</span><span class="p">,</span> <span class="s">&#39;getparent&#39;</span><span class="p">)</span>
+<span class="go">False</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="generating-xpath-expressions">
+<h3><a class="toc-backref" href="#id6">Generating XPath expressions</a><a class="headerlink" href="#generating-xpath-expressions" title="Permalink to this headline">¶</a></h3>
+<p>ElementTree objects have a method <tt class="docutils literal"><span class="pre">getpath(element)</span></tt>, which returns a
+structural, absolute XPath expression to find that element:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span>  <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;a&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span>  <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;b&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">c</span>  <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">&quot;c&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">d1</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="s">&quot;d&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">d2</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">SubElement</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="s">&quot;d&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ElementTree</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getpath</span><span class="p">(</span><span class="n">d2</span><span class="p">))</span>
+<span class="go">/c/d[2]</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">tree</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="n">tree</span><span class="o">.</span><span class="n">getpath</span><span class="p">(</span><span class="n">d2</span><span class="p">))</span> <span class="o">==</span> <span class="p">[</span><span class="n">d2</span><span class="p">]</span>
+<span class="go">True</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="the-xpath-class">
+<h3><a class="toc-backref" href="#id7">The <tt class="docutils literal"><span class="pre">XPath</span></tt> class</a><a class="headerlink" href="#the-xpath-class" title="Permalink to this headline">¶</a></h3>
+<p>The <tt class="docutils literal"><span class="pre">XPath</span></tt> class compiles an XPath expression into a callable function:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;b/&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//b&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+</pre></div>
+</div>
+<p>The compilation takes as much time as in the <tt class="docutils literal"><span class="pre">xpath()</span></tt> method, but it is
+done only once per class instantiation.  This makes it especially efficient
+for repeated evaluation of the same XPath expression.</p>
+<p>Just like the <tt class="docutils literal"><span class="pre">xpath()</span></tt> method, the <tt class="docutils literal"><span class="pre">XPath</span></tt> class supports XPath
+variables:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">count_elements</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;count(//*[local-name() = $name])&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">count_elements</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;a&quot;</span><span class="p">))</span>
+<span class="go">1.0</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">count_elements</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">name</span> <span class="o">=</span> <span class="s">&quot;b&quot;</span><span class="p">))</span>
+<span class="go">2.0</span>
+</pre></div>
+</div>
+<p>This supports very efficient evaluation of modified versions of an XPath
+expression, as compilation is still only required once.</p>
+<p>Prefix-to-namespace mappings can be passed as second parameter:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root xmlns=&#39;NS&#39;&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;b/&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//n:b&quot;</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;n&#39;</span><span class="p">:</span><span class="s">&#39;NS&#39;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{NS}b</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="regular-expressions-in-xpath">
+<h3><a class="toc-backref" href="#id8">Regular expressions in XPath</a><a class="headerlink" href="#regular-expressions-in-xpath" title="Permalink to this headline">¶</a></h3>
+<p>By default, <tt class="docutils literal"><span class="pre">XPath</span></tt> supports regular expressions in the <a class="reference external" href="http://www.exslt.org/">EXSLT</a> namespace:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">regexpNS</span> <span class="o">=</span> <span class="s">&quot;http://exslt.org/regular-expressions&quot;</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//*[re:test(., &#39;^abc$&#39;, &#39;i&#39;)]&quot;</span><span class="p">,</span>
+<span class="gp">... </span>                   <span class="n">namespaces</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;re&#39;</span><span class="p">:</span><span class="n">regexpNS</span><span class="p">})</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;aB&lt;/a&gt;&lt;b&gt;aBc&lt;/b&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
+<span class="go">aBc</span>
+</pre></div>
+</div>
+<p>You can disable this with the boolean keyword argument <tt class="docutils literal"><span class="pre">regexp</span></tt> which
+defaults to True.</p>
+</div>
+<div class="section" id="the-xpathevaluator-classes">
+<h3><a class="toc-backref" href="#id9">The <tt class="docutils literal"><span class="pre">XPathEvaluator</span></tt> classes</a><a class="headerlink" href="#the-xpathevaluator-classes" title="Permalink to this headline">¶</a></h3>
+<p>lxml.etree provides two other efficient XPath evaluators that work on
+ElementTrees or Elements respectively: <tt class="docutils literal"><span class="pre">XPathDocumentEvaluator</span></tt> and
+<tt class="docutils literal"><span class="pre">XPathElementEvaluator</span></tt>.  They are automatically selected if you use the
+XPathEvaluator helper for instantiation:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;b/&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">xpatheval</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathEvaluator</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">xpatheval</span><span class="p">,</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPathElementEvaluator</span><span class="p">))</span>
+<span class="go">True</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">xpatheval</span><span class="p">(</span><span class="s">&quot;//b&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+</pre></div>
+</div>
+<p>This class provides efficient support for evaluating different XPath
+expressions on the same Element or ElementTree.</p>
+</div>
+<div class="section" id="etxpath">
+<h3><a class="toc-backref" href="#id10"><tt class="docutils literal"><span class="pre">ETXPath</span></tt></a><a class="headerlink" href="#etxpath" title="Permalink to this headline">¶</a></h3>
+<p>ElementTree supports a language named <a class="reference external" href="http://effbot.org/zone/element-xpath.htm">ElementPath</a> in its <tt class="docutils literal"><span class="pre">find*()</span></tt> methods.
+One of the main differences between XPath and ElementPath is that the XPath
+language requires an indirection through prefixes for namespace support,
+whereas ElementTree uses the Clark notation (<tt class="docutils literal"><span class="pre">{ns}name</span></tt>) to avoid prefixes
+completely.  The other major difference regards the capabilities of both path
+languages.  Where XPath supports various sophisticated ways of restricting the
+result set through functions and boolean expressions, ElementPath only
+supports pure path traversal without nesting or further conditions.  So, while
+the ElementPath syntax is self-contained and therefore easier to write and
+handle, XPath is much more powerful and expressive.</p>
+<p>lxml.etree bridges this gap through the class <tt class="docutils literal"><span class="pre">ETXPath</span></tt>, which accepts XPath
+expressions with namespaces in Clark notation.  It is identical to the
+<tt class="docutils literal"><span class="pre">XPath</span></tt> class, except for the namespace notation.  Normally, you would
+write:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&quot;&lt;root xmlns=&#39;ns&#39;&gt;&lt;a&gt;&lt;b/&gt;&lt;/a&gt;&lt;b/&gt;&lt;/root&gt;&quot;</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//p:b&quot;</span><span class="p">,</span> <span class="n">namespaces</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;p&#39;</span> <span class="p">:</span> <span class="s">&#39;ns&#39;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{ns}b</span>
+</pre></div>
+</div>
+<p><tt class="docutils literal"><span class="pre">ETXPath</span></tt> allows you to change this to:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">ETXPath</span><span class="p">(</span><span class="s">&quot;//{ns}b&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">{ns}b</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="error-handling">
+<h3><a class="toc-backref" href="#id11">Error handling</a><a class="headerlink" href="#error-handling" title="Permalink to this headline">¶</a></h3>
+<p>lxml.etree raises exceptions when errors occur while parsing or evaluating an
+XPath expression:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">&quot;</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XPathSyntaxError</span>: <span class="n">Invalid expression</span>
+</pre></div>
+</div>
+<p>lxml will also try to give you a hint what went wrong, so if you pass a more
+complex expression, you may get a somewhat more specific error:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//*[1.1.1]&quot;</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XPathSyntaxError</span>: <span class="n">Invalid predicate</span>
+</pre></div>
+</div>
+<p>During evaluation, lxml will emit an XPathEvalError on errors:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;//ns:a&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XPathEvalError</span>: <span class="n">Undefined namespace prefix</span>
+</pre></div>
+</div>
+<p>This works for the <tt class="docutils literal"><span class="pre">XPath</span></tt> class, however, the other evaluators (including
+the <tt class="docutils literal"><span class="pre">xpath()</span></tt> method) are one-shot operations that do parsing and evaluation
+in one step.  They therefore raise evaluation exceptions in all cases:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">Element</span><span class="p">(</span><span class="s">&quot;test&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;//*[1.1.1]&quot;</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XPathEvalError</span>: <span class="n">Invalid predicate</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;//ns:a&quot;</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XPathEvalError</span>: <span class="n">Undefined namespace prefix</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">find</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">xpath</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\\</span><span class="s">&quot;</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">lxml.etree.XPathEvalError</span>: <span class="n">Invalid expression</span>
+</pre></div>
+</div>
+<p>Note that lxml versions before 1.3 always raised an <tt class="docutils literal"><span class="pre">XPathSyntaxError</span></tt> for
+all errors, including evaluation errors.  The best way to support older
+versions is to except on the superclass <tt class="docutils literal"><span class="pre">XPathError</span></tt>.</p>
+</div>
+</div>
+<div class="section" id="xslt">
+<h2><a class="toc-backref" href="#id12">XSLT</a><a class="headerlink" href="#xslt" title="Permalink to this headline">¶</a></h2>
+<p>lxml.etree introduces a new class, lxml.etree.XSLT. The class can be
+given an ElementTree or Element object to construct an XSLT
+transformer:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xslt_root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;xsl:stylesheet version=&quot;1.0&quot;</span>
+<span class="gp">... </span><span class="s">    xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:template match=&quot;/&quot;&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;foo&gt;&lt;xsl:value-of select=&quot;/a/b/text()&quot; /&gt;&lt;/foo&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/xsl:template&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/xsl:stylesheet&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">xslt_root</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>You can then run the transformation on an ElementTree document by simply
+calling it, and this results in another ElementTree object:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">f</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;b&gt;Text&lt;/b&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result_tree</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>By default, XSLT supports all extension functions from libxslt and
+libexslt as well as Python regular expressions through the <a class="reference external" href="http://www.exslt.org/regexp/">EXSLT
+regexp functions</a>.  Also see the documentation on <a class="reference external" href="extensions.html#xpath-extension-functions">custom extension
+functions</a>, <a class="reference external" href="extensions.html#xslt-extension-elements">XSLT extension elements</a> and <a class="reference external" href="resolvers.html">document resolvers</a>.
+There is a separate section on <a class="reference external" href="resolvers.html#i-o-access-control-in-xslt">controlling access</a> to external
+documents and resources.</p>
+<div class="section" id="xslt-result-objects">
+<h3><a class="toc-backref" href="#id13">XSLT result objects</a><a class="headerlink" href="#xslt-result-objects" title="Permalink to this headline">¶</a></h3>
+<p>The result of an XSL transformation can be accessed like a normal ElementTree
+document:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;b&gt;Text&lt;/b&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">root</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span><span class="o">.</span><span class="n">getroot</span><span class="p">()</span><span class="o">.</span><span class="n">text</span>
+<span class="go">&#39;Text&#39;</span>
+</pre></div>
+</div>
+<p>but, as opposed to normal ElementTree objects, can also be turned into an (XML
+or text) string by applying the str() function:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;Text&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+<p>The result is always a plain string, encoded as requested by the
+<tt class="docutils literal"><span class="pre">xsl:output</span></tt> element in the stylesheet.  If you want a Python unicode string
+instead, you should set this encoding to <tt class="docutils literal"><span class="pre">UTF-8</span></tt> (unless the <span class="incremental">ASCII</span> default
+is sufficient).  This allows you to call the builtin <tt class="docutils literal"><span class="pre">unicode()</span></tt> function on
+the result:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="nb">unicode</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">u&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;Text&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+<p>You can use other encodings at the cost of multiple recoding.  Encodings that
+are not supported by Python will result in an error:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xslt_tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;xsl:stylesheet version=&quot;1.0&quot;</span>
+<span class="gp">... </span><span class="s">    xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:output encoding=&quot;UCS4&quot;/&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:template match=&quot;/&quot;&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;foo&gt;&lt;xsl:value-of select=&quot;/a/b/text()&quot; /&gt;&lt;/foo&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/xsl:template&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/xsl:stylesheet&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">xslt_tree</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">unicode</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="gt">Traceback (most recent call last):</span>
+  <span class="c">...</span>
+<span class="gr">LookupError: unknown encoding</span>: <span class="n">UCS4</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="stylesheet-parameters">
+<h3><a class="toc-backref" href="#id14">Stylesheet parameters</a><a class="headerlink" href="#stylesheet-parameters" title="Permalink to this headline">¶</a></h3>
+<p>It is possible to pass parameters, in the form of XPath expressions, to the
+XSLT template:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xslt_tree</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;xsl:stylesheet version=&quot;1.0&quot;</span>
+<span class="gp">... </span><span class="s">    xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:param name=&quot;a&quot; /&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:template match=&quot;/&quot;&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;foo&gt;&lt;xsl:value-of select=&quot;$a&quot; /&gt;&lt;/foo&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/xsl:template&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/xsl:stylesheet&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">xslt_tree</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc_root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;b&gt;Text&lt;/b&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>The parameters are passed as keyword parameters to the transform call.
+First, let&#8217;s try passing in a simple integer expression:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc_root</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="s">&quot;5&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;5&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+<p>You can use any valid XPath expression as parameter value:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc_root</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="s">&quot;/a/b/text()&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;Text&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+<p>It&#8217;s also possible to pass an XPath object as a parameter:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc_root</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="n">etree</span><span class="o">.</span><span class="n">XPath</span><span class="p">(</span><span class="s">&quot;/a/b/text()&quot;</span><span class="p">))</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;Text&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+<p>Passing a string expression looks like this:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc_root</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="s">&quot;&#39;A&#39;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;A&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+<p>To pass a string that (potentially) contains quotes, you can use the
+<tt class="docutils literal"><span class="pre">.strparam()</span></tt> class method.  Note that it does not escape the
+string.  Instead, it returns an opaque object that keeps the string
+value.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">plain_string_value</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="o">.</span><span class="n">strparam</span><span class="p">(</span>
+<span class="gp">... </span>                         <span class="sd">&quot;&quot;&quot; It&#39;s &quot;Monty Python&quot; &quot;&quot;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc_root</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="n">plain_string_value</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt; It\&#39;s &quot;Monty Python&quot; &lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+<p>If you need to pass parameters that are not legal Python identifiers,
+pass them inside of a dictionary:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;xsl:stylesheet version=&quot;1.0&quot;</span>
+<span class="gp">... </span><span class="s">    xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:param name=&quot;non-python-identifier&quot; /&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:template match=&quot;/&quot;&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;foo&gt;&lt;xsl:value-of select=&quot;$non-python-identifier&quot; /&gt;&lt;/foo&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/xsl:template&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/xsl:stylesheet&gt;&#39;&#39;&#39;</span><span class="p">))</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc_root</span><span class="p">,</span> <span class="o">**</span><span class="p">{</span><span class="s">&#39;non-python-identifier&#39;</span><span class="p">:</span> <span class="s">&#39;5&#39;</span><span class="p">})</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;5&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="errors-and-messages">
+<h3><a class="toc-backref" href="#id15">Errors and messages</a><a class="headerlink" href="#errors-and-messages" title="Permalink to this headline">¶</a></h3>
+<p>Like most of the processing oriented objects in lxml.etree, <tt class="docutils literal"><span class="pre">XSLT</span></tt>
+provides an error log that lists messages and error output from the
+last run.  See the <a class="reference external" href="parsing.html#error-log">parser documentation</a> for a description of the
+error log.</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">xslt_root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&#39;&#39;</span><span class="se">\</span>
+<span class="gp">... </span><span class="s">&lt;xsl:stylesheet version=&quot;1.0&quot;</span>
+<span class="gp">... </span><span class="s">    xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;xsl:template match=&quot;/&quot;&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;xsl:message terminate=&quot;no&quot;&gt;STARTING&lt;/xsl:message&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;foo&gt;&lt;xsl:value-of select=&quot;/a/b/text()&quot; /&gt;&lt;/foo&gt;</span>
+<span class="gp">... </span><span class="s">        &lt;xsl:message terminate=&quot;no&quot;&gt;DONE&lt;/xsl:message&gt;</span>
+<span class="gp">... </span><span class="s">    &lt;/xsl:template&gt;</span>
+<span class="gp">... </span><span class="s">&lt;/xsl:stylesheet&gt;&#39;&#39;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">xslt_root</span><span class="p">)</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">doc_root</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XML</span><span class="p">(</span><span class="s">&#39;&lt;a&gt;&lt;b&gt;Text&lt;/b&gt;&lt;/a&gt;&#39;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc_root</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;Text&lt;/foo&gt;\n&#39;</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span><span class="o">.</span><span class="n">error_log</span>
+<span class="go">&lt;string&gt;:0:0:ERROR:XSLT:ERR_OK: STARTING</span>
+<span class="go">&lt;string&gt;:0:0:ERROR:XSLT:ERR_OK: DONE</span>
+
+<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">entry</span> <span class="ow">in</span> <span class="n">transform</span><span class="o">.</span><span class="n">error_log</span><span class="p">:</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&#39;message from line </span><span class="si">%s</span><span class="s">, col </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span>
+<span class="gp">... </span>               <span class="n">entry</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">column</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">message</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&#39;domain: </span><span class="si">%s</span><span class="s"> (</span><span class="si">%d</span><span class="s">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">domain_name</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">domain</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&#39;type: </span><span class="si">%s</span><span class="s"> (</span><span class="si">%d</span><span class="s">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">type_name</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">type</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&#39;level: </span><span class="si">%s</span><span class="s"> (</span><span class="si">%d</span><span class="s">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">entry</span><span class="o">.</span><span class="n">level_name</span><span class="p">,</span> <span class="n">entry</span><span class="o">.</span><span class="n">level</span><span class="p">))</span>
+<span class="gp">... </span>    <span class="k">print</span><span class="p">(</span><span class="s">&#39;filename: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">entry</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
+<span class="go">message from line 0, col 0: STARTING</span>
+<span class="go">domain: XSLT (22)</span>
+<span class="go">type: ERR_OK (0)</span>
+<span class="go">level: ERROR (2)</span>
+<span class="go">filename: &lt;string&gt;</span>
+<span class="go">message from line 0, col 0: DONE</span>
+<span class="go">domain: XSLT (22)</span>
+<span class="go">type: ERR_OK (0)</span>
+<span class="go">level: ERROR (2)</span>
+<span class="go">filename: &lt;string&gt;</span>
+</pre></div>
+</div>
+<p>Note that there is no way in XSLT to distinguish between user
+messages, warnings and error messages that occurred during the
+run. <tt class="docutils literal"><span class="pre">libxslt</span></tt> simply does not provide this information.  You can
+partly work around this limitation by making your own messages
+uniquely identifiable, e.g. with a common text prefix.</p>
+</div>
+<div class="section" id="the-xslt-tree-method">
+<h3><a class="toc-backref" href="#id16">The <tt class="docutils literal"><span class="pre">xslt()</span></tt> tree method</a><a class="headerlink" href="#the-xslt-tree-method" title="Permalink to this headline">¶</a></h3>
+<p>There&#8217;s also a convenience method on ElementTree objects for doing XSL
+transformations.  This is less efficient if you want to apply the same XSL
+transformation to multiple documents, but is shorter to write for one-shot
+operations, as you do not have to instantiate a stylesheet yourself:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">doc</span><span class="o">.</span><span class="n">xslt</span><span class="p">(</span><span class="n">xslt_tree</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="s">&quot;&#39;A&#39;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;A&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+<p>This is a shortcut for the following code:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">transform</span> <span class="o">=</span> <span class="n">etree</span><span class="o">.</span><span class="n">XSLT</span><span class="p">(</span><span class="n">xslt_tree</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="s">&quot;&#39;A&#39;&quot;</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="nb">str</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+<span class="go">&#39;&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;foo&gt;A&lt;/foo&gt;\n&#39;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="dealing-with-stylesheet-complexity">
+<h3><a class="toc-backref" href="#id17">Dealing with stylesheet complexity</a><a class="headerlink" href="#dealing-with-stylesheet-complexity" title="Permalink to this headline">¶</a></h3>
+<p>Some applications require a larger set of rather diverse stylesheets.
+lxml.etree allows you to deal with this in a number of ways.  Here are
+some ideas to try.</p>
+<p>The most simple way to reduce the diversity is by using XSLT
+parameters that you pass at call time to configure the stylesheets.
+The <tt class="docutils literal"><span class="pre">partial()</span></tt> function in the <tt class="docutils literal"><span class="pre">functools</span></tt> module of Python 2.5
+may come in handy here.  It allows you to bind a set of keyword
+arguments (i.e. stylesheet parameters) to a reference of a callable
+stylesheet.  The same works for instances of the <tt class="docutils literal"><span class="pre">XPath()</span></tt>
+evaluator, obviously.</p>
+<p>You may also consider creating stylesheets programmatically.  Just
+create an XSL tree, e.g. from a parsed template, and then add or
+replace parts as you see fit.  Passing an XSL tree into the <tt class="docutils literal"><span class="pre">XSLT()</span></tt>
+constructor multiple times will create independent stylesheets, so
+later modifications of the tree will not be reflected in the already
+created stylesheets.  This makes stylesheet generation very straight
+forward.</p>
+<p>A third thing to remember is the support for <a class="reference external" href="extensions.html#xpath-extension-functions">custom extension
+functions</a> and <a class="reference external" href="extensions.html#xslt-extension-elements">XSLT extension elements</a>.  Some things are much
+easier to express in XSLT than in Python, while for others it is the
+complete opposite.  Finding the right mixture of Python code and XSL
+code can help a great deal in keeping applications well designed and
+maintainable.</p>
+</div>
+<div class="section" id="profiling">
+<h3><a class="toc-backref" href="#id18">Profiling</a><a class="headerlink" href="#profiling" title="Permalink to this headline">¶</a></h3>
+<p>If you want to know how your stylesheet performed, pass the <tt class="docutils literal"><span class="pre">profile_run</span></tt>
+keyword to the transform:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">result</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">doc</span><span class="p">,</span> <span class="n">a</span><span class="o">=</span><span class="s">&quot;/a/b/text()&quot;</span><span class="p">,</span> <span class="n">profile_run</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
+<span class="gp">&gt;&gt;&gt; </span><span class="n">profile</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">xslt_profile</span>
+</pre></div>
+</div>
+<p>The value of the <tt class="docutils literal"><span class="pre">xslt_profile</span></tt> property is an ElementTree with profiling
+data about each template, similar to the following:</p>
+<div class="highlight-xml"><div class="highlight"><pre><span class="nt">&lt;profile&gt;</span>
+  <span class="nt">&lt;template</span> <span class="na">rank=</span><span class="s">&quot;1&quot;</span> <span class="na">match=</span><span class="s">&quot;/&quot;</span> <span class="na">name=</span><span class="s">&quot;&quot;</span> <span class="na">mode=</span><span class="s">&quot;&quot;</span> <span class="na">calls=</span><span class="s">&quot;1&quot;</span> <span class="na">time=</span><span class="s">&quot;1&quot;</span> <span class="na">average=</span><span class="s">&quot;1&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/profile&gt;</span>
+</pre></div>
+</div>
+<p>Note that this is a read-only document.  You must not move any of its elements
+to other documents.  Please deep-copy the document if you need to modify it.
+If you want to free it from memory, just do:</p>
+<div class="highlight-pycon"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">del</span> <span class="n">result</span><span class="o">.</span><span class="n">xslt_profile</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+            <p class="logo"><a href="main.html">
+              <img class="logo" src="_static/python-xml-title.png" alt="Logo"/>
+            </a></p>
+  <h3><a href="main.html">Table Of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#">XPath and XSLT with lxml</a><ul>
+<li><a class="reference internal" href="#xpath">XPath</a><ul>
+<li><a class="reference internal" href="#the-xpath-method">The <tt class="docutils literal"><span class="pre">xpath()</span></tt> method</a></li>
+<li><a class="reference internal" href="#namespaces-and-prefixes">Namespaces and prefixes</a></li>
+<li><a class="reference internal" href="#xpath-return-values">XPath return values</a></li>
+<li><a class="reference internal" href="#generating-xpath-expressions">Generating XPath expressions</a></li>
+<li><a class="reference internal" href="#the-xpath-class">The <tt class="docutils literal"><span class="pre">XPath</span></tt> class</a></li>
+<li><a class="reference internal" href="#regular-expressions-in-xpath">Regular expressions in XPath</a></li>
+<li><a class="reference internal" href="#the-xpathevaluator-classes">The <tt class="docutils literal"><span class="pre">XPathEvaluator</span></tt> classes</a></li>
+<li><a class="reference internal" href="#etxpath"><tt class="docutils literal"><span class="pre">ETXPath</span></tt></a></li>
+<li><a class="reference internal" href="#error-handling">Error handling</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#xslt">XSLT</a><ul>
+<li><a class="reference internal" href="#xslt-result-objects">XSLT result objects</a></li>
+<li><a class="reference internal" href="#stylesheet-parameters">Stylesheet parameters</a></li>
+<li><a class="reference internal" href="#errors-and-messages">Errors and messages</a></li>
+<li><a class="reference internal" href="#the-xslt-tree-method">The <tt class="docutils literal"><span class="pre">xslt()</span></tt> tree method</a></li>
+<li><a class="reference internal" href="#dealing-with-stylesheet-complexity">Dealing with stylesheet complexity</a></li>
+<li><a class="reference internal" href="#profiling">Profiling</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+  <h3>This Page</h3>
+  <ul class="this-page-menu">
+    <li><a href="_sources/xpathxslt.txt"
+           rel="nofollow">Show Source</a></li>
+  </ul>
+<div id="searchbox" style="display: none">
+  <h3>Quick search</h3>
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" size="18" />
+      <input type="submit" value="Go" />
+      <input type="hidden" name="check_keywords" value="yes" />
+      <input type="hidden" name="area" value="default" />
+    </form>
+    <p class="searchtip" style="font-size: 90%">
+    Enter search terms or a module, class or function name.
+    </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        <li class="right" style="margin-right: 10px">
+          <a href="genindex.html" title="General Index"
+             >index</a></li>
+        <li><a href="main.html">lxml v2.3 - Processing XML and HTML with Python</a> &raquo;</li> 
+      </ul>
+    </div>
+    <div class="footer">
+        &copy; Copyright 2011, Stefan Behnel et al..
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
+    </div>
+  </body>
+</html>
\ No newline at end of file
index b0ade2f..d6a6f22 100644 (file)
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: lxml
-Version: 3.6.1
+Version: 3.6.2
 Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
 Home-page: http://lxml.de/
 Author: lxml dev team
@@ -36,30 +36,10 @@ 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.1 (2016-07-24)
+        3.6.2 (2016-08-18)
         ==================
         
-        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.
+        * release without source changes to provide cleanly built Linux wheels
         
         
         
index a6f2217..9661f0c 100644 (file)
@@ -9,7 +9,6 @@ TODO.txt
 buildlibxml.py
 ez_setup.py
 requirements.txt
-setup.cfg
 setup.py
 setupinfo.py
 test.py
@@ -26,8 +25,10 @@ doc/api.txt
 doc/build.txt
 doc/capi.txt
 doc/compatibility.txt
+doc/conf.py
 doc/cssselect.txt
 doc/docstructure.py
+doc/donating.txt
 doc/element_classes.txt
 doc/elementsoup.txt
 doc/extensions.txt
@@ -49,6 +50,7 @@ doc/resolvers.txt
 doc/rest2html.py
 doc/rest2latex.py
 doc/sax.txt
+doc/sitemap.txt
 doc/test.xml
 doc/tutorial.txt
 doc/valgrind.txt
@@ -58,13 +60,17 @@ doc/html/FAQ.html
 doc/html/api.html
 doc/html/build.html
 doc/html/capi.html
-doc/html/changes-3.6.1.html
+doc/html/changes-3.5.0.beta1.html
+doc/html/changes-3.5.0.html
+doc/html/changes-3.5.dev.html
+doc/html/changes-3.6.0.html
 doc/html/compatibility.html
 doc/html/credits.html
 doc/html/cssselect.html
 doc/html/element_classes.html
 doc/html/elementsoup.html
 doc/html/extensions.html
+doc/html/funding.html
 doc/html/html5parser.html
 doc/html/index.html
 doc/html/installation.html
@@ -544,7 +550,6 @@ doc/licenses/BSD.txt
 doc/licenses/GPL.txt
 doc/licenses/ZopePublicLicense.txt
 doc/licenses/elementtree.txt
-doc/pdf/pubkey.asc
 doc/s5/Makefile
 doc/s5/lxml-ep2008.html
 doc/s5/lxml-ep2008.txt
@@ -567,6 +572,81 @@ doc/s5/ui/default/s5-core.css
 doc/s5/ui/default/slides.css
 doc/s5/ui/default/slides.js
 doc/s5/ui/default/tagpython.png
+doc/sphinx/FAQ.html
+doc/sphinx/Makefile
+doc/sphinx/api.html
+doc/sphinx/build.html
+doc/sphinx/capi.html
+doc/sphinx/compatibility.html
+doc/sphinx/cssselect.html
+doc/sphinx/element_classes.html
+doc/sphinx/elementsoup.html
+doc/sphinx/extensions.html
+doc/sphinx/genindex.html
+doc/sphinx/html5parser.html
+doc/sphinx/index.html
+doc/sphinx/intro.html
+doc/sphinx/lxml-source-howto.html
+doc/sphinx/lxml2.html
+doc/sphinx/lxmlhtml.html
+doc/sphinx/main.html
+doc/sphinx/memorymanagement.html
+doc/sphinx/objectify.html
+doc/sphinx/parsing.html
+doc/sphinx/performance.html
+doc/sphinx/resolvers.html
+doc/sphinx/sax.html
+doc/sphinx/search.html
+doc/sphinx/sitemap.html
+doc/sphinx/tutorial.html
+doc/sphinx/valgrind.html
+doc/sphinx/validation.html
+doc/sphinx/xpathxslt.html
+doc/sphinx/_images/tagpython.png
+doc/sphinx/_sources/FAQ.txt
+doc/sphinx/_sources/api.txt
+doc/sphinx/_sources/build.txt
+doc/sphinx/_sources/capi.txt
+doc/sphinx/_sources/compatibility.txt
+doc/sphinx/_sources/cssselect.txt
+doc/sphinx/_sources/element_classes.txt
+doc/sphinx/_sources/elementsoup.txt
+doc/sphinx/_sources/extensions.txt
+doc/sphinx/_sources/html5parser.txt
+doc/sphinx/_sources/index.txt
+doc/sphinx/_sources/intro.txt
+doc/sphinx/_sources/lxml-source-howto.txt
+doc/sphinx/_sources/lxml2.txt
+doc/sphinx/_sources/lxmlhtml.txt
+doc/sphinx/_sources/main.txt
+doc/sphinx/_sources/memorymanagement.txt
+doc/sphinx/_sources/objectify.txt
+doc/sphinx/_sources/parsing.txt
+doc/sphinx/_sources/performance.txt
+doc/sphinx/_sources/resolvers.txt
+doc/sphinx/_sources/sax.txt
+doc/sphinx/_sources/sitemap.txt
+doc/sphinx/_sources/tutorial.txt
+doc/sphinx/_sources/valgrind.txt
+doc/sphinx/_sources/validation.txt
+doc/sphinx/_sources/xpathxslt.txt
+doc/sphinx/_sources/html/api/api-objects.txt
+doc/sphinx/_sources/licenses/BSD.txt
+doc/sphinx/_sources/licenses/GPL.txt
+doc/sphinx/_sources/licenses/ZopePublicLicense.txt
+doc/sphinx/_sources/licenses/elementtree.txt
+doc/sphinx/_sources/s5/lxml-ep2008.txt
+doc/sphinx/_static/basic.css
+doc/sphinx/_static/default.css
+doc/sphinx/_static/pygments.css
+doc/sphinx/_static/sphinxdoc.css
+doc/sphinx/_static/tagpython-big.png
+doc/sphinx/html/api/api-objects.html
+doc/sphinx/licenses/BSD.html
+doc/sphinx/licenses/GPL.html
+doc/sphinx/licenses/ZopePublicLicense.html
+doc/sphinx/licenses/elementtree.html
+doc/sphinx/s5/lxml-ep2008.html
 samples/simple-ns.xml
 samples/simple.xml
 src/local_doctest.py
@@ -772,4 +852,6 @@ src/lxml/tests/test_unicode.py
 src/lxml/tests/test_xmlschema.py
 src/lxml/tests/test_xpathevaluator.py
 src/lxml/tests/test_xslt.py
-src/lxml/tests/include/test_xinclude.xml
\ No newline at end of file
+src/lxml/tests/include/test_xinclude.xml
+tools/xpathgrep.py
+tools/manylinux/build-wheels.sh
\ No newline at end of file
index 0c3dd59..1077615 100644 (file)
@@ -1,8 +1,4 @@
 
-
-[source]
-Cython>=0.20
-
 [cssselect]
 cssselect>=0.7
 
@@ -10,4 +6,7 @@ cssselect>=0.7
 html5lib
 
 [htmlsoup]
-BeautifulSoup4
\ No newline at end of file
+BeautifulSoup4
+
+[source]
+Cython>=0.20
index 853587c..ff000c1 100644 (file)
@@ -1,3 +1,3 @@
 #ifndef LXML_VERSION_STRING
-#define LXML_VERSION_STRING "3.6.1"
+#define LXML_VERSION_STRING "3.6.2"
 #endif
index 82dca03..ccece43 100644 (file)
@@ -4,74 +4,59 @@
 {
     "distutils": {
         "depends": [
-            "/usr/include/libxml2/libxml/HTMLtree.h", 
-            "/usr/include/libxml2/libxml/chvalid.h", 
-            "/usr/include/libxml2/libxml/encoding.h", 
-            "/usr/include/libxml2/libxml/globals.h", 
-            "/usr/include/libxml2/libxml/hash.h", 
-            "/usr/include/libxml2/libxml/tree.h", 
-            "/usr/include/libxml2/libxml/uri.h", 
-            "/usr/include/libxml2/libxml/valid.h", 
-            "/usr/include/libxml2/libxml/xmlIO.h", 
-            "/usr/include/libxml2/libxml/xmlmemory.h", 
-            "/usr/include/libxml2/libxml/xmlsave.h", 
-            "/usr/include/libxml2/libxml/xmlstring.h", 
-            "/usr/include/libxml2/libxml/xmlversion.h", 
-            "/usr/lib/python2.7/dist-packages/lxml/includes/etree_defs.h", 
-            "/usr/lib/python2.7/dist-packages/lxml/includes/lxml-version.h", 
-            "src/lxml/apihelpers.pxi", 
-            "src/lxml/classlookup.pxi", 
-            "src/lxml/cleanup.pxi", 
-            "src/lxml/debug.pxi", 
-            "src/lxml/docloader.pxi", 
-            "src/lxml/dtd.pxi", 
-            "src/lxml/extensions.pxi", 
-            "src/lxml/includes/c14n.pxd", 
-            "src/lxml/includes/config.pxd", 
-            "src/lxml/includes/dtdvalid.pxd", 
-            "src/lxml/includes/etree_defs.h", 
-            "src/lxml/includes/htmlparser.pxd", 
-            "src/lxml/includes/relaxng.pxd", 
-            "src/lxml/includes/schematron.pxd", 
-            "src/lxml/includes/tree.pxd", 
-            "src/lxml/includes/uri.pxd", 
-            "src/lxml/includes/xinclude.pxd", 
-            "src/lxml/includes/xmlerror.pxd", 
-            "src/lxml/includes/xmlparser.pxd", 
-            "src/lxml/includes/xmlschema.pxd", 
-            "src/lxml/includes/xpath.pxd", 
-            "src/lxml/includes/xslt.pxd", 
-            "src/lxml/iterparse.pxi", 
-            "src/lxml/nsclasses.pxi", 
-            "src/lxml/parser.pxi", 
-            "src/lxml/parsertarget.pxi", 
-            "src/lxml/proxy.pxi", 
-            "src/lxml/public-api.pxi", 
-            "src/lxml/readonlytree.pxi", 
-            "src/lxml/relaxng.pxi", 
-            "src/lxml/saxparser.pxi", 
-            "src/lxml/schematron.pxi", 
-            "src/lxml/serializer.pxi", 
-            "src/lxml/xinclude.pxi", 
-            "src/lxml/xmlerror.pxi", 
-            "src/lxml/xmlid.pxi", 
-            "src/lxml/xmlschema.pxi", 
-            "src/lxml/xpath.pxi", 
-            "src/lxml/xslt.pxi", 
+            "src/lxml/apihelpers.pxi",
+            "src/lxml/classlookup.pxi",
+            "src/lxml/cleanup.pxi",
+            "src/lxml/debug.pxi",
+            "src/lxml/docloader.pxi",
+            "src/lxml/dtd.pxi",
+            "src/lxml/extensions.pxi",
+            "src/lxml/includes/c14n.pxd",
+            "src/lxml/includes/config.pxd",
+            "src/lxml/includes/dtdvalid.pxd",
+            "src/lxml/includes/etree_defs.h",
+            "src/lxml/includes/htmlparser.pxd",
+            "src/lxml/includes/relaxng.pxd",
+            "src/lxml/includes/schematron.pxd",
+            "src/lxml/includes/tree.pxd",
+            "src/lxml/includes/uri.pxd",
+            "src/lxml/includes/xinclude.pxd",
+            "src/lxml/includes/xmlerror.pxd",
+            "src/lxml/includes/xmlparser.pxd",
+            "src/lxml/includes/xmlschema.pxd",
+            "src/lxml/includes/xpath.pxd",
+            "src/lxml/includes/xslt.pxd",
+            "src/lxml/iterparse.pxi",
+            "src/lxml/nsclasses.pxi",
+            "src/lxml/parser.pxi",
+            "src/lxml/parsertarget.pxi",
+            "src/lxml/proxy.pxi",
+            "src/lxml/public-api.pxi",
+            "src/lxml/readonlytree.pxi",
+            "src/lxml/relaxng.pxi",
+            "src/lxml/saxparser.pxi",
+            "src/lxml/schematron.pxi",
+            "src/lxml/serializer.pxi",
+            "src/lxml/xinclude.pxi",
+            "src/lxml/xmlerror.pxi",
+            "src/lxml/xmlid.pxi",
+            "src/lxml/xmlschema.pxi",
+            "src/lxml/xpath.pxi",
+            "src/lxml/xslt.pxi",
             "src/lxml/xsltext.pxi"
-        ], 
+        ],
         "extra_compile_args": [
             "-w"
-        ], 
+        ],
         "include_dirs": [
-            "/usr/include/libxml2", 
+            "/usr/include/libxml2",
             "src/lxml/includes"
-        ], 
+        ],
         "libraries": [
-            "xslt", 
-            "exslt", 
-            "xml2", 
-            "z", 
+            "xslt",
+            "exslt",
+            "xml2",
+            "z",
             "m"
         ]
     }
@@ -6373,7 +6358,7 @@ static char __pyx_k_Input_object_has_no_document_s[] = "Input object has no docu
 static char __pyx_k_Invalid_attribute_dictionary_s[] = "Invalid attribute dictionary: %s";
 static char __pyx_k_XPath_evaluator_locking_failed[] = "XPath evaluator locking failed";
 static char __pyx_k_cannot_append_parent_to_itself[] = "cannot append parent to itself";
-static char __pyx_k_home_stefan_source_Python_lxml[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx";
+static char __pyx_k_home_stefan_source_Python_lxml[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/lxml.etree.pyx";
 static char __pyx_k_http_www_w3_org_2001_XMLSchema[] = "http://www.w3.org/2001/XMLSchema";
 static char __pyx_k_invalid_node_type_d_expected_d[] = "invalid node type %d, expected %d";
 static char __pyx_k_s_s_object_name_r_type_r_occur[] = "<%s.%s object name=%r type=%r occur=%r at 0x%x>";
@@ -6527,14 +6512,14 @@ static char __pyx_k_empty_namespace_prefix_is_not_su[] = "empty namespace prefix
 static char __pyx_k_empty_prefix_is_not_supported_in[] = "empty prefix is not supported in XPath";
 static char __pyx_k_extensions_must_have_non_empty_n[] = "extensions must have non empty names";
 static char __pyx_k_extensions_must_not_have_empty_n[] = "extensions must not have empty namespaces";
-static char __pyx_k_home_stefan_source_Python_lxml_2[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/xmlerror.pxi";
-static char __pyx_k_home_stefan_source_Python_lxml_3[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/classlookup.pxi";
-static char __pyx_k_home_stefan_source_Python_lxml_4[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/nsclasses.pxi";
-static char __pyx_k_home_stefan_source_Python_lxml_5[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/parser.pxi";
-static char __pyx_k_home_stefan_source_Python_lxml_6[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/parsertarget.pxi";
-static char __pyx_k_home_stefan_source_Python_lxml_7[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/xmlid.pxi";
-static char __pyx_k_home_stefan_source_Python_lxml_8[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/cleanup.pxi";
-static char __pyx_k_home_stefan_source_Python_lxml_9[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/extensions.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_2[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/xmlerror.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_3[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/classlookup.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_4[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/nsclasses.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_5[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/parser.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_6[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/parsertarget.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_7[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/xmlid.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_8[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/cleanup.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_9[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/extensions.pxi";
 static char __pyx_k_http_codespeak_net_lxml_objectif[] = "http://codespeak.net/lxml/objectify/pytype";
 static char __pyx_k_http_exslt_org_regular_expressio[] = "http://exslt.org/regular-expressions";
 static char __pyx_k_http_www_w3_org_1999_02_22_rdf_s[] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
@@ -6553,8 +6538,8 @@ static char __pyx_k_setting_default_namespace_is_not[] = "setting default namesp
 static char __pyx_k_this_element_does_not_have_child[] = "this element does not have children or attributes";
 static char __pyx_k_unsupported_element_type_for_top[] = "unsupported element type for top-level node: %d";
 static char __pyx_k_The_custom_resolver_registry_of_2[] = "The custom resolver registry of the last (or current) parser run.\n        ";
-static char __pyx_k_home_stefan_source_Python_lxml_10[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/xpath.pxi";
-static char __pyx_k_home_stefan_source_Python_lxml_11[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/xslt.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_10[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/xpath.pxi";
+static char __pyx_k_home_stefan_source_Python_lxml_11[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/xslt.pxi";
 static char __pyx_k_Error_executing_extension_elemen_2[] = "Error executing extension element '%s'";
 static char __pyx_k_Error_while_parsing_an_XML_docum_2[] = "Error while parsing an XML document as XML Schema.\n    ";
 static char __pyx_k_Error_while_parsing_an_XML_docum_3[] = "Error while parsing an XML document as Schematron schema.\n    ";
index 3f54f37..0a4cf59 100644 (file)
@@ -1542,7 +1542,7 @@ static char __pyx_k_index_must_be_enclosed_in[] = "index must be enclosed in []"
 static char __pyx_k_Type_name_must_be_a_string[] = "Type name must be a string";
 static char __pyx_k_invalid_types_for_operator[] = "invalid types for * operator";
 static char __pyx_k_ObjectifyElementClassLookup[] = "ObjectifyElementClassLookup";
-static char __pyx_k_home_stefan_source_Python_lxml[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.objectify.pyx";
+static char __pyx_k_home_stefan_source_Python_lxml[] = "/home/stefan/source/Python/lxml/lxml-hg/src/lxml/lxml.objectify.pyx";
 static char __pyx_k_http_www_w3_org_2001_XMLSchema[] = "http://www.w3.org/2001/XMLSchema";
 static char __pyx_k_index_not_allowed_on_root_node[] = "index not allowed on root node";
 static char __pyx_k_The_lxml_objectify_module_imple[] = "\nThe ``lxml.objectify`` module implements a Python object API for XML.\nIt is based on `lxml.etree`.\n";
diff --git a/tools/manylinux/build-wheels.sh b/tools/manylinux/build-wheels.sh
new file mode 100755 (executable)
index 0000000..61826cb
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/bash
+#
+# Called inside the manylinux image
+echo "Started $0 $@"
+
+set -e -x
+REQUIREMENTS=/io/requirements.txt
+WHEELHOUSE=/io/wheelhouse
+SDIST=$1
+
+build_wheel() {
+    source="$1"
+    [ -n "$source" ] || source=/io
+
+    env STATIC_DEPS=true \
+        LDFLAGS="$LDFLAGS -fPIC" \
+        CFLAGS="$CFLAGS -fPIC" \
+        ${PYBIN}/pip \
+            wheel \
+            "$source" \
+            -w $WHEELHOUSE
+}
+
+assert_importable() {
+    # Install packages and test
+    for PYBIN in /opt/python/*/bin/; do
+        ${PYBIN}/pip install lxml --no-index -f $WHEELHOUSE
+
+        (cd $HOME; ${PYBIN}/python -c 'import lxml')
+    done
+}
+
+prepare_system() {
+    yum install -y zlib-devel
+    # Remove Python 2.6 symlinks
+    rm -f /opt/python/cp26*
+}
+
+build_wheels() {
+    # Compile wheels for all python versions
+    for PYBIN in /opt/python/*/bin; do
+        test -e "$SDIST" && source="$SDIST" || source=
+        # Install build requirements if we need them and file exists
+        test -z "$SDIST" -a -e "$REQUIREMENTS" \
+            && ${PYBIN}/pip install -r "$REQUIREMENTS"
+
+        build_wheel "$source"
+    done
+}
+
+repair_wheels() {
+    # Bundle external shared libraries into the wheels
+    for whl in $WHEELHOUSE/*.whl; do
+        auditwheel repair $whl -w $WHEELHOUSE
+    done
+}
+
+show_wheels() {
+    ls -l $WHEELHOUSE
+}
+
+prepare_system
+build_wheels
+repair_wheels
+assert_importable
+show_wheels
diff --git a/tools/xpathgrep.py b/tools/xpathgrep.py
new file mode 100644 (file)
index 0000000..b566e5f
--- /dev/null
@@ -0,0 +1,334 @@
+#!/usr/bin/env python
+
+import sys
+import os.path
+
+def error(message, *args):
+    if args:
+        message = message % args
+    sys.stderr.write('ERROR: %s\n' % message)
+
+try:
+    import lxml.etree as et
+except ImportError:
+    error(sys.exc_info()[1])
+    sys.exit(5)
+
+try:
+    basestring
+except NameError:
+    basestring = (str, bytes)
+
+try:
+    unicode
+except NameError:
+    unicode = str
+
+SHORT_DESCRIPTION = "An XPath file finder for XML files."
+
+__doc__ = SHORT_DESCRIPTION + '''
+
+Evaluates an XPath expression against a series of files and prints the
+matching subtrees to stdout.
+
+Examples::
+
+  $ cat test.xml
+  <root>
+    <a num="1234" notnum="1234abc"/>
+    <b text="abc"/>
+    <c text="aBc"/>
+    <d xmlns="http://www.example.org/ns/example" num="2"/>
+    <d xmlns="http://www.example.org/ns/example" num="4"/>
+  </root>
+
+  # find all leaf elements:
+  $ SCRIPT '//*[not(*)]' test.xml
+  <a num="1234" notnum="1234abc"/>
+  <b text="abc"/>
+  <c text="aBc"/>
+
+  # find all elements with attribute values containing "abc" ignoring case:
+  $ SCRIPT '//*[@*[contains(py:lower(.), "abc")]]' test.xml
+  <a num="1234" notnum="1234abc"/>
+  <b text="abc"/>
+  <c text="aBc"/>
+
+  # find all numeric attribute values:
+  $ SCRIPT '//@*[re:match(., "^[0-9]+$")]' test.xml
+  1234
+
+  * find all elements with numeric attribute values:
+  $ SCRIPT '//*[@*[re:match(., "^[0-9]+$")]]' test.xml
+  <a num="1234" notnum="1234abc"/>
+
+  * find all elements with numeric attribute values in more than one file:
+  $ SCRIPT '//*[@*[re:match(., "^[0-9]+$")]]' test.xml test.xml test.xml
+  >> test.xml
+  <a num="1234" notnum="1234abc"/>
+  >> test.xml
+  <a num="1234" notnum="1234abc"/>
+  >> test.xml
+  <a num="1234" notnum="1234abc"/>
+
+  * find XML files that have non-empty root nodes:
+  $ SCRIPT -q '*' test.xml test.xml test.xml
+  >> test.xml
+  >> test.xml
+  >> test.xml
+
+  * find out if an XML file has at most depth three:
+  $ SCRIPT 'not(/*/*/*)' test.xml
+  True
+
+  * find all elements that belong to a specific namespace and have @num=2
+  $ SCRIPT --ns e=http://www.example.org/ns/example '//e:*[@num="2"]' test.xml
+  <d xmlns="http://www.example.org/ns/example" num="2"/>
+
+By default, all Python builtins and string methods are available as
+XPath functions through the ``py`` prefix.  There is also a string
+comparison function ``py:within(x, a, b)`` that tests the string x for
+being lexicographically within the interval ``a <= x <= b``.
+'''.replace('SCRIPT', os.path.basename(sys.argv[0]))
+
+REGEXP_NS = "http://exslt.org/regular-expressions"
+PYTHON_BUILTINS_NS = "PYTHON-BUILTINS"
+
+def make_parser(remove_blank_text=True, **kwargs):
+    return et.XMLParser(remove_blank_text=remove_blank_text, **kwargs)
+
+def print_result(result, pretty_print, encoding=None, _is_py3=sys.version_info[0] >= 3):
+    stdout = sys.stdout
+    if not stdout.isatty() and not encoding:
+        encoding = 'utf8'
+    if et.iselement(result):
+        result = et.tostring(result, xml_declaration=False, with_tail=False,
+                             pretty_print=pretty_print, encoding=encoding)
+        if not pretty_print:
+            # pretty printing appends newline, otherwise we do it
+            if isinstance(result, unicode):
+                result += '\n'
+            else:
+                result += '\n'.encode('ascii')
+    elif isinstance(result, basestring):
+        result += '\n'
+    else:
+        result = '%r\n' % result # '%r' for better number formatting
+
+    if encoding and encoding != 'unicode' and isinstance(result, unicode):
+        result = result.encode(encoding)
+
+    if _is_py3 and not isinstance(result, unicode):
+        stdout.buffer.write(result)
+    else:
+        stdout.write(result)
+
+def print_results(results, pretty_print):
+    if isinstance(results, list):
+        for result in results:
+            print_result(result, pretty_print)
+    else:
+        print_result(results, pretty_print)
+
+def iter_input(input, filename, parser, line_by_line):
+    if isinstance(input, basestring):
+        with open(input, 'rb') as f:
+            for tree in iter_input(f, filename, parser, line_by_line):
+                yield tree
+    else:
+        try:
+            if line_by_line:
+                for line in input:
+                    if line:
+                        yield et.ElementTree(et.fromstring(line, parser))
+            else:
+                yield et.parse(input, parser)
+        except IOError:
+            e = sys.exc_info()[1]
+            error("parsing %r failed: %s: %s",
+                  filename, e.__class__.__name__, e)
+
+def find_in_file(f, xpath, print_name=True, xinclude=False, pretty_print=True, line_by_line=False,
+                 encoding=None, verbose=True):
+    try:
+        filename = f.name
+    except AttributeError:
+        filename = f
+
+    xml_parser = et.XMLParser(encoding=encoding)
+
+    try:
+        if not callable(xpath):
+            xpath = et.XPath(xpath)
+
+        found = False
+        for tree in iter_input(f, filename, xml_parser, line_by_line):
+            try:
+                if xinclude:
+                    tree.xinclude()
+            except IOError:
+                e = sys.exc_info()[1]
+                error("XInclude for %r failed: %s: %s",
+                      filename, e.__class__.__name__, e)
+
+            results = xpath(tree)
+            if results is not None and results != []:
+                found = True
+                if verbose:
+                    print_results(results, pretty_print)
+
+        if not found:
+            return False
+        if not verbose and print_name:
+            print(filename)
+        return True
+    except Exception:
+        e = sys.exc_info()[1]
+        error("%r: %s: %s",
+              filename, e.__class__.__name__, e)
+        return False
+
+def register_builtins():
+    ns = et.FunctionNamespace(PYTHON_BUILTINS_NS)
+    tostring = et.tostring
+
+    def make_string(s):
+        if isinstance(s, list):
+            if not s:
+                return ''
+            s = s[0]
+        if not isinstance(s, unicode):
+            if et.iselement(s):
+                s = tostring(s, method="text", encoding='unicode')
+            else:
+                s = unicode(s)
+        return s
+
+    def wrap_builtin(b):
+        def wrapped_builtin(_, *args):
+            return b(*args)
+        return wrapped_builtin
+
+    for (name, builtin) in vars(__builtins__).items():
+        if callable(builtin):
+            if not name.startswith('_') and name == name.lower():
+                ns[name] = wrap_builtin(builtin)
+
+    def wrap_str_method(b):
+        def wrapped_method(_, *args):
+            args = tuple(map(make_string, args))
+            return b(*args)
+        return wrapped_method
+
+    for (name, method) in vars(unicode).items():
+        if callable(method):
+            if not name.startswith('_'):
+                ns[name] = wrap_str_method(method)
+
+    def within(_, s, a, b):
+        return make_string(a) <= make_string(s) <= make_string(b)
+    ns["within"] = within
+
+
+def parse_options():
+    from optparse import OptionParser
+
+    usage = "usage: %prog [options] XPATH [FILE ...]"
+
+    parser = OptionParser(
+        usage       = usage,
+        version     = "%prog using lxml.etree " + et.__version__,
+        description = SHORT_DESCRIPTION)
+    parser.add_option("-H", "--long-help",
+                      action="store_true", dest="long_help", default=False,
+                      help="a longer help text including usage examples")
+    parser.add_option("-i", "--xinclude",
+                      action="store_true", dest="xinclude", default=False,
+                      help="run XInclude on the file before XPath")
+    parser.add_option("--no-python", 
+                      action="store_false", dest="python", default=True,
+                      help="disable Python builtins and functions (prefix 'py')")
+    parser.add_option("--no-regexp", 
+                      action="store_false", dest="regexp", default=True,
+                      help="disable regular expressions (prefix 're')")
+    parser.add_option("-q", "--quiet",
+                      action="store_false", dest="verbose", default=True,
+                      help="don't print status messages to stdout")
+    parser.add_option("-t", "--root-tag",
+                      dest="root_tag", metavar="TAG",
+                      help="surround output with <TAG>...</TAG> to produce a well-formed XML document")
+    parser.add_option("-p", "--plain",
+                      action="store_false", dest="pretty_print", default=True,
+                      help="do not pretty-print the output")
+    parser.add_option("-l", "--lines",
+                      action="store_true", dest="line_by_line", default=False,
+                      help="parse each line of input separately (e.g. grep output)")
+    parser.add_option("-e", "--encoding",
+                      dest="encoding",
+                      help="use a specific encoding for parsing (may be required with --lines)")
+    parser.add_option("-N", "--ns", metavar="PREFIX=NS",
+                      action="append", dest="namespaces", default=[],
+                      help="add a namespace declaration")
+
+    options, args = parser.parse_args()
+
+    if options.long_help:
+        parser.print_help()
+        print(__doc__[__doc__.find('\n\n')+1:])
+        sys.exit(0)
+
+    if len(args) < 1:
+        parser.error("first argument must be an XPath expression")
+
+    return options, args
+
+
+def main(options, args):
+    namespaces = {}
+    if options.regexp:
+        namespaces["re"] = REGEXP_NS
+    if options.python:
+        register_builtins()
+        namespaces["py"] = PYTHON_BUILTINS_NS
+
+    for ns in options.namespaces:
+        prefix, NS = ns.split("=", 1)
+        namespaces[prefix.strip()] = NS.strip()
+
+    xpath = et.XPath(args[0], namespaces=namespaces)
+    files = args[1:] or [sys.stdin]
+
+    if options.root_tag and options.verbose:
+        print('<%s>' % options.root_tag)
+
+    found = False
+    print_name = len(files) > 1 and not options.root_tag
+    for input in files:
+        found |= find_in_file(
+            input, xpath,
+            print_name=print_name,
+            xinclude=options.xinclude,
+            pretty_print=options.pretty_print,
+            line_by_line=options.line_by_line,
+            encoding=options.encoding,
+            verbose=options.verbose,
+        )
+
+    if options.root_tag and options.verbose:
+        print('</%s>' % options.root_tag)
+
+    return found
+
+if __name__ == "__main__":
+    try:
+        options, args = parse_options()
+        found = main(options, args)
+        if found:
+            sys.exit(0)
+        else:
+            sys.exit(1)
+    except et.XPathSyntaxError:
+        error(sys.exc_info()[1])
+        sys.exit(4)
+    except KeyboardInterrupt:
+        pass
index 9575d51..b727628 100644 (file)
@@ -1 +1 @@
-3.6.1
+3.6.2