lxml
====

Introduction
------------

lxml is a Pythonic binding for the libxml2_ and libxslt_ libraries. See
the introduction_ for more information about background and goals.

.. _libxml2: http://xmlsoft.org

.. _libxslt: http://xmlsoft.org/XSLT

.. _introduction: intro.html

News
----

* 2006-03-30: `lxml 0.9.1`_ released (`changes for 0.9.1`_)

* 2006-03-20: `lxml 0.9`_ released (`changes for 0.9`_)

* 2005-11-03: `lxml 0.8`_ released (`changes for 0.8`_)

* 2005-06-15: `lxml 0.7`_ released (`changes for 0.7`_)

* 2005-05-14: `lxml 0.6`_ released (`changes for 0.6`_)

* 2005-04-09: `lxml 0.5.1`_ released (`changes for 0.5.1`_)

* 2005-04-08: `lxml 0.5`_ released!

.. _`lxml 0.9.1`: lxml-0.9.1.tgz

.. _`lxml 0.9`: lxml-0.9.tgz

.. _`lxml 0.8`: lxml-0.8.tgz

.. _`lxml 0.7`: lxml-0.7.tgz

.. _`lxml 0.6`: lxml-0.6.tgz

.. _`lxml 0.5.1`: lxml-0.5.1.tgz

.. _`lxml 0.5`: lxml-0.5.tgz

.. _`CHANGES for 0.9.1`: changes-0.9.1.html

.. _`CHANGES for 0.9`: changes-0.9.html

.. _`CHANGES for 0.8`: changes-0.8.html

.. _`CHANGES for 0.7`: changes-0.7.html

.. _`CHANGES for 0.6`: changes-0.6.html

.. _`CHANGES for 0.5.1`: changes-0.5.1.html

Documentation
-------------

lxml follows the `ElementTree API`_ as much as possible, building it
on top of the native libxml2 tree. See also the `ElementTree
compatibility overview`_.

lxml also `extends this API`_ to expose libxml2 and libxslt specific
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 `extension functions`_.

In addition to the ElementTree API, lxml also features an API for
`implementing namespaces`_ using tag specific element classes.  This is a
simple way to write arbitrary XML driven APIs on top of lxml.

lxml also offers a `SAX compliant API`_, that works with the SAX support
in the standar dlibrary.

.. _`ElementTree API`: http://effbot.org/zone/element-index.htm

.. _`ElementTree compatibility overview`: compatibility.html

.. _`extends this API`: api.html

.. _`extension functions`: extensions.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/2001/REC-xml-c14n-20010315

.. _`implementing namespaces`: namespace_extensions.html

.. _`SAX compliant API`: sax.html

Mailing list
------------

Questions? Suggestions? Code to contribute? We have a `mailing list`_.

.. _`mailing list`: http://codespeak.net/mailman/listinfo/lxml-dev

Download
--------

* `lxml 0.9.1`_ (2006-03-30)

* `lxml 0.9`_ (2006-03-20)

* `lxml 0.8`_ (2005-11-03)

* `lxml 0.7`_ (2005-06-15)

* `lxml 0.6`_ (2005-05-14)

* `lxml 0.5.1`_ (2005-04-09)

* `lxml 0.5`_ (2005-04-08)

See also the `installation instructions`_.

.. _`installation instructions`: installation.html

It's also possible to check out the latest development version of lxml
from svn directly, using a command like this::

  svn co http://codespeak.net/svn/lxml/trunk lxml

You can also `browse it through the web`_.

.. _`browse it through the web`: http://codespeak.net/svn/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.
