commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim O'Brien <tobr...@discursive.com>
Subject Re: [DIGESTER] Newbie : Voice XML Implementation ?
Date Tue, 10 Jun 2003 14:39:06 GMT
On Tue, 2003-06-10 at 11:06, Shahed Moolji wrote:
> By reading the intro to Digester, it looks like the right tool to build such
> an application.

I'm partial to Digester, but in the interest of "full disclosure", there
is another tool named Castor which might also be of use. It is available
from Exolab - http://www.exolab.org . Castor seems to have a lower
conceptual barrier to entry, but in terms of performance and usability,
I've found Digester to be leaner and more flexible.

> 1. Has anyone out there implemented VXML using Digester ?
Not I, but it wouldn't be very difficult to implement.  From what I see
in the VoiceXML 2.0 spec, it should be too difficult to come up with an
XML ruleset definition and an object model for VoiceXML 2.0.  Please, if
you do this consider placing it under an Apache style license and
contributing the code.

> 2. Are there any good examples that show me how to use digester other than
> to parse a config file ?

I'm assuming you'd want to parse VoiceXML into some sort of hierarchical
object model, that is not dissimilar from the way that RSS is parsed in
Digester or the way the config files in Struts are parsed. 

There are a few places to find examples of using the Digester, 

EXAMPLE 1. Digester Ships with a "Demo" that can "digest" RSS - Look at
the source code of Digester, and you'll see a package
org.apache.commons.digester.rss.  You'll find two RSS DTDs and Example
XML file for RSS, some objects, and a class named RSSDigester.java. 

http://cvs.apache.org/viewcvs/jakarta-commons/digester/src/java/org/apache/commons/digester/rss/RSSDigester.java?rev=1.5&content-type=text/vnd.viewcvs-markup

RSSDigester contains programmatic statements to create a parser for RSS,
you can use this as a model for implementing your own Digester.  You
should take note that the RSSDigester is somewhat obsoleted by the
ability to specify digester rule sets in an XML file.  Just be aware
that, a better approach would involve taking the contents of the
configure() function in RSSDigester, putting these into an XML file, and
then creating a Digester instance from this configuration file.

EXAMPLE 2. The Test cases:
http://cvs.apache.org/viewcvs/jakarta-commons/digester/src/test/org/apache/commons/digester/
. This might be a little confusing for someone very new to Digester, but once you get a hold
of using the Digester from Example 1, looking at the source code for the test cases will shed
light on the available feature-set.

EXAMPLE 3. Find another project that depends on the commons-digester -
You can look at a number of project through jakarta-gump's website, and
find a project that depends on Digester - like say the "older brother"
of Digester - jakarta-struts.  Here is a class similar to RSSDigester
for Struts -
http://cvs.apache.org/viewcvs/jakarta-struts/src/share/org/apache/struts/config/ConfigRuleSet.java?rev=1.14&content-type=text/vnd.viewcvs-markup

As you can see, a number of projects that depend on Struts still use the
programmatic definition of the rule sets in Java code.  These
implementations can all just as easily be implemented using an XML rule
set definition.




Mime
View raw message