About Us
Home
Contributors
License
Components
Sandbox
Jelly
Overview
FAQ
Getting Started
Tutorial
Detail
JellyDoc
Download
Tag Reference
Community
IRC
Powered By
To Do List
Features
JellyUnit
JellySwing
JellySWT
XML Pipeline
Core Tags
Tag Libraries
General Information
Charter
Volunteering
Contributing Patches
Releasing Components
Jakarta Community
Get Involved
Mailing Lists
Commons Resources (Unofficial)
Wiki
Japanese Translation
Korean Translation
Related
DB Commons
XML Commons

### TODO

The following is a list of items that need to be completed in Jelly. Contributions are welcome!.

### Core tasks

- Implementa a META-INF/services mechanism for mapping Jelly libraries to namespace URIs in a similar way to how the commons-discovery and JAXP libraries work. This would allow Jelly libraries to be distributed in a self contained JAR then just put on the classpath and they'd be usable.
- Implement a JJAR/Maven mechanism so that using a new Jelly library via a namespace URI would automatically download the jar and its dependencies from some local/remote repository.
- Maybe add a Scope class to make it easier to plugin custom scopes such as request, session, applicaiton, initParams, params, transation etc. In a workflow setting this could also include transient and persistent scopes
- Write a JellyServlet so that Jelly can be used as a page templating system.
- Implement a HTML parser for Jelly, probably using NeckoHTML so that non-XML can be parsed and tags with prefixes can be bound to Jelly tags.
- write a Cocoon JellyGenerator so that Jelly scripts can be used easily inside Cocoon
- consider implementing a Jelly Doclet so that Jelly can be used to code generate stuff from javadoc tags in a similar way to XDoclet but making use of the JSTL tags and the Velocity like expression language (Jexl) which will avoid the need to use huge numbers of tags.
- Rename the DynaTag interface to be DynamicAttributes along with JSP1.3, also add a namespace URI parameter
- Add support for namespace URI use inside XPath expressions.
- When defining new tags using <define:tag>, we should allow attributes to be named,
  specified as required, specify the optional conditions and so forth for validating instances.
  I guess this could just be normal script though.
- The org.apache.commons.jelly.impl package doesn't have a great name -
  Can we think of a better one?
  Also some of the classes in this package could maybe do with a rename?
  ScriptBlock for example - should we just call it a Block or maybe a CompositeScript?
- Add an adapter to run JSP tag libraries inside Jelly when Jelly is used in a Servlet / JSP environment?
- Document much more!

### Ideas for new tag libraries

- An XSD tag library that can be used to parse XSD documents and create DynaBeans from the complex types.

      <xsd:element name="MyDynamicClass">
        <xsd:complexType>
            ...
        </xsd:complexType>
      </xsd:element>

  Also we could consider using class names or XSD type names to do conversions of values, maybe using the ConvertUtils class in beanutils.
- conside a tag library which implements the STX specification for the SAX based transformation of XML. This is kinda like XPath and XSLT but is based purely on a SAX stream. Maybe we could wrap Joost in a Jelly tag library
- Implement a Schematron tag library for validing XML using a path based approach, rather than schema based.
- Provide support for running a piece of Jelly script remotely. This would be particularly useful for distributed testing. Maybe integrating or enhancing something like rant

### Changes to existing tag libraries

- Add JSL test cases to test for ordering of patterns and that the correct output comes out.

### Ponder about

The following is a list of things that might be good to add to Jelly, maybe after more thought.

- maybe consider a tag which will switch the default EL to XPath; then XPath and EL can be peers. Then ${foo} can be used as an XPath expression anywhere
- We could autogenerate XML Schemas or RelaxNG docs for tag libraries to help validate scripts
- Patch TagLibrary to alias all <mixedCase> tags to <mixed-case> tags