Differences between revisions 2 and 24 (spanning 22 versions)
Revision 2 as of 2005-02-12 21:43:10
Size: 82
Editor: aaron
Comment: resources on the wiki about XML
Revision 24 as of 2009-09-11 04:01:59
Size: 4921
Editor: UcheOgbuji
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
 * ["Sax"], MiniDom
 * XmlBooks
= Python and XML =

A variety of XML processing solutions are available for Python. This page attempts, at the very least, to list the most actively developed or most easily available.

== Packages in the standard library ==

The standard library has a number of tools available, which fall into mainly three categories:

 * a pythonesque, simple-to-use and very fast XML tree library:
   * ElementTree - the xml.etree package (new in Python 2.5 but available for older versions)
 * an event-driven XML parser compatible with the W3C SAX standard:
   * [[Sax]] - the xml.sax package
 * XML tree libraries that adhere to the W3C DOM standard:
   * MiniDom - the xml.dom.minidom package
   * PullDom - the xml.dom.pulldom package

The DOM and SAX packages have the advantage of being compatible to W3C standard APIs, so users who are already familiar with these APIs can use them without learning too many new things. Everyone else should start with the more pythonic ElementTree library, which is very well integrated into the Python language, and therefore very easy to learn and use.

== External packages ==

A long list of special purpose and general purpose Python XML packages is available from [[http://pypi.python.org/pypi?:action=browse&show=all&c=500|PyPI]]. The following is a choice of major tools that support a broader set of XML features.

=== Pythonic tools ===

 * [[http://xml3k.org/Amara2|Amara 2.x]] - Amara provides tools you can trust to conform with XML standards without losing the familiar Python feel
 * [[http://codespeak.net/lxml/|lxml]] - a pythonic, ElementTree-compatible binding for the [[http://xmlsoft.org/|libxml2]] and [[http://xmlsoft.org/XSLT/|libxslt]] libraries that comes with all sorts of powerful XML (and HTML) tools, well integrated into an easy-to-use Python API
 * [[http://codespeak.net/lxml/objectify.html|lxml.objectify]] - a Python object API for XML based on lxml

=== W3C DOM-like libraries ===

 * [[http://4suite.org/|4Suite]] - a framework for XML (and RDF) processing
 * [[http://www.ikaaro.org/itools/|itools.xml]] - itools provides XML processing support in a fashion similar to that of PullDom
 * [[http://www.python.org/pypi/libxml2dom|libxml2dom]] - PyXML-style API for the libxml2 Python bindings
 * [[http://sourceforge.net/projects/pyxml/|PyXML]] - external add-on to Python's original XML support - '''WARNING''': this is no longer maintained! Do not use in new code!
 * [[http://www.python.org/pypi/qtxmldom|qtxmldom]] - PyXML-style API for the qtxml Python bindings

=== XPath Support ===

 * [[http://xml3k.org/Amara2|Amara 2.x]] - Amara exposes an API to fully-compliant XPath (including [[http://www.exslt.org/|EXSLT]])
 * [[http://code.google.com/p/py-dom-xpath/|py-dom-xpath]] - pure Python XPath implementation for use with DOM libraries
 * [[http://codespeak.net/lxml/|lxml]] - lxml has standards compliant XPath 1.0 support based on libxml2. It also supports the [[http://www.exslt.org/|EXSLT]] extensions (including Python regular expressions) and allows calling Python functions from within XPath expressions.

=== XSLT Support ===

If not mentioned otherwise, this means XSLT 1.0, not XSLT 2.0.

 * [[http://xml3k.org/Amara2|Amara 2.x]] - Amara exposes an API to fully-compliant XSLT (including [[http://www.exslt.org/|EXSLT]])
 * [[http://codespeak.net/lxml/|lxml]] has excellent (and easy-to-use) XSLT support that is based on [[http://xmlsoft.org/XSLT/|libxslt]]. It also supports calling into Python code from XSL transformations through both XPath and XSLT extensions.
 * [[http://www.python.org/pypi/XSLTools|XSLTools]] - XSL transformations on top of [[http://xmlsoft.org/XSLT/|libxslt]] and [[http://www.python.org/pypi/libxml2dom|libxml2dom]], with added Web development support
 * Some tools linked from the [[http://www.w3.org/XML/Query/#implementations|XQuery homepage]] provide Python bindings for their XSLT2 and XPath2 implementations

=== XML-based Communications ===

 * [[http://pyxmpp.jajcus.net/|PyXMPP]] - a Python XMPP (RFC 3920,3921) and [[http://www.jabber.org/protocol/|Jabber]] implementation
 * [[http://jabberpy.sourceforge.net/|jabber.py]] - a Python module for the jabber instant messaging protocol
 * [[http://xmpppy.sourceforge.net/|xmpppy]] - a Python library that is targeted to provide easy scripting with Jabber

=== Web Services ===
Line 5: Line 62:
 * PythonSoap  * see [[WebServices]]

=== Object Serialisation in XML ===

 * [[http://coder.cl/software/pyxser/|pyxser]]

== Books and Articles ==

 * XmlBooks
 * [[Tutorials on XML processing with Python]]

== SIG ==

 * http://python.org/community/sigs/current/xml-sig

== Editorial Notes ==

The above lists should be arranged in ascending alphabetical order - please respect this when adding new entries. When specifying release dates please use the format YYYY-MM-DD.

Python and XML

A variety of XML processing solutions are available for Python. This page attempts, at the very least, to list the most actively developed or most easily available.

Packages in the standard library

The standard library has a number of tools available, which fall into mainly three categories:

  • a pythonesque, simple-to-use and very fast XML tree library:
    • ElementTree - the xml.etree package (new in Python 2.5 but available for older versions)

  • an event-driven XML parser compatible with the W3C SAX standard:
    • Sax - the xml.sax package

  • XML tree libraries that adhere to the W3C DOM standard:
    • MiniDom - the xml.dom.minidom package

    • PullDom - the xml.dom.pulldom package

The DOM and SAX packages have the advantage of being compatible to W3C standard APIs, so users who are already familiar with these APIs can use them without learning too many new things. Everyone else should start with the more pythonic ElementTree library, which is very well integrated into the Python language, and therefore very easy to learn and use.

External packages

A long list of special purpose and general purpose Python XML packages is available from PyPI. The following is a choice of major tools that support a broader set of XML features.

Pythonic tools

  • Amara 2.x - Amara provides tools you can trust to conform with XML standards without losing the familiar Python feel

  • lxml - a pythonic, ElementTree-compatible binding for the libxml2 and libxslt libraries that comes with all sorts of powerful XML (and HTML) tools, well integrated into an easy-to-use Python API

  • lxml.objectify - a Python object API for XML based on lxml

W3C DOM-like libraries

  • 4Suite - a framework for XML (and RDF) processing

  • itools.xml - itools provides XML processing support in a fashion similar to that of PullDom

  • libxml2dom - PyXML-style API for the libxml2 Python bindings

  • PyXML - external add-on to Python's original XML support - WARNING: this is no longer maintained! Do not use in new code!

  • qtxmldom - PyXML-style API for the qtxml Python bindings

XPath Support

  • Amara 2.x - Amara exposes an API to fully-compliant XPath (including EXSLT)

  • py-dom-xpath - pure Python XPath implementation for use with DOM libraries

  • lxml - lxml has standards compliant XPath 1.0 support based on libxml2. It also supports the EXSLT extensions (including Python regular expressions) and allows calling Python functions from within XPath expressions.

XSLT Support

If not mentioned otherwise, this means XSLT 1.0, not XSLT 2.0.

  • Amara 2.x - Amara exposes an API to fully-compliant XSLT (including EXSLT)

  • lxml has excellent (and easy-to-use) XSLT support that is based on libxslt. It also supports calling into Python code from XSL transformations through both XPath and XSLT extensions.

  • XSLTools - XSL transformations on top of libxslt and libxml2dom, with added Web development support

  • Some tools linked from the XQuery homepage provide Python bindings for their XSLT2 and XPath2 implementations

XML-based Communications

  • PyXMPP - a Python XMPP (RFC 3920,3921) and Jabber implementation

  • jabber.py - a Python module for the jabber instant messaging protocol

  • xmpppy - a Python library that is targeted to provide easy scripting with Jabber

Web Services

Object Serialisation in XML

Books and Articles

SIG

Editorial Notes

The above lists should be arranged in ascending alphabetical order - please respect this when adding new entries. When specifying release dates please use the format YYYY-MM-DD.

PythonXml (last edited 2012-01-11 01:11:25 by c-66-41-60-82)

Unable to edit the page? See the FrontPage for instructions.