<?xml version="1.0" encoding="ISO-8859-1"?>


<!--
     DTD for the Struts Application Configuration File, Version 1.1

     To support validation of your configuration file, include the following
     DOCTYPE element at the beginning (after the "xml" declaration):

     <!DOCTYPE struts-config PUBLIC
       "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
       "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

     $Id: struts-config_1_1.dtd,v 1.1 2003/01/24 03:45:58 jvanzyl Exp $
-->


<!-- ========== Defined Types ============================================= -->


<!-- An "AttributeName" is the identifier of a page, request, session, or
     application scope attribute.
-->
<!ENTITY % AttributeName "CDATA">


<!-- A "BeanName" is the identifier of a JavaBean, such as a form bean,
     and also serves as the name of the corresponding scripting variable
     and the name of the JSP attribute under which the bean is accessed.
     Therefore, it must conform to the rules for a Java identifier.
-->
<!ENTITY % BeanName "CDATA">


<!-- A "Boolean" is the string representation of a boolean (true or false)
     variable.
-->
<!ENTITY % Boolean "(true|false|yes|no)">


<!-- A "ClassName" is the fully qualified name of a Java class that is
     instantiated to provide the functionality of the enclosing element.
-->
<!ENTITY % ClassName "CDATA">


<!-- An "Integer" is a character string consisting solely of numeric digits,
     optionally preceeded by a minus sign, that can be converted to a
     32-bit integer.
-->
<!ENTITY % Integer "CDATA">


<!-- A "Location" is a relative path, delimited by "/" characters, that
     defines the location of a resource relative to the location of the
     Struts configuration file itself.
-->
<!ENTITY % Location "#PCDATA">


<!-- A "PropName" is the name of a JavaBeans property, and must begin with
     a lower case letter and contain only characters that are legal in a
     Java identifier.
-->
<!ENTITY % PropName "CDATA">


<!-- A "RequestPath" is an application-relative URI path, beginning with a
     slash, that identifies a mapped resource (such as a JSP page or a servlet)
     within this web application.
-->
<!ENTITY % RequestPath "CDATA">


<!-- The name of a JSP bean scope within which such a form bean may be
     accessed.
-->
<!ENTITY % RequestScope "(request|session)">


<!-- ========== Top Level Elements ======================================== -->


<!-- The "struts-config" element is the root of the configuration file
     hierarchy, and contains nested elements for all of the other
     configuration settings.
-->
<!ELEMENT struts-config (data-sources?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)>
<!ATTLIST struts-config  id             ID              #IMPLIED>


<!-- The "data-sources" element describes a set of JDBC 2.0 Standard Extension
     data source objects which will be configured according to the nested
     "data-source" elements found inside.
-->

<!ELEMENT data-sources (data-source*)>
<!ATTLIST data-sources   id             ID              #IMPLIED>


<!-- The "data-source" element describes a JDBC 2.0 Standard Extension data
     source object (that implements javax.sql.DataSource) which will be
     configured according to the properties and nested elements found here,
     and made available as a servlet context attribute (i.e. application
     scope bean).  The following attributes are required:

     className       Implementation subclass of the standard configuration
                     bean, if you do not want to use the standard value.
                     [org.apache.struts.config.DataSourceConfig]

     key             Servlet context attribute key under which this data
                     source will be stored.  Default is the value specified
                     by string constant Action.DATA_SOURCE_KEY.

                     NOTE:  The attribute under which this data source is
                     actually stored will be the key value suffixed by
                     the application prefix for this sub-application

     type            Fully qualified Java class name of the data source
                     implementation class.  This class must implement
                     "javax.sql.DataSource" and be configurable totally
                     from JavaBeans properties.
                     [org.apache.struts.util.GenericDataSource]
-->
<!ELEMENT data-source (set-property*)>
<!ATTLIST data-source    id             ID              #IMPLIED>
<!ATTLIST data-source    className      %ClassName;     #IMPLIED>
<!ATTLIST data-source    key            %AttributeName; "org.apache.struts.action.DATA_SOURCE">
<!ATTLIST data-source    type           %ClassName;     #IMPLIED>


<!-- The "global-exceptions" element configures the global handling of
     exceptions thrown by Actions to mappable resources (identified by
     application-relative URI paths).  A global "exception" handler for a
     particular exception class can be locally overridden by defining an
     "exception" element with the same "type" attribute.
-->
<!ELEMENT global-exceptions (exception*)>
<!ATTLIST global-exceptions id          ID              #IMPLIED>


<!-- The "exception" element describes a mapping of an exception that may
     occur during Action delegation and should be handled by the
     ActionServlet.

    className        Implementation subclass of the standard configuration
                     bean, if you do not want to use the standard value.
                     [org.apache.struts.config.ExceptionConfig]

    handler          Fully qualified Java class name of the exception handler
                     which should handle this exception.
                     [org.apache.struts.action.ExceptionHandler]

    key              Message resources key specifying the error message
                     associated with this exception.

    path             The application-relative path of the resource to
                     forward to if this exception occurs.

    scope            Identifier of the scope ("request" or "session")
                     within which the resulting ActionError will be
                     made accessible

    type             Fully qualified Java class name of the exception
                     that is to be handled.
-->
<!ELEMENT exception (icon?, display-name?, description?, set-property*)>
<!ATTLIST exception      id             ID              #IMPLIED>
<!ATTLIST exception      className      %ClassName;     #IMPLIED>
<!ATTLIST exception      handler        %ClassName;     #IMPLIED>
<!ATTLIST exception      key            CDATA           #REQUIRED>
<!ATTLIST exception      path           %RequestPath;   #IMPLIED>
<!ATTLIST exception      scope          CDATA           #IMPLIED>
<!ATTLIST exception      type           %ClassName;     #REQUIRED>


<!-- The "form-beans" element is the root of the set of form bean descriptors
     for this application.  The following attributes are defined:

     type            Fully qualified Java class name of the implementation
                     class used for ActionFormBean objects.  DEPRECATED.

                     WARNING:  For Struts 1.0, this value is ignored.  You
                     can set the default implementation class name with the
                     "formBean" initialization parameter to the Struts
                     controller servlet.
-->
<!ELEMENT form-beans (form-bean*)>
<!ATTLIST form-beans     id             ID              #IMPLIED>
<!ATTLIST form-beans     type           %ClassName;     #IMPLIED>


<!-- The "form-bean" element describes a particular form bean, which is a
     JavaBean that implements the org.apache.struts.action.ActionForm
     class.  The following attributes are defined:

     className       Implementation subclass of the standard configuration
                     bean, if you do not want to use the standard value.
                     [org.apache.struts.config.FormBeanConfig]

     dynamic         Is the class identified by the "type" attribute
                     a DynaActionForm with dynamic properties?  If the
                     type attribute is set to
                     "org.apache.struts.action.DynaActionForm", this
                     property defaults to true, otherwise it defaults
                     to false.

     name            Unique identifier of this bean, used to reference it
                     in corresponding action mappings.

     type            Fully qualified Java class name of the implementation
                     class to be used or generated
-->
<!ELEMENT form-bean (icon?, display-name?, description?, set-property*, form-property*)>
<!ATTLIST form-bean      id             ID              #IMPLIED>
<!ATTLIST form-bean      className      %ClassName;     #IMPLIED>
<!ATTLIST form-bean      dynamic        %Boolean;       #IMPLIED>
<!ATTLIST form-bean      name           %BeanName;      #REQUIRED>
<!ATTLIST form-bean      type           %ClassName;     #REQUIRED>


<!-- The "form-property" element describes a particular JavaBean property of a
     form bean.  It is utilized only when the "type" of the surrounding
     "form-bean" element is "org.apache.struts.action.DynaActionForm" (or
     a subclass of that class), and thus supports dynamic properties.  The
     following attributes are defined:

     className       Implementation subclass of the standard configuration
                     bean, if you do not want to use the standard value.
                     [org.apache.struts.config.FormPropertyConfig]

     initial         String representation of the initial value for
                     this property.  If not specified, primitives will
                     by initialized to zero and objects to null.

     name            JavaBeans property name of the property being described
                     by this element.

     type            Fully qualified Java class name of the implementation
                     class of this bean property, optionally followed by "[]"
                     to indicate that this property is indexed.
-->
<!ELEMENT form-property  (set-property*)>
<!ATTLIST form-property  className      %ClassName;     #IMPLIED>
<!ATTLIST form-property  initial        CDATA           #IMPLIED>
<!ATTLIST form-property  name           %PropName;      #REQUIRED>
<!ATTLIST form-property  type           %ClassName;     #REQUIRED>


<!-- The "global-forwards" element configures the global mappings of logical
     names (used within the application) to mappable resources (identified
     by application-relative URI paths).  A global "forward" with a particular
     name can be locally overridden by defining a "forward" of the same name
     within an "action" element.  The following attribute are defined:

     type            Fully qualified Java class name of the implementation
                     class used for ActionForward objects.  DEPRECATED.

                     WARNING:  For Struts 1.0, this value is ignored.  You
                     can set the default implementation class name with the
                     "forward" initialization parameter to the Struts
                     controller servlet.
-->
<!ELEMENT global-forwards (forward*)>
<!ATTLIST global-forwards id            ID              #IMPLIED>
<!ATTLIST global-forwards type          %ClassName;     #IMPLIED>


<!-- The "forward" element describes a mapping of a logical name (used within
     the application) to a mappable resource identified by an
     application-relative URI path.  The following attributes are defined:

     className       Implementation subclass of the standard configuration
                     bean, if you do not want to use the standard value.
                     [org.apache.struts.action.ActionForward]

    contextRelative  Set to "true" if the path should be considered relative
                     to the entire web application, rather than prefixed with
                     the sub-application prefix, if it starts with a "/".

     name            Unique identifier of this forward, used to reference it
                     in application action classes.

     path            The application-relative or context-relative path of
                     the mapped resource (determined by the selected value
                     for the "contextRelative" attribute).

     redirect        Set to "true" if sendRedirect() should be used to forward
                     to this resource, or "false" in order to use
                     RequestDispatcher.forward() instead.
-->
<!ELEMENT forward (icon?, display-name?, description?, set-property*)>
<!ATTLIST forward        id             ID              #IMPLIED>
<!ATTLIST forward        className      %ClassName;     #IMPLIED>
<!ATTLIST forward        contextRelative %Boolean;      #IMPLIED>
<!ATTLIST forward        name           CDATA           #REQUIRED>
<!ATTLIST forward        path           %RequestPath;   #REQUIRED>
<!ATTLIST forward        redirect       %Boolean;       #IMPLIED>


<!-- The "action-mappings" element configures the mappings from submitted
     request paths to the corresponding Action classes that should be
     used to process these requests.  The following attributes are
     defined:

     type           Fully qualified Java class name of the ActionMapping
                    implementation class to be used.

                     WARNING:  For Struts 1.0, this value is ignored.  You
                     can set the default implementation class name with the
                     "mapping" initialization parameter to the Struts
                     controller servlet.
-->
<!ELEMENT action-mappings (action*)>
<!ATTLIST action-mappings id             ID              #IMPLIED>
<!ATTLIST action-mappings type           %ClassName;     #IMPLIED>


<!-- The "action" element describes a mapping from a request paths to the
     corresponding Action classes that should be used to process these
     requests.  The following attributes are defined:

     attribute       Name of the request-scope or session-scope attribute
                     under which our form bean is accessed, if it is other
                     than the bean's specified "name".  Optional if
                     "name" is specified, else not allowed.

     className       Implementation subclass of the standard configuration
                     bean, if you do not want to use the standard value.
                     [org.apache.struts.action.ActionMapping]

     forward         Application-relative path of the servlet or JSP resource
                     that will process this request, instead of instantiating
                     and calling the Action class specified by "type".
                     Exactly one of "forward", "include", or "type" must be
                     specified.

     include         Application-relative path of the servlet or JSP resource
                     that will process this request, instead of instantiating
                     and calling the Action class specified by "type".
                     Exactly one of "forward", "include", or "type" must be
                     specified.

     input           Application-relative path of the input form to which
                     control should be returned if a validation error is
                     encountered.  Required if "name" is specified and the
                     input bean returns validation errors.  Optional if "name"
                     is specified and the input bean does not return validation
                     errors.  Not allowed if "name" is not specified.

     name            Name of the form bean, if any, that is associated
                     with this action.

     path            The Application-relative path of the submitted request,
                     starting with a "/" character, and without the
                     filename extension if extension mapping is used.
                     NOTE:  Do *not* include a period in your path name,
                     because it will look like a filename extension and
                     cause your Action to not be located.

     parameter       General purpose configuration parameter that can be used
                     to pass extra information to the Action selected by this
                     mapping.

     prefix          Prefix used to match request parameter names to form bean
                     property names, if any.  Optional if "name" is specified,
                     else not allowed.

     scope           Identifier of the scope ("request" or "session") within
                     which our form bean is accessed, if any.  Optional if
                     "name" is specified, else not allowed.

     suffix          Suffix used to match request parameter names to form bean
                     property names, if any.  Optional if "name" is specified,
                     else not allowed.

     type            Fully qualified Java class name of the Action class
                     (implements org.apache.struts.action.Action) to be
                     used to process requests for this mapping if the "forward"
                     or "include" attribute is not included.  Exactly one
                     of "forward", "include", or "type" must be specified.

     unknown         Set to "true" if this action should be configured as the
                     default for this application, to handle all requests
                     not handled by another action.  Only one action can be
                     defined as a default within a single application.

     validate        Set to "true" if the validate() method of the form bean
                     should be called prior to calling this action, or set to
                     "false" if you do not want validation performed.
-->
<!ELEMENT action (icon?, display-name?, description?, set-property*, exception*, forward*)>
<!ATTLIST action         id             ID              #IMPLIED>
<!ATTLIST action         attribute      %BeanName;      #IMPLIED>
<!ATTLIST action         className      %ClassName;     #IMPLIED>
<!ATTLIST action         forward        %RequestPath;   #IMPLIED>
<!ATTLIST action         include        %RequestPath;   #IMPLIED>
<!ATTLIST action         input          %RequestPath;   #IMPLIED>
<!ATTLIST action         name           %BeanName;      #IMPLIED>
<!ATTLIST action         parameter      CDATA           #IMPLIED>
<!ATTLIST action         path           %RequestPath;   #REQUIRED>
<!ATTLIST action         prefix         CDATA           #IMPLIED>
<!ATTLIST action         scope          %RequestScope;  #IMPLIED>
<!ATTLIST action         suffix         CDATA           #IMPLIED>
<!ATTLIST action         type           %ClassName;     #IMPLIED>
<!ATTLIST action         unknown        %Boolean;       #IMPLIED>
<!ATTLIST action         validate       %Boolean;       #IMPLIED>


<!-- The "controller" element specifies the controller characterstics for
     requests directed to this application.  The following attributes are
     defined:

     bufferSize      The size of the input buffer used when processing
                     file uploads.  [4096]

     className       Implementation subclass of the standard configuration
                     bean, if you do not want to use the standard value.
                     [org.apache.struts.config.ControllerConfig]

     contentType     Default content type (and optional character encoding)
                     to be set on each response.  May be overridden by a
                     forwarded-to servlet or JSP page.  [text/html]

     debug           Debugging detail level for this application.  [0]

     locale          Set to true if you want a Locale object stored in the
                     user's session if not already present.  [true]

     maxFileSize     The maximum size (in bytes) of a file to be accepted
                     as a file upload.  Can be expressed as a number followed
                     by a "K", "M", or "G", which are interpreted to mean
                     kilobytes, megabytes, or gigabytes, respectively.  [250M]

     multipartClass  The fully qualified Java class name of the multipart
                     request handler class to be used.
                     [org.apache.struts.upload.DiskMultipartRequestHandler]

     nocache         Set to <code>true</code> if you want Struts to add
                     HTTP headers for defeating caching to every response.
                     [false]

     processorClass  The fully qualified Java class name of the
                     RequestProcessor class to be used.
                     [org.apache.struts.action.RequestProcessor]

     tempDir         Temporary working directory to use when processing
                     file uploads.  [Directory provided by servlet container]
-->
<!ELEMENT controller     (set-property*)>
<!ATTLIST controller     id             ID              #IMPLIED>
<!ATTLIST controller     bufferSize     %Integer;       #IMPLIED>
<!ATTLIST controller     className      %ClassName;     #IMPLIED>
<!ATTLIST controller     contentType    CDATA           #IMPLIED>
<!ATTLIST controller     debug          %Integer;       #IMPLIED>  
<!ATTLIST controller     locale         %Boolean;       #IMPLIED>
<!ATTLIST controller     maxFileSize    CDATA           #IMPLIED>
<!ATTLIST controller     multipartClass %ClassName;     #IMPLIED>
<!ATTLIST controller     nocache        %Boolean;       #IMPLIED>
<!ATTLIST controller     processorClass %ClassName;     #IMPLIED>
<!ATTLIST controller     tempDir        CDATA           #IMPLIED>


<!-- The "message-resources" element specifies the characteristics of the
     MessageResources containing the messages for this application.  The
     following attributes are defined:

     className       Implementation subclass of the standard configuration
                     bean, if you do not want to use the standard value.
                     [org.apache.struts.config.MessageResourcesConfig]

     factory         Fully qualified Java class name of the
                     MessageResourcesFactory class we should use, if any.
                     By default, this is set to
                     org.apache.struts.util.PropertyMessageResourcesFactory.

     key             Servlet context attribute key under which this
                     message resources bundle will be stored.  Default is the
                     value specified by the string constant
                     Action.MESSAGES_KEY.

                     NOTE:  The attribute under which this message resources is
                     actually stored will be the key value suffixed by
                     the application prefix for this sub-application

     null            Set to true if you want our message resources to return
                     a null string for unknown message keys, or false to
                     return a message with the bad key value.  [true]

     parameter       Configuration parameter to be passed to the
                     createResources() method of our MessageResourcesFactory.
-->
<!ELEMENT message-resources EMPTY>
<!ATTLIST message-resources id          ID              #IMPLIED>
<!ATTLIST message-resources className   %ClassName;     #IMPLIED>
<!ATTLIST message-resources factory     %ClassName;     #IMPLIED>
<!ATTLIST message-resources key         %AttributeName; "org.apache.struts.action.MESSAGE">
<!ATTLIST message-resources null        %Boolean;       #IMPLIED>
<!ATTLIST message-resources parameter   CDATA           #REQUIRED>


<!-- The "plug-in" element specifies the fully qualified class name of a
     general purpose application plug-in module that receives notification
     of application startup and shutdown events.  An instance of the
     specified class is created for each element, and can be configured
     with nested "set-property" elements.  The following attributes
     are supported:

     className       Fully qualified Java class name of the plug-in class
                     (must implement org.apache.struts.PlugIn).
-->
<!ELEMENT plug-in           (set-property*)>
<!ATTLIST plug-in           id          ID              #IMPLIED>
<!ATTLIST plug-in           className   %ClassName;     #REQUIRED>


<!-- ========== Subordinate Elements ====================================== -->


<!-- The "description" element contains descriptive (paragraph length) text
     about the surrounding element, suitable for use in GUI tools.
-->
<!ELEMENT description    (#PCDATA)>
<!ATTLIST description    id             ID              #IMPLIED>


<!-- The "display-name" element contains a short (one line) description of
     the surrounding element, suitable for use in GUI tools.
-->
<!ELEMENT display-name (#PCDATA)>
<!ATTLIST display-name   id             ID              #IMPLIED>


<!-- The "icon" element contains a small-icon and large-icon element which
     specify the location, relative to the Struts configuration file, for small
     and large images used to represent the surrounding element in GUI tools.
-->
<!ELEMENT icon           (small-icon?, large-icon?)>
<!ATTLIST icon           id             ID              #IMPLIED>


<!-- The "large-icon" element specifies the location, relative to the Struts
     configuration file, of a resource containing a large (32x32 pixel)
     icon image.
-->
<!ELEMENT large-icon     (%Location;)>
<!ATTLIST large-icon     id             ID              #IMPLIED>


<!-- The "set-property" element specifies the name and value of an additional
     JavaBeans configuration property whose setter method will be called
     on the object that represents our surrounding element.  This is especially
     useful when an extended implementation class (with additional properties)
     is configured on the <global-forwards> or <action-mappings> elements.
     The following attributes are defined:

     property        Name of the JavaBeans property whose setter method
                     will be called.

     value           String representation of the value to which this
                     property will be set, after suitable type conversion
-->
<!ELEMENT set-property   EMPTY>
<!ATTLIST set-property   id             ID              #IMPLIED>
<!ATTLIST set-property   property       %PropName;      #REQUIRED>
<!ATTLIST set-property   value          CDATA           #REQUIRED>


<!-- The "small-icon" element specifies the location, relative to the Struts
     configuration file, of a resource containing a small (16x16 pixel)
     icon image.
-->
<!ELEMENT small-icon     (%Location;)>
<!ATTLIST small-icon     id             ID              #IMPLIED>

