[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
unpickling.
* 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:
ll.xist.xsc.walkindex
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.
ll.xist.xsc.walkrootindex
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]]
hinz
>>> e.attrs[["href", 0]] = "hurz"
>>> print e["href"]
hurzkunz
>>> del e.attrs[["href", 0]]
>>> print e["href"]
kunz
* 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
eggs
(Don't confuse this with e.Attrs.href which is the attribute
class.)
* Frag and Element now support Node subclasses in their __getitem__
method: An iterator for all children of the specified type will be
returned.
* 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
imports.
* 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
removed.
* Instances of ll.xist.xsc.Entity subclasses can now be compared.
__eq__ simply checks if the objects are instances of the same
class.
For changes in older versions see:
http://www.livinglogic.de/Python/xist/History.html
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
http://www.livinglogic.de/Python/xist/Mailinglists.html
Bye,
Walter Dörwald
More information about the XML-SIG
mailing list