1933
Comment: XSLT
|
4318
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
== Parsers == | == Packages in the standard library == |
Line 7: | Line 7: |
In the standard library: | The standard library has a number of tools available, which fall into mainly three categories: |
Line 9: | Line 9: |
* ElementTree - the xml.etree package (new in Python 2.5) * MiniDom - the xml.dom.minidom package * ["Sax"] - the xml.sax package |
* 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 |
Line 13: | Line 17: |
Available separately: | 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. |
Line 15: | Line 19: |
* [http://4suite.org/ 4Suite] - a framework for XML (and RDF) processing * [http://uche.ogbuji.net/tech/4suite/amara/manual Amara] - Amara provides tools you can trust to conform with XML standards without losing the familiar Python feel * [http://www.python.org/pypi/libxml2dom libxml2dom] - PyXML-style API for the libxml2 Python bindings * [http://codespeak.net/lxml/ lxml] - a "Pythonic" binding for the libxml2 and libxslt libraries * [http://pyxml.sourceforge.net/ PyXML] - the semi-official Python distribution for XML, now without a maintainer * [http://www.python.org/pypi/qtxmldom qtxmldom] - PyXML-style API for the qtxml Python bindings |
== External packages == |
Line 22: | Line 21: |
== XSLT == | 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. |
Line 24: | Line 23: |
* [http://uche.ogbuji.net/tech/akara/nodes/2003-01-01/python-xslt XSLT tools for Python] - a collection of examples and links by Uche Ogbuji | === Pythonic tools === |
Line 26: | Line 25: |
== XML-based Communications == | * [[http://uche.ogbuji.net/tech/4suite/amara/manual|Amara]] - 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 libxml2 and 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 |
Line 28: | Line 29: |
* [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 |
=== W3C DOM-like libraries === |
Line 32: | Line 31: |
== Web Services == | * [[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://code.google.com/p/py-dom-xpath/|py-dom-xpath]] - pure Python XPath implementation for use with DOM libraries === XSLT Support === If not mentioned otherwise, this means XSLT 1.0, not XSLT 2.0. * [[http://uche.ogbuji.net/tech/akara/nodes/2003-01-01/python-xslt|XSLT tools for Python]] - an (older) collection of examples and links by Uche Ogbuji * [[http://codespeak.net/lxml/|lxml]] has excellent support for XSLT that is based on libxslt * [[http://www.python.org/pypi/XSLTools|XSLTools]] - XSL transformations on top of 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 36: | Line 60: |
* PythonSoap | * see [[WebServices]] === Object Serialisation in XML === * [[http://coder.cl/software/pyxser/|pyxser]] |
Line 41: | Line 69: |
* [[Tutorials on XML processing with Python]] == SIG == * http://python.org/community/sigs/current/xml-sig |
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:
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 - 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
py-dom-xpath - pure Python XPath implementation for use with DOM libraries
XSLT Support
If not mentioned otherwise, this means XSLT 1.0, not XSLT 2.0.
XSLT tools for Python - an (older) collection of examples and links by Uche Ogbuji
lxml has excellent support for XSLT that is based on libxslt
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.