lxml
====

Exposing libxml2 functionalities
--------------------------------

* potential threading issues in XPath extension functions?

* Python extension functions, threading issues.

* Improved Relax NG error reporting. Right now we only get valid or invalid.

* Improved XML Schema error reporting. Right now we only get valid or invalid.

* Improved error handling in general; test structured exceptions in more
  detail.

* See whether XInclude support can mimic ElementTree's API.

* Test XML entities, also in an ElementTree context.

* Support for loading files from other places than filesystem, for
  instance xslt:include, xslt:import, XInclude, Relax NG import.

* More tests for error handling.

In general
----------

* test namespaces more in-depth

* will namespaces nodes of unknown namespaces be added (and never freed?)

* Various (c)ElementTree builders and parser APIs. Are they needed?

* memory errors and memory leaks when returning nodes from XPath
  extension functions.

Top level
---------

* parse() support for custom parsers. (?)

* ProcessingInstruction

* XMLID

ElementInterface
-----------------

* improve getiterator() implementation to use Python-level iterators

ElementTree
-----------

* _setroot(), even though this is not strictly a public method.

* parse() - this seems hard to implement sanely so this may be an
  incompatibility.

* improve write() and write_c14n() support to use file pointers
  directly where possible, instead of going through memory.

QName
-----

Not yet implemented.
