<a href="http://uche.ogbuji.net/tech/4suite/amara">http://uche.ogbuji.net/tech/4suite/amara</a><br><a href="ftp://ftp.4suite.org/pub/Amara/">ftp://ftp.4suite.org/pub/Amara/</a><br><br>Changes since Amara 1.1.6:<br><br>* Deprecate xml_text_content property
<br>* Add xml_child_text property that concatenates all immediate child<br>&nbsp; text nodes (no recursive descent)<br>* Change unicode coercion for documents and elements to recurse through<br>&nbsp; all descendant text (now analogous to XPath's string() coercion)
<br>* Return added or removed node in<br>&nbsp; - xml_append<br>&nbsp; - xml_insert_after<br>&nbsp; - xml_insert_before<br>&nbsp; - xml_remove_child<br>&nbsp; - xml_remove_child_at<br>* Update allinone bundle to 4Suite 1.0b3<br>* Packaging fixes<br>
<br>Amara XML Toolkit is a collection of Python tools for XML processing--<br>not just tools that happen to be written in Python, but tools built from<br>the ground up to use Python idioms and take advantage of the many<br>
advantages of Python.<br><br>Amara builds on 4Suite [<a href="http://4Suite.org">http://4Suite.org</a>], but whereas 4Suite focuses<br>more on literal implementation of XML standards in Python, Amara<br>focuses on Pythonic idiom.&nbsp; It provides tools you can trust to conform
<br>with XML standards without losing the familiar Python feel.<br><br>The components of Amara are:<br><br>* Bindery: data binding tool (a very Pythonic XML API)<br>* Scimitar: implementation of the ISO Schematron schema language for
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XML; converts Schematron files to Python scripts<br>* domtools: set of tools to augment Python DOMs<br>* saxtools: set of tools to make SAX easier to use in Python<br>* Flextyper: user-defined datatypes in Python for XML processing
<br><br>There's a lot in Amara, but here are highlights:<br><br>Amara Bindery: XML as easy as py<br>--------------------------------<br><br>Bindery turns an XML document into a tree of Python objects corresponding to<br>the vocabulary used in the XML document, for maximum clarity.&nbsp; For example,
<br>the document <br><br>&lt;monty&gt;<br>&nbsp; &lt;python spam=&quot;eggs&quot;&gt;What do you mean &quot;bleh&quot;&lt;/python&gt;<br>&nbsp; &lt;python ministry=&quot;abuse&quot;&gt;But I was looking for argument&lt;/python&gt;<br>
&lt;/monty&gt;<br><br>Becomes a data structure such that you can write<br><br>binding.monty.python.spam<br><br>In order to get the value &quot;eggs&quot; or<br><br>binding.monty.python[1]<br><br>In order to get the value &quot;But I was looking for argument&quot;.
<br><br>There are other such tools for Python, and what makes Anobind unique is<br>that it's driven by a very declarative rules-based system for binding<br>XML to the Python data.&nbsp; You can register rules that are triggered by
<br>XPattern expressions specialized binding behavior.&nbsp; It includes XPath<br>support and supports mutation.&nbsp; Bindery is very efficient, using SAX<br>to generate bindings.<br><br>Scimitar: Schematron for Pytthon<br>--------------------------------
<br><br>Merged in from a separate project, Scimitar is an implementation of ISO<br>Schematron that compiles a Schematron schema into a Python validator<br>script.<br><br>You typically use scimitar in two phases.&nbsp; Say you have a schematron
<br>schema schema1.stron and you want to validate multiple XML files<br>against it, instance1.xml, instance2.xml, instance3.xml.<br><br>First you run schema1.stron through the scimitar compiler script,<br>scimitar.py:<br>
<br>scimitar.py schema1.stron<br><br>The generated file, schema1.py, can be used to validate XML instances:<br><br>python schema1.py instance1.xml<br><br>Which emits a validation report.<br><br>Amara DOM Tools: giving DOM a more Pythonic face
<br>------------------------------------------------<br><br>DOM came from the Java world, hardly the most Pythonic API possible.<br>Some DOM-like implementations such as 4Suite's Domlettes mix in some<br>Pythonic idiom. Amara DOM Tools goes even further.
<br><br>Amara DOM Tools feature pushdom, similar to xml.dom.pulldom, but<br>easier to use.&nbsp; It also includes Python generator-based tools for<br>DOM processing, and a function to return an XPath location for<br>any DOM node.
<br><br>Amara SAX Tools: SAX without the brain explosion<br>------------------------------------------------<br><br>Tenorsax (amara.saxtools.tenorsax) is a framework for &quot;linerarizing&quot; SAX<br>logic so that it flows more naturally, and needs a lot less state
<br>machine wizardry.<br><br>License<br>-------<br><br>Amara is open source, provided under the 4Suite variant of the Apache<br>license.&nbsp; See the file COPYING for details.<br><br>Installation<br>------------<br><br>Amara 
1.1.7 requires Python 2.4 or more recent.&nbsp; If you do not have<br>4Suite XML 1.0b2 or better, grab the Amara-allinone package.&nbsp; If you<br>already have 4Suite XML installed, grab the stand along Amara package.<br>In either case, unpack to a convenient location and run:
<br><br>python setup.py install<br><br><br>-- <br>Uche<br><a href="http://uche.ogbuji.net">http://uche.ogbuji.net</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://copia.ogbuji.net">http://copia.ogbuji.net</a><br>