===============
ToDo's for lxml
===============

lxml
====

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

* Test XML entities, also in an ElementTree context.


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

* test namespaces more in-depth

* more testing on multi-threading

* better exception messages for XPath and schemas based on error log,
  e.g. missing namespace mappings in XPath


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

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


QName
-----

* expose prefix support?


Objectify
---------

* emulate setting special __attributes__ on ObjectifiedElement's as Python
  attributes, not XML children


Features
--------

* RelaxNG compact notation (rnc versus rng) support.  Currently not supported
  by libxml2 (patch exists)


lxml 2.0
========

* always use '<string>' as URL when tree was parsed from string? (can libxml2
  handle this?)

* clean up (and remove?) duplicated API for extension functions

* remove first 'context' argument from extension functions

* always use ns-prefixed type names in objectify's ``xsi:type`` attributes

* follow PEP 8 in API naming (avoidCamelCase in_favour_of_underscores)

* clean support for entities (is the Entity element class enough?)
