[XML-SIG] XIST 2.9 has been released

Walter Dörwald walter at livinglogic.de
Thu Apr 21 19:39:31 CEST 2005

XIST 2.9 has been released!

What is it?

XIST is an extensible HTML/XML generator written in Python. XIST is
also a DOM parser (built on top of SAX2) with a very simple and
Pythonesque tree API. Every XML element type corresponds to a Python
class, and these Python classes provide a conversion method to transform
the XML tree (e.g. into HTML). XIST can be considered "object oriented XSL".

What's new in version 2.9?

   * XIST trees can now be pickled. The only restriction is that
     global attributes must come from a namespace that has been turned
     into a module via makemod, so that this module can be imported on
   * Two arguments of the walk method have been renamed: filtermode
     has been renamed to inmode and walkmode has been renamed to
     outmode. For these modes two new values are supported:

         The value passed to the filter function or yielded from the
         iterator is a list containing child indizes and attribute names
         that specify the path to the node in question.
         The filter function will be called with two arguments: The
         first is the root node of the tree (i.e. the node for which
         walk has been called), the second one is an index path (just
         like for ll.xist.xsc.walkindex). If used as an outmode a tuple
         with these two values will be yielded.

   * Attribute mappings now support __getitem__, __setitem__ and
     __delitem__ with list arguments, i.e. you can do:
         >>> from ll.xist.ns import html
         >>> e = html.a("gurk", href=("hinz", "kunz"))
         >>> print e.attrs[["href", 0]]
         >>> e.attrs[["href", 0]] = "hurz"
         >>> print e["href"]
         >>> del e.attrs[["href", 0]]
         >>> print e["href"]

   * XML attributes can now be accessed as Python attributes, i.e.
         >>> from ll.xist.ns import html
         >>> e = html.a("spam", href="eggs")
         >>> print e.attrs.href

     (Don't confuse this with e.Attrs.href which is the attribute

   * Frag and Element now support Node subclasses in their __getitem__
     method: An iterator for all children of the specified type will be
   * The encoding used for parsing now defaults to None. When reading
     from an URL and no default encoding has been specified the one from
     the Content-Type header will be used. If this still doesn't result
     in a usable encoding, "utf-8" will be used when parsing XML and
     "iso-8859-1" will be used when parsing broken HTML.
   * All error and warning classes from ll.xist.errors have been
     merged into ll.xist.xsc. This avoids import problems with circular
   * The attributes showLocation and showPath of
     ll.xist.presenters.TreePresenter have been lowercased and
     presenters are properly reset after they've done their job.
   * The class attribute xmlname will no longer be turned into a list
     containing the Python and the XML name, but will be the XML name
     only. You can get the Python name from foo.__class__.__name__.
   * DeprecationWarnings for name and attrHandlers have finally been
   * Instances of ll.xist.xsc.Entity subclasses can now be compared.
     __eq__ simply checks if the objects are instances of the same

For changes in older versions see:

Where can I get it?

XIST can be downloaded from http://ftp.livinglogic.de/xist/
or ftp://ftp.livinglogic.de/pub/livinglogic/xist/

Web pages are at http://www.livinglogic.de/Python/xist/

ViewCVS access is available at http://www.livinglogic.de/viewcvs/

For information about the mailing lists go to

     Walter Dörwald

More information about the XML-SIG mailing list