lxmldoc-2.3

download lxmldoc-2.3

of 439

Transcript of lxmldoc-2.3

  • 8/22/2019 lxmldoc-2.3

    1/438

    lxml

    2011-02-06

  • 8/22/2019 lxmldoc-2.3

    2/438

    Contents

    Contents 2

    I lxml 14

    1 lxml 15Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Mailing list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Bug tracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Old Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2 Why lxml? 20Motto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Aims . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    3 Installing lxml 22Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Building lxml rom sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Using lxml with python-libxml2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23MS Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23MacOS-X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    4 Benchmarks and Speed 25General notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25How to read the timings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Parsing and Serialising . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    The ElementTree API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Child access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Element creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Merging diferent sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31deepcopy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Tree traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32A longer example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33lxml.objectiy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    ObjectPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Caching Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Further optimisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    5 ElementTree compatibility o lxml.etree 38

    2

  • 8/22/2019 lxmldoc-2.3

    3/438

    CONTENTS CONTENTS

    6 lxml FAQ - Frequently Asked Questions 41General Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    Is there a tutorial? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Where can I nd more documentation about lxml? . . . . . . . . . . . . . . . . . . . . . . 41What standards does lxml implement? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Who uses lxml? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42What is the diference between lxml.etree and lxml.objectiy? . . . . . . . . . . . . . . . . 43How can I make my application run aster? . . . . . . . . . . . . . . . . . . . . . . . . . . 43What about that trailing text on serialised Elements? . . . . . . . . . . . . . . . . . . . . 43How can I nd out i an Element is a comment or PI? . . . . . . . . . . . . . . . . . . . . 44How can I map an XML tree into a dict o dicts? . . . . . . . . . . . . . . . . . . . . . . . 44

    Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Which version o libxml2 and libxslt should I use or require? . . . . . . . . . . . . . . . . . 45Where are the binary builds? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Why do I get errors about missing UCS4 symbols when installing lxml? . . . . . . . . . . 45

    Contributing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Why is lxml not written in Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    How can I contribute? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    My application crashes! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47My application crashes on MacOS-X! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47I think I have ound a bug in lxml. What should I do? . . . . . . . . . . . . . . . . . . . . 47How do I know a bug is really in lxml and not in libxml2? . . . . . . . . . . . . . . . . . . 48

    Threading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Can I use threads to concurrently access the lxml API? . . . . . . . . . . . . . . . . . . . 48Does my program run aster i I use threads? . . . . . . . . . . . . . . . . . . . . . . . . . 49Would my single-threaded program run aster i I turned of threading? . . . . . . . . . . 49Why cant I reuse XSLT stylesheets in other threads? . . . . . . . . . . . . . . . . . . . . 49My program crashes when run with mod_python/Pyro/Zope/Plone/... . . . . . . . . . . 49

    Parsing and Serialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Why doesnt the pretty_print option reormat my XML output? . . . . . . . . . . . . . . 50Why cant lxml parse my XML rom unicode strings? . . . . . . . . . . . . . . . . . . . . 51What is the diference between str(xslt(doc)) and xslt(doc).write() ? . . . . . . . . . . . . 51Why cant I just delete parents or clear the root node in iterparse()? . . . . . . . . . . . . 52How do I output null characters in XML text? . . . . . . . . . . . . . . . . . . . . . . . . 52Is lxml vulnerable to XML bombs? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    XPath and Document Traversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52What are the ndall() and xpath() methods on Element(Tree)? . . . . . . . . . . . . . . . 52Why doesnt ndall() support ull XPath expressions? . . . . . . . . . . . . . . . . . . . . 52How can I nd out which namespace prexes are used in a document? . . . . . . . . . . . 53How can I speciy a deault namespace or XPath expressions? . . . . . . . . . . . . . . . 53

    II Developing with lxml 54

    7 The lxml.etree Tutorial 55The Element class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    Elements are lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Elements carry attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Elements contain text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Using XPath to nd text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Tree iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Serialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    The ElementTree class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Parsing rom strings and les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    The romstring() unction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    3

  • 8/22/2019 lxmldoc-2.3

    4/438

    CONTENTS CONTENTS

    The XML() unction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64The parse() unction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Parser objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Incremental parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Event-driven parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68The E-actory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69ElementPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    8 APIs specic to lxml.etree 72lxml.etree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Other Element APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Trees and Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Error handling on exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Error logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76Serialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    CDATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77XInclude and ElementInclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78write_c14n on ElementTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    9 Parsing XML and HTML with lxml 79Parsers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    Parser options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Error log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80Parsing HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81Doctype inormation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

    The target parser interace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83The eed parser interace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84iterparse and iterwalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    Selective tag events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Comments and PIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Modiying the tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88iterwalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    Python unicode strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Serialising to Unicode strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

    10 Validation with lxml 91Validation at parse time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91DTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92RelaxNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92XMLSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    Schematron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95(Pre-ISO-Schematron) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

    11 XPath and XSLT with lxml 99XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    The xpath() method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Namespaces and prexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100XPath return values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101Generating XPath expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102The XPath class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Regular expressions in XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103The XPathEvaluator classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103ETXPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    Error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    4

  • 8/22/2019 lxmldoc-2.3

    5/438

    CONTENTS CONTENTS

    XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105XSLT result objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Stylesheet parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Errors and messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107The xslt() tree method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Dealing with stylesheet complexity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Proling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

    12 lxml.objectiy 110The lxml.objectiy API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    Creating objectiy trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110Element access through object attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Tree generation with the E-actory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Namespace handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

    Asserting a Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115ObjectPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Python data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

    Recursive tree dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Recursive string representation o elements . . . . . . . . . . . . . . . . . . . . . . . . . . 1 21

    How data types are matched . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122Type annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123XML Schema datatype annotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123The DataElement actory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125Dening additional data classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Advanced element class lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

    What is diferent rom lxml.etree? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

    13 lxml.html 131Parsing HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

    Parsing HTML ragments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

    Really broken pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131HTML Element Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Running HTML doctests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132Creating HTML with the E-actory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

    Viewing your HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Working with links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

    Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

    Form Filling Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Form Submission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

    Cleaning up HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137autolink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

    wordwrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139HTML Dif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    Microormat Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    14 lxml.cssselect 142The CSSSelector class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142CSS Selectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

    15 BeautiulSoup Parser 144Parsing with the soupparser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

    Entity handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

    5

  • 8/22/2019 lxmldoc-2.3

    6/438

    CONTENTS CONTENTS

    Using soupparser as a allback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146Using only the encoding detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

    16 html5lib Parser 147Diferences to regular HTML parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147Function Reerence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

    III Extending lxml 149

    17 Document loading and URL resolving 150XML Catalogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150URI Resolvers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150Document loading in context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151I/O access control in XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

    18 Python extensions or XPath and XSLT 155XPath Extension unctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

    The FunctionNamespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Global prex assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156The XPath context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156Evaluators and XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157Evaluator-local extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158What to return rom a unction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

    XSLT extension elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161Declaring extension elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161Applying XSL templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Working with read-only elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

    19 Using custom Element classes in lxml 164

    Background on Element proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164Element initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164Setting up a class lookup scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

    Deault class lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166Namespace class lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Attribute based lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Custom element class lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168Tree based element class lookup in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

    Generating XML with custom classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Implementing namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

    20 Sax support 172Building a tree rom SAX events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

    Producing SAX events rom an ElementTree or Element . . . . . . . . . . . . . . . . . . . . . . 1 72Interacing with pulldom/minidom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

    21 The public C-API o lxml.etree 174Writing external modules in Cython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174Writing external modules in C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    IV Developing lxml 176

    22 How to build lxml rom source 177Cython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Setuptools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

    6

  • 8/22/2019 lxmldoc-2.3

    7/438

    CONTENTS CONTENTS

    Running the tests and reporting errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178Building an egg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179Building lxml on MacOS-X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179Static linking on Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Building Debian packages rom SVN sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

    23 How to read the source o lxml 182What is Cython? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182Where to start? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

    Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183The documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

    lxml.etree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Python modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185lxml.objectiy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185lxml.html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

    24 Credits 186

    Main contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186Special thanks goes to: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

    A Changes 1882.3 (2011-02-06) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

    2.3beta1 (2010-09-06) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    2.3alpha2 (2010-07-24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    2.3alpha1 (2010-06-19) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    2.2.8 (2010-09-02) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    2.2.7 (2010-07-24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    2.2.6 (2010-03-02) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1912.2.5 (2010-02-28) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    2.2.4 (2009-11-11) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

    2.2.3 (2009-10-30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

    2.2.2 (2009-06-21) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

    Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

    7

  • 8/22/2019 lxmldoc-2.3

    8/438

    CONTENTS CONTENTS

    2.2.1 (2009-06-02) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

    2.2 (2009-03-21) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

    2.2beta4 (2009-02-27) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

    2.2beta3 (2009-02-17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

    2.2beta2 (2009-01-25) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

    2.1.5 (2009-01-06) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

    2.2beta1 (2008-12-12) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    2.1.4 (2008-12-12) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    2.0.11 (2008-12-12) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    2.2alpha1 (2008-11-23) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

    Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1972.1.3 (2008-11-17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    2.0.10 (2008-11-17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    2.1.2 (2008-09-05) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    2.0.9 (2008-09-05) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1982.1.1 (2008-07-24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    2.0.8 (2008-07-24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    2.1 (2008-07-09) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1992.0.7 (2008-06-20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    8

  • 8/22/2019 lxmldoc-2.3

    9/438

    CONTENTS CONTENTS

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    2.1beta3 (2008-06-19) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

    2.0.6 (2008-05-31) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

    2.1beta2 (2008-05-02) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

    2.0.5 (2008-05-01) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

    Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

    2.1beta1 (2008-04-15) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

    2.0.4 (2008-04-13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

    2.1alpha1 (2008-03-27) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

    Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2032.0.3 (2008-03-26) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

    2.0.2 (2008-02-22) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

    2.0.1 (2008-02-13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

    Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2052.0 (2008-02-01) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

    1.3.6 (2007-10-29) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

    1.3.5 (2007-10-22) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

    1.3.4 (2007-08-30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

    9

  • 8/22/2019 lxmldoc-2.3

    10/438

    CONTENTS CONTENTS

    Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111.3.3 (2007-07-26) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

    1.3.2 (2007-07-03) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

    1.3.1 (2007-07-02) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

    1.3 (2007-06-24) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

    1.2.1 (2007-02-27) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

    1.2 (2007-02-20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Other changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

    1.1.2 (2006-10-30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

    1.1.1 (2006-09-21) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

    1.1 (2006-09-13) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

    1.0.4 (2006-09-09) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

    1.0.3 (2006-08-08) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

    1.0.2 (2006-06-27) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

    1.0.1 (2006-06-09) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

    1.0 (2006-06-01) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

    0.9.2 (2006-05-10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

    0.9.1 (2006-03-30) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

    0.9 (2006-03-20) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

    0.8 (2005-11-03) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

    Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

    10

  • 8/22/2019 lxmldoc-2.3

    11/438

    CONTENTS CONTENTS

    0.7 (2005-06-15) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

    0.6 (2005-05-14) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Features added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Bugs xed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

    0.5.1 (2005-04-09) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240.5 (2005-04-08) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

    B Generated API documentation 226B.1 Package lxml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

    B.1.1 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227B.1.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

    B.2 Module lxml.ElementInclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228B.2.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228B.2.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228B.2.3 Class FatalIncludeError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

    B.3 Module lxml.builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230B.3.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230B.3.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230B.3.3 Class ElementMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

    B.4 Module lxml.cssselect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233B.4.1 Class SelectorSyntaxError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233B.4.2 Class ExpressionError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234B.4.3 Class CSSSelector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

    B.5 Module lxml.doctestcompare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237B.5.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237B.5.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238B.5.3 Class LXMLOutputChecker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238B.5.4 Class LHTMLOutputChecker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 9

    B.6 Module lxml.etree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241B.6.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241B.6.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249B.6.3 Class AttributeBasedElementClassLookup . . . . . . . . . . . . . . . . . . . . . . . 2 50B.6.4 Class C14NError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251B.6.5 Class CDATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252B.6.6 Class CommentBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253B.6.7 Class CustomElementClassLookup . . . . . . . . . . . . . . . . . . . . . . . . . . . 254B.6.8 Class DTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255B.6.9 Class DTDError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257B.6.10 Class DTDParseError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258B.6.11 Class DTDValidateError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

    B.6.12 Class DocumentInvalid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260B.6.13 Class ETCompatXMLParser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261B.6.14 Class ETXPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262B.6.15 Class ElementBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263B.6.16 Class ElementClassLookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265B.6.17 Class ElementDeaultClassLookup . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 65B.6.18 Class ElementNamespaceClassLookup . . . . . . . . . . . . . . . . . . . . . . . . . 266B.6.19 Class EntityBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268B.6.20 Class Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269B.6.21 Class ErrorDomains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270B.6.22 Class ErrorLevels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271B.6.23 Class ErrorTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

    B.6.24 Class FallbackElementClassLookup . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 02B.6.25 Class HTMLParser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

    11

  • 8/22/2019 lxmldoc-2.3

    12/438

    CONTENTS CONTENTS

    B.6.26 Class LxmlError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305B.6.27 Class LxmlRegistryError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306B.6.28 Class LxmlSyntaxError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307B.6.29 Class NamespaceRegistryError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308B.6.30 Class PIBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309B.6.31 Class ParseError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311B.6.32 Class ParserBasedElementClassLookup . . . . . . . . . . . . . . . . . . . . . . . . 312B.6.33 Class ParserError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313B.6.34 Class PyErrorLog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314B.6.35 Class PythonElementClassLookup . . . . . . . . . . . . . . . . . . . . . . . . . . . 316B.6.36 Class QName . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317B.6.37 Class RelaxNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319B.6.38 Class RelaxNGError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320B.6.39 Class RelaxNGErrorTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321B.6.40 Class RelaxNGParseError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324B.6.41 Class RelaxNGValidateError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325B.6.42 Class Resolver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

    B.6.43 Class Schematron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327B.6.44 Class SchematronError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329B.6.45 Class SchematronParseError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330B.6.46 Class SchematronValidateError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331B.6.47 Class SerialisationError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332B.6.48 Class TreeBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333B.6.49 Class XInclude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334B.6.50 Class XIncludeError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335B.6.51 Class XMLParser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336B.6.52 Class XMLSchema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338B.6.53 Class XMLSchemaError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340B.6.54 Class XMLSchemaParseError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 1

    B.6.55 Class XMLSchemaValidateError . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342B.6.56 Class XMLSyntaxError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343B.6.57 Class ETCompatXMLParser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344B.6.58 Class XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345B.6.59 Class XPathDocumentEvaluator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347B.6.60 Class XPathError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348B.6.61 Class XPathEvalError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349B.6.62 Class XPathFunctionError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350B.6.63 Class XPathResultError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351B.6.64 Class XPathSyntaxError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353B.6.65 Class XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354B.6.66 Class XSLTAccessControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356B.6.67 Class XSLTApplyError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

    B.6.68 Class XSLTError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359B.6.69 Class XSLTExtension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360B.6.70 Class XSLTExtensionError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361B.6.71 Class XSLTParseError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362B.6.72 Class XSLTSaveError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363B.6.73 Class iterparse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364B.6.74 Class iterwalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

    B.7 Package lxml.html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369B.7.1 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369B.7.2 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369B.7.3 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

    B.8 Module lxml.html.ElementSoup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

    B.8.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374B.9 Module lxml.html.builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

    12

  • 8/22/2019 lxmldoc-2.3

    13/438

    CONTENTS CONTENTS

    B.9.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375B.9.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

    B.10 Module lxml.html.clean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378B.10.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378B.10.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379B.10.3 Class Cleaner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

    B.11 Module lxml.html.des . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382B.11.1 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

    B.12 Module lxml.html.dif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383B.12.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

    B.13 Module lxml.html.ormll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384B.13.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384B.13.2 Class FormNotFound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384B.13.3 Class DeaultErrorCreator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

    B.14 Module lxml.html.html5parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386B.14.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386B.14.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387

    B.14.3 Class HTMLParser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387B.14.4 Class XHTMLParser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

    B.15 Module lxml.html.soupparser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389B.15.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

    B.16 Module lxml.html.usedoctest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390B.17 Package lxml.isoschematron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

    B.17.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391B.17.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391B.17.3 Class Schematron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392

    B.18 Module lxml.objectiy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395B.18.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395B.18.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

    B.18.3 Class BoolElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400B.18.4 Class ElementMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402B.18.5 Class FloatElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404B.18.6 Class IntElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405B.18.7 Class LongElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407B.18.8 Class NoneElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408B.18.9 Class NumberElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411B.18.10Class ObjectPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417B.18.11Class ObjectiedDataElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1 8B.18.12Class ObjectiedElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420B.18.13Class ObjectiyElementClassLookup . . . . . . . . . . . . . . . . . . . . . . . . . . 4 24B.18.14Class PyType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425B.18.15Class StringElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

    B.19 Module lxml.pyclasslookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431B.19.1 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

    B.20 Module lxml.sax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432B.20.1 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432B.20.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432B.20.3 Class SaxError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432B.20.4 Class ElementTreeContentHandler . . . . . . . . . . . . . . . . . . . . . . . . . . . 433B.20.5 Class ElementTreeProducer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437

    B.21 Module lxml.usedoctest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

    13

  • 8/22/2019 lxmldoc-2.3

    14/438

    Part I

    lxml

    14

  • 8/22/2019 lxmldoc-2.3

    15/438

    Chapter 1

    lxml

    lxml takes all the pain out o XML. Stephan Richter

    lxml is the most eature-rich and easy-to-use library or working with XML and HTML in the Pythonlanguage.

    Introduction

    lxml is a Pythonic binding or the libxml2 and libxslt libraries. It is unique in that it combines the

    speed and eature completeness o these libraries with the simplicity o a native Python API, mostlycompatible but superior to the well-known ElementTree API. See the introduction or more inormationabout background and goals. Some common questions are answered in the FAQ.

    For commercial consulting and customisations, please contact Stean Behnel.

    Documentation

    The complete lxml documentation is available or download as PDF documentation. The HTML docu-mentation rom this web site is part o the normal source download.

    ElementTree:

    ElementTree API

    compatibility and diferences o lxml.etree

    benchmark results

    lxml.etree:

    the lxml.etree Tutorial

    lxml.etree specic API documentation

    the generated API documentation as a reerence

    15

    http://thread.gmane.org/gmane.comp.python.lxml.devel/3252/focus=3258http://xmlsoft.org/http://xmlsoft.org/XSLThttp://effbot.org/zone/element-index.htmhttp://scoder.behnel.de/http://scoder.behnel.de/http://localhost/var/www/apps/conversion/tmp/scratch_4/lxmldoc-2.3.pdfhttp://effbot.org/zone/element-index.htm#documentationhttp://api/index.htmlhttp://api/index.htmlhttp://effbot.org/zone/element-index.htm#documentationhttp://localhost/var/www/apps/conversion/tmp/scratch_4/lxmldoc-2.3.pdfhttp://scoder.behnel.de/http://effbot.org/zone/element-index.htmhttp://xmlsoft.org/XSLThttp://xmlsoft.org/http://thread.gmane.org/gmane.comp.python.lxml.devel/3252/focus=3258
  • 8/22/2019 lxmldoc-2.3

    16/438

    CHAPTER 1. LXML

    parsing and validating XML

    XPath and XSLT support

    Python extension unctions or XPath and XSLT

    custom element classes or custom XML APIs (see EuroPython 2008 talk)

    a SAX compliant API or interacing with other XML tools

    a C-level API or interacing with external C/Pyrex modules

    lxml.objectiy:

    lxml.objectiy API documentation

    a brie comparison o objectiy and etree

    lxml.etree ollows the ElementTree API as much as possible, building it on top o the native libxml2tree. I you are new to ElementTree, start with the lxml.etree Tutorial. See also the ElementTreecompatibility overview and the benchmark r