The Apache Commons Jelly team is pleased to announce the commons-jelly 1.0.1 release!

http://commons.apache.org/jelly/

Jelly is a Java and XML based scripting engine. Jelly combines the best ideas 
from JSTL, Velocity, DVSL, Ant and Cocoon all together in a simple yet 
powerful scripting engine. 

This is the first stable release of Jelly. It can be used as a standalone application
to run scripts, or incorporated into your Java applications.

Notable changes since the 1.0 release:
- JELLY-293: Accommodate toggling off DTD external entities.

Have fun!
-The Apache Commons team
      
