Interpreter is Joran's main driving class. It extends SAX {@link org.xml.sax.helpers.DefaultHandler DefaultHandler} which invokesvarious {@link Action actions} according to predefined patterns.
Patterns are kept in a {@link RuleStore} which is programmed to store andthen later produce the applicable actions for a given pattern.
The pattern corresponding to a top level <a> element is the string "a".
The pattern corresponding to an element <b> embedded within a top level <a> element is the string "a/b".
The pattern corresponding to an <b> and any level of nesting is "*/b. Thus, the * character placed at the beginning of a pattern serves as a wildcard for the level of nesting. Conceptually, this is very similar to the API of commons-digester. Joran offers several small advantages. First and foremost, it offers support for implicit actions which result in a significant leap in flexibility. Second, in our opinion better error reporting capability. Third, it is self-reliant. It does not depend on other APIs, in particular commons-logging which is too unreliable. Last but not least, Joran is quite tiny and is expected to remain so.
@author Ceki Gülcuü