<html>
<head>
<title>Status File for Jakarta Commons "Digester" Component</title>
<head>
<body bgcolor="white">


<div align="center">
<h1>The Jakarta Commons <em>Digester</em> Component</h1>
$Id$<br>
<a href="#Introduction">[Introduction]</a>
<a href="#Dependencies">[Dependencies]</a>
<a href="#Release Info">[Release Info]</a>
<a href="#Committers">[Committers]</a>
<a href="#Action Items">[Action Items]</a>
<br><br>
</div>


<a name="Introduction"></a>
<h3>1.  INTRODUCTION</h3>

 <p>
 This scope of the <em>Digester</em> component is primarily
 oriented to  XML -> Java object mapping.
 </p>
 <p>
  A <em>Digester</em> processes an XML input stream by matching a
  series of element nesting patterns to execute Rules that have been added
  prior to the start of parsing.  This package was inspired by the
  <code>XmlMapper</code> class that was part of Tomcat 3.0 and 3.1,
  but is organized somewhat differently.
 </p>

 <p>
  The original source was donated by the
  <a href="http://jakarta.apache.org/struts">Struts Framework</a> subproject.
 </p>


<a name="Dependencies"></a>
<h3>2.  DEPENDENCIES</h3>

<p>The <em>Digester</em> component is dependent upon implementations of the following 
standard components for development and use:</p>
<ul>
<li><a href="http://java.sun.com/j2se">Java Development Kit</a>
    (Version 1.2 or later)</li>
<li><strong>XML Parser</strong> compatible with the JAXP/1.1 specification.
    Examples compatible implementations include:
    <ul>
    <li><a href="http://java.sun.com/xml">JAXP/1.1 Reference Implementation</a></li>
    <li><a href="http://xml.apache.org/xerces-j">Xerces</a> (Version 1.3.1 or later)</li>
    </ul></li>
</ul>
<p>
It is also dependent on a compatible set of 
<a href='http://jakarta.apache.org/commons'>Jakarta Commons</a> library components:
</p>
    <table border="1" width="100%" cellspacing="2" cellpadding="3">
        <tr class="a"><th colspan="4">Compatible Dependency Sets</th></tr>   
        <tr class="b"><td>Digester</td><td>+Logging 1.0.x</td><td>+BeanUtils 1.x</td><td>+Collections 2.x</td></tr>
        <tr class="a"><td>Digester</td><td>+Logging 1.0.x</td><td>+BeanUtils 1.x</td><td>+Collections 3.x</td></tr>
        <tr class="b"><td>Digester</td><td>+Logging 1.0.x</td><td>+BeanUtils 1.7</td><td>-</td></tr>
    </table>

<a name="Release Info"></a>
<h3>3.  RELEASE INFO</h3>

<p>Current Release: Version 1.7</p>


<a name="Committers"></a>
<h3>4.  COMMITTERS</h3>

<p>The following individuals are the primary developers and maintainers of this
component.  Developers who plan to use <em>Digester</em> in their own
projects are encouraged to collaborate on the future development of this
component to ensure that it continues to meet a variety of needs.</p>
<ul>
<li><a href="mailto:craigmcc@apache.org">Craig McClanahan</a></li>
<li>Rodney Waldhoff</li>
<li><a href="mailto:sanders@apache.org">Scott Sanders</a></li>
<li><a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a></li>
<li><a href="mailto:rdonkin@apache.org">Robert Burrell Donkin</a></li>
<li><a href="mailto:tobrien@apache.org">Tim O'Brien</a></li>
<li><a href="mailto:jstrachan@apache.org">James Strachan</a></li>
<li><a href="mailto:skitching@apache.org">Simon Kitching</a></li>
</ul>
</body>
</html>
