I had been using Cocoon to develop a website and I quickly ran into three problems. First, I wanted to write tag libraries in Python, not Java. While you could do this in Cocoon, it was hard to leverage existing Java tag libraries from Python tag libraries and vice-versa.
Asmo solves this problem in two ways. First communication between tag libraries is through XML. This means that tag libraries can be written in any language and you can combined tags processed by C with tags processed by Python in thesame document. Second, Asmo is recursive so the output from one tag library is easily passed to another tag library. Also a given tag library can output tags that invoke another tag library.
Second, writing tag libraries in XSL is disgusting. With Java it was bad, but with Python it was horrible due to Python's use of whitespace for grouping.
Asmo solves this problem by having all of the tag libraries implement some subset of a SAX2-like interface in language-pure modules. Each tag library is just written in the author's favorite language.
Third, Cocoon is fairly large. Tons of overhead for the simple kinds of things I wanted to do.
Asmo is just a small library. There is also an Apache module built using the library. It comes with a command-line utility that lets you run asmo on any file.