Fortunately (and unfortunately) there is a lot of XML software for Python, and it's not always easy to sort out how the parts all fit together.
For simple non-validating SAX and DOM processing, all you need is Python. Python comes with minidom, which is not a full DOM implementation, but does provide a lot of the common needs. Python also comes with pulldom, which provides the efficiency of SAX and some of the convenient interface of DOM. Python also offers PyExpat for low-level parser code, but you have to have compiled it in when you installed Python.
If you need a more complete DOM implementation and some SAX/DOM integration tools, You'll want to install PyXML. PyXML also provides the XPath implementation from 4Suite 0.11.1, and it can also install the XSLT implementation from 4Suite 0.11.1, although this is not enabled by default, and should not be relied upon.
If you need a high-efficiency DOM, you'll want cDomlette, in 4Suite. 4Suite also provides a lot of other matter: a complete XSLT and XPath implementation (including EXSLT), a complete RDF implementation, XUpdate, XInclude, and partial XLink and XPointer. But the biggest addition is an XML/RDF repository and Web/FTP server piece.
This chart provides a compatibility matrix for PyXML, 4Suite, and PyExpat.
Among other things in that chart, something to note is the fact that there was a major interface change in namespace processing in PyXML 0.7.1. This tends to mean that software released before this revision does not work with software released afterwards, and vice versa. This mostly affects PyXML and 4Suite.
Most of my tips and examples assume you are using newer versions of PyXML and 4Suite. If you must use older versions, the only combination I recommend is PyXML 0.6.6 and 4Suite 0.11.1. 4Suite versions after 0.11.1 will not work with PyXML versions before 0.7.0, and PyXML versions after 0.6.6 will not work on 4Suite versions before 0.12.
If you choose to go with the newer branches of 4Suite, you may want to consider installing from CVS.
