-
- Features added
-
- * Support for running XSLT extension elements on the input root node
- (e.g. in a template matching on "/").
-
- Bugs fixed
-
- * Crash in XPath evaluation when reading smart strings from a document
- other than the original context document.
- * Support recent versions of html5lib by not requiring its XHTMLParser
- in htmlparser.py anymore.
- * Manually instantiating the custom element classes in lxml.objectify
- could crash.
- * Invalid XML text characters were not rejected by the API when they
- appeared in unicode strings directly after non-ASCII characters.
- * lxml.html.open_http_urllib() did not work in Python 3.
- * The functions strip_tags() and strip_elements() in lxml.etree did
- not remove all occurrences of a tag in all cases.
- * Crash in XSLT extension elements when the XSLT context node is not
- an element.
- Bugs fixed
-
- * The resolve_entities option did not work in the incremental feed
- parser.
- * Looking up and deleting attributes without a namespace could hit a
- namespaced attribute of the same name instead.
- * Late errors during calls to SubElement() (e.g. attribute related
- ones) could leave a partially initialised element in the tree.
- * Modifying trees that contain parsed entity references could result
- in an infinite loop.
- * ObjectifiedElement.__setattr__ created an empty-string child element
- when the attribute value was rejected as a non-unicode/non-ascii
- string
- * Syntax errors in lxml.cssselect could result in misleading error
- messages.
- * Invalid syntax in CSS expressions could lead to an infinite loop in
- the parser of lxml.cssselect.
- * CSS special character escapes were not properly handled in
- lxml.cssselect.
- * CSS Unicode escapes were not properly decoded in lxml.cssselect.
- * Select options in HTML forms that had no explicit value 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.
- * XPath raised a TypeError when finding CDATA sections. This is now
- fully supported.
- * Calling help(lxml.objectify) didn't work at the prompt.
- * The ElementMaker in lxml.objectify no longer defines the default
- namespaces when annotation is disabled.
- * Feed parser failed to honour the 'recover' option on parse errors.
- * Diverting the error logging to Python's logging system was broken.