<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
    <tlib-version>1.3</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>html</short-name>
    <uri>http://struts.apache.org/tags-html</uri>
    <description>
        <![CDATA[
  <p>
        This taglib contains tags used to create struts
        input forms, as well as other tags generally useful
                in the creation of HTML-based user interfaces.
  </p>

  <p>Many of the tags in this tag library will throw a
  <code>JspException</code> at runtime when they are utilized incorrectly
  (such as when you specify an invalid combination of tag attributes).  JSP
  allows you to declare an "error page" in the <code>&lt;%@ page %&gt;</code>
  directive.  If you wish to process the actual exception that caused the
  problem, it is passed to the error page as a request attribute under key
  <code>org.apache.struts.action.EXCEPTION</code>.</p>
  ]]>
    </description>
    <tag>
        <name>base</name>
        <tag-class>org.apache.struts.taglib.html.BaseTag</tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[
            <p><strong>Render an HTML <code>&lt;base&gt;</code> Element</strong></p>
          
          <p>Renders an HTML <code>&lt;base&gt;</code> element with an
          <code>href</code> attribute pointing to the absolute location of
          the enclosing JSP page.  This tag is valid only when nested inside
          an HTML <code>&lt;head&gt;</code> element.</p>

          <p>This tag is useful because it allows you to use relative URL
          references in the page that are calculated based on the URL of the
          page itself, rather than the URL to which the most recent submit
          took place (which is where the browser would normally resolve
          relative references against).</p>
          ]]>
        </description>
        <attribute>
            <name>target</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
              <p>The window target for this base reference.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>server</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
              <p>The server name to use instead of request.getServerName().</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ref</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
              <p>The reference from which the base uri will created.  Possible values are:
              </p>
              <ul>
                <li><code>page</code> - The base uri will be the jsp page location. (default)</li>
                <li><code>site</code> - The base uri will be the application context path.</li>
              </ul>

              <dl><dt><b>Since:</b></dt>
              <dd>Struts 1.3</dd></dl>

            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>button</name>
        <tag-class>org.apache.struts.taglib.html.ButtonTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>Render A Button Input Field</strong></p>
          
            <p>
                Renders an HTML &lt;input&gt; element of type
                <code>button</code>, populated from the specified value or the
                content of this tag body. This tag is only valid when nested
                inside a form tag body.
            </p>
            <p>
             If a graphical button is needed (a button with an image), then the
             <a href="#image"><code>image</code></a> tag is more appropriate.
            </p>
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The keyboard character used to move focus immediately to this
                element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    <p>The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.</p>
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          <p>Set to <code>true</code> if this input field should be
          disabled.</p>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                <p>Valid only inside of <code>logic:iterate</code> tag.
                If <code>true</code> then name of the html tag will be rendered as
                "propertyName[34]". Number in brackets will be generated for
                every iteration and taken from ancestor logic:iterate tag.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Value of the label to be placed on this button. This value will
                also be submitted as the value of the specified request parameter.
                [Body of this tag (if any), or "Click"]
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>cancel</name>
        <tag-class>org.apache.struts.taglib.html.CancelTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
            Render a Cancel Button
        </strong></p>
          
            <p>
                Renders an HTML &lt;input&gt; element of type submit. This tag is only
                valid when nested inside a form tag body. Pressing of this submit
                button causes the action servlet to bypass calling the associated
                form bean validate() method. The action is called normally.
            </p>
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the request parameter that will be included with this
                submission, set to the specified value.
                <strong>WARNING</strong> - If you set this attribute to a
                value other than the default, this will <em>NOT</em> be
                recognized as the cancel key by the Struts controller servlet
                or the <code>Action.isCancelled()</code> method.  You will
                need to do your own cancel detection.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Value of the label to be placed on this button. This value will
                also be submitted as the value of the specified request parameter.
                [Body of this tag (if any), or "Cancel"]
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>checkbox</name>
        <tag-class>org.apache.struts.taglib.html.CheckboxTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
            Render A Checkbox Input Field
        </strong></p>
          
            <p>Renders an HTML &lt;input&gt; element of type
                        <code>checkbox</code>, populated from the specified
                        value or the specified property of the bean associated
                        with our current form. This tag is only valid when
                        nested inside a form tag body.</p>

            <p><strong>NOTE</strong>:  The underlying property value
            associated with this field should be of type <code>boolean</code>,
            and any <code>value</code> you specify should correspond to one
            of the Strings that indicate a true value ("true", "yes", or
            "on").  If you wish to utilize a set of related String values,
            consider using the <code>multibox</code> tag.</p>

                        <p><strong>WARNING</strong>:  In order to correctly
                        recognize unchecked checkboxes, the
                        <code>ActionForm</code> bean associated with this form
                        must include a statement setting the corresponding
                        boolean property to <code>false</code> in the
                        <code>reset()</code> method.</p>                        
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Name of the bean (in any scope) under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.</p>

                  <p><strong>N.B.</strong> This is used in conjunction with the 
                  <code>errorStyle</code>, <code>errorStyleClass</code> and 
                  <code>errorStyleId</code> attributes and should be set to
                  the same value as the <code>name</code> attribute on the
                  &lt;html:errors/&gt; tag.</p> 
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element if
                an error exists for it.</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>style</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element if
                an error exists for it (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleClass</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element if
                an error exists for it (renders an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleId</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of <code>logic:iterate</code> tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element.</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyle</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleClass</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element (renders
                an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleId</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        The value to be transmitted if this checkbox is
                        checked when the form is submitted.  If not specified,
                        the value "on" will be returned.
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>errors</name>
        <tag-class>org.apache.struts.taglib.html.ErrorsTag</tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[
            <p><strong>
                Conditionally display a set of accumulated error messages.
                </strong></p>
          
                <p>Displays a set of error messages prepared by a business
                logic component and stored as an <code>ActionMessages</code>
                object, an <code>ActionErrors</code>
                object, a String, or a String array in any scope.  If
                such a bean is not found, nothing will be rendered.</p>

                <p>In order to use this tag successfully, you must have
                defined an application scope <code>MessageResources</code>
                bean under the default attribute name, with optional
                definitions of message keys specified in the following
                attributes:</p>
                <ul>
                <li><strong>header</strong> - Text that will be rendered
                before the error messages list.  Typically, this message text
                will end with <code>&lt;ul&gt;</code> to start the
                error messages list (default "errors.header").</li>
                <li><strong>footer</strong> - Text that will be rendered
                after the error messages list.  Typically, this message text
                will begin with <code>&lt;/ul&gt;</code> to end the error
                messages list (default "errors.footer").</li>
                <li><strong>prefix</strong> - Text that will be rendered
                before each individual error in the list (default "errors.prefix").</li>
                <li><strong>suffix</strong> - Text that will be rendered
                after each individual error in the list (default "errors.suffix").</li>
                </ul>
                
                <p>See the <code>messages</code> tag for an alternative to this tag that
                    does not rely on HTML in your <code>MessageResources</code>.</p>

                ]]>
        </description>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attribute key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>footer</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  This value is an optional message resource key that will
                  be printed after the iteration of error messages has finished.
                  Defaults to "errors.footer" if not specified.
                  
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>header</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  This value is an optional message resource key that will
                  be printed before the iteration of error messages begins.
                  Defaults to "errors.header" if not specified.
                  
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The session attribute key for the Locale used to select
                    messages to be displayed.  If not specified, defaults to
                    the Struts standard value.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  Name of the bean (in any scope) under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>prefix</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  This value is an optional message resource key that will
                  be printed before an error message.
                  Defaults to "errors.prefix" if not specified.
                  
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  Name of the property for which error messages should be
                  displayed.  If not specified, all error messages (regardless
                  of property) are displayed.
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>suffix</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  This value is an optional message resource key that will
                  be printed after an error message.
                  Defaults to "errors.suffix" if not specified.
                  
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>file</name>
        <tag-class>org.apache.struts.taglib.html.FileTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
            Render A File Select Input Field
        </strong></p>
          
            <p>
                Renders an HTML &lt;input&gt; element of type file, defaulting to
                the specified value or the specified property of the bean
                associated with our current form. This tag is only valid when
                nested inside a form tag body.
            </p>
            <p>
                As with the corresponding HTML &lt;input&gt; element, the
                enclosing form element must specify "POST" for the <code>method</code>
                attribute, and "multipart/form-data" for the <code>enctype</code>
                attribute. For example:
            </p>
    <pre>
    &lt;html:form method="POST" enctype="multipart/form-data"&gt;
        &lt;html:file property="theFile" /&gt;
    &lt;/html:form&gt;</pre>

            <p>
            WARNING: In order to correctly recognize uploaded files, the ActionForm bean
            associated with this form must include a statement setting the corresponding
            org.apache.struts.upload.FormFile property to null in the reset() method.
            </p>
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>accept</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Comma-delimited set of content types that the server you submit to
                knows how to process. This list can be used by the client browser
                to limit the set of file options that is made available for selection.
                If not specified, no content type list will be sent.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Name of the bean (in any scope) under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.</p>

                  <p><strong>N.B.</strong> This is used in conjunction with the 
                  <code>errorStyle</code>, <code>errorStyleClass</code> and 
                  <code>errorStyleId</code> attributes and should be set to
                  the same value as the <code>name</code> attribute on the
                  &lt;html:errors/&gt; tag.</p> 
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element if
                an error exists for it.</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>style</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element if
                an error exists for it (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleClass</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element if
                an error exists for it (renders an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleId</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of <code>logic:iterate</code> tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>maxlength</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Maximum number of input characters to accept.  This is ignored
                by most browsers. [No limit]
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>size</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Size of the file selection box to be displayed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element.</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyle</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleClass</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element (renders
                an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleId</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
            <p>The advisory title for this element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
            <p>The message resources key for the advisory title
            for this element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
            <p>
                <strong>NOTE</strong>: When setting this to some value, whether
                intentional or as the result (for example) of validation errors 
                forcing the user back to the original jsp, this value is ignored 
                by most browsers (for security reasons).
                This means that your users will have to re-select any previously
                selected files when submitting the form.  Opera web browser will
                prompt the user so they have a chance to abort the submit.
            </p>
                Value to which this field should be initialized. [Use the
                corresponding bean property value or body content (if any) if 
                property is not specified]
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>form</name>
        <tag-class>org.apache.struts.taglib.html.FormTag</tag-class>
        <body-content>JSP</body-content>
        <description>
            <![CDATA[
            <p><strong>
            Define An Input Form
        </strong></p>
          
            <p>
                Renders an HTML &lt;form&gt; element whose contents are described
                by the body content of this tag. The form implicitly interacts
                with the specified request scope or session scope bean to populate
                the input fields with the current property values from the bean.
            </p>
            <p>
                The form bean is located, and created if necessary, based on the 
                form bean specification for the associated <code>ActionMapping</code>.
            </p>
        ]]>
        </description>
        <attribute>
            <name>action</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        <p>The URL to which this form will be submitted.  This
                        value is also used to select the ActionMapping we are
                        assumed to be processing, from which we can identify
                        the appropriate form bean and scope.  If a value is not
                        provided, the original URI (servletPath) for the request is 
                        used. </p>

                        <p>If you are using extension mapping for selecting the
                        controller servlet, this value should be equal to the
                        <code>path</code> attribute of the corresponding
                        <code>&lt;action&gt;</code> element, optionally
                        followed by the correct extension suffix.</p>

                        <p>If you are using path mapping to select the
                        controller servlet, this value should be exactly equal
                        to the <code>path</code> attribute of the corresponding
                        <code>&lt;action&gt;</code> element.</p>
                        ]]>
            </description>
        </attribute>
        <attribute>
            <name>acceptCharset</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The list of character encodings for input data that the server should
                accept.
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.2</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Set to <code>true</code> if the Form's input fields should be
                disabled.
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.7</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>enctype</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The content encoding to be used to submit this form, if the method
                is POST. This must be set to "multipart/form-data" if you are using
                the file tag to enable file upload. If not specified, the browser
                default (normally "application/x-www-form-urlencoded") is used.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>focus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The field name (among the fields on this form) to which initial
                focus will be assigned with a JavaScript function. If not specified,
                no special JavaScript for this purpose will be rendered.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>focusIndex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                If the focus field is a field array, such as a radio button group, you can 
                specify the index in the array to receive focus.
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.1</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>method</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The HTTP method that will be used to submit this request
                (GET, POST). [POST]
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onreset</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed if the form is reset.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onsubmit</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed if the form is submitted.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>readonly</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Set to <code>true</code> if the Form's input fields should be
                read only.
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.7</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>scriptLanguage</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                The form's focus &lt;script&gt; element will not contain a language attribute
                when this is set to false.  The default is true but this property is ignored
                in XHMTL mode.
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>target</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Window target to which this form is submitted, such as
                for use in framed presentations.
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>frame</name>
        <tag-class>org.apache.struts.taglib.html.FrameTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>Render an HTML frame element</strong></p>
          

            <p>Renders an HTML <code>&lt;frame&gt;</code> element
            with processing for the <code>src</code> attribute that is
            identical to that performed by the <code>&lt;html:link&gt;</code>
            tag for the <code>href</code> attribute.  URL rewriting will be
            applied automatically, to maintain session state in the
            absence of cookies.</p>

            <p>The base URL for this frame is calculated based on
            which of the following attributes you specify (you must
            specify exactly one of them):</p>
            <ul>
            <li><em>forward</em> - Use the value of this attribute as the
                name of a global <code>ActionForward</code> to be looked
                up, and use the module-relative or context-relative
                URI found there.</li>
            <li><em>href</em> - Use the value of this attribute unchanged.
                </li>
            <li><em>page</em> - Use the value of this attribute as a
                module-relative URI, and generate a server-relative
                URI by including the context path and application
                prefix.</li>
            <li><em>action</em> - Use the value of this attribute as the
                logical name of a global Action that contains the actual 
                content-relative URI of the destination of this transfer.</li>
            </ul>

            <p>Normally, the hyperlink you specify with one of the
            attributes described in the previous paragraph will be left
            unchanged (other than URL rewriting if necessary).  However,
            there are two ways you can append one or more dynamically
            defined query parameters to the hyperlink -- specify a single
            parameter with the <code>paramId</code> attribute (and its
            associated attributes to select the value), or specify the
            <code>name</code> (and optional <code>property</code>)
            attributes to select a <code>java.util.Map</code> bean that
            contains one or more parameter ids and corresponding values.
            </p>

            <p>To specify a single parameter, use the <code>paramId</code>
            attribute to define the name of the request parameter to be
            submitted.  To specify the corresponding value, use one of the
            following approaches:</p>
            <ul>
            <li><em>Specify only the <code>paramName</code> attribute</em>
                - The named JSP bean (optionally scoped by the value of the
                <code>paramScope</code> attribute) must identify a value
                that can be converted to a String.</li>
            <li><em>Specify both the <code>paramName</code> and
                <code>paramProperty</code> attributes</em> - The specified
                property getter method will be called on the JSP bean
                identified by the <code>paramName</code> (and optional
                <code>paramScope</code>) attributes, in order to select
                a value that can be converted to a String.</li>
            </ul>

            <p>If you prefer to specify a <code>java.util.Map</code> that
            contains all of the request parameters to be added to the
            hyperlink, use one of the following techniques:</p>
            <ul>
            <li><em>Specify only the <code>name</code> attribute</em> -
                The named JSP bean (optionally scoped by the value of
                the <code>scope</code> attribute) must identify a
                <code>java.util.Map</code> containing the parameters.</li>
            <li><em>Specify both <code>name</code> and
                <code>property</code> attributes</em> - The specified
                property getter method will be called on the bean
                identified by the <code>name</code> (and optional
                <code>scope</code>) attributes, in order to return the
                <code>java.util.Map</code> containing the parameters.</li>
            </ul>

            <p>As the <code>Map</code> is processed, the keys are assumed
            to be the names of query parameters to be appended to the
            hyperlink.  The value associated with each key must be either
            a String or a String array representing the parameter value(s),
            or an object whose toString() method will be called.
            If a String array is specified, more than one value for the
            same query parameter name will be created.</p>

            <p>Additionally, you can request that the current transaction
            control token, if any, be included in the generated hyperlink
            by setting the <code>transaction</code> attribute to
            <code>true</code>.
            You can also request that an anchor ("#xxx") be added to the
            end of the URL that is created by any of the above mechanisms,
            by using the <code>anchor</code> attribute.</p>

         ]]>
        </description>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>action</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
               <p>Logical name of a global <code>Action</code> that
               contains the actual content-relative URI of the destination
               of this transfer.  This hyperlink may be dynamically
               modified by the inclusion of query parameters, as described
               in the tag description.  You <strong>must</strong> specify
               exactly one of the <code>action</code> attribute, the
               <code>forward</code> attribute, the
               <code>href</code> attribute,
               or the <code>page</code> attribute.</p>
               
               <p>Additionally, you can specify a <code>module</code> prefix 
               for linking to other modules.</p>
                           
           ]]>
            </description>
        </attribute>
        <attribute>
            <name>module</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
               <p>Prefix name of a <code>Module</code> that
               contains the action mapping for the <code>Action</code>
               that is specified by the <code>action</code> attribute.
               You <strong>must</strong> specify an <code>action</code> 
               attribute for this to have an effect.</p>
        
               <p><strong>Note: </strong>Use "" to map to the default module.</p>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>anchor</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Optional anchor tag ("#xxx") to be added to the generated
                hyperlink.  Specify this value <strong>without</strong> any
                "#" character.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>forward</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Logical name of a global <code>ActionForward</code> that
                contains the actual content-relative URI of the destination
                of this transfer.  This hyperlink may be dynamically
                modified by the inclusion of query parameters, as described
                in the tag description.  You <strong>must</strong> specify
                exactly one of the <code>action</code> attribute, the
                <code>forward</code> attribute, the
                <code>href</code> attribute,
                or the <code>page</code> attribute.</p>
             ]]>
            </description>
        </attribute>
        <attribute>
            <name>frameborder</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Should a frame border be generated around this frame (1)
                or not (0)?</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>frameName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Value for the <code>name</code> attribute of the rendered
                <code>&lt;frame&gt;</code> element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>href</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The URL to which this hyperlink will transfer control
                 if activated.  This hyperlink may be dynamically modified
                 by the inclusion of query parameters, as described in the
                 tag description.  You <strong>must</strong> specify
                 exactly one of the <code>action</code> attribute, the
                 <code>forward</code> attribute, the
                 <code>href</code> attribute,
                 or the <code>page</code> attribute.</p>
             ]]>
            </description>
        </attribute>
        <attribute>
            <name>longdesc</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>URI of a long description of the frame.  This description
                should supplement the short description provided by the
                <code>title</code> attribute, and may be particularly useful
                for non-visual user agents.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>marginheight</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>java.lang.Integer</type>
            <description>
                <![CDATA[
                <p>The amount of space (in pixels) to be left between the
                frame's contents and its top and bottom margins.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>marginwidth</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>java.lang.Integer</type>
            <description>
                <![CDATA[
                <p>The amount of space (in pixels) to be left between the
                frame's contents and its left and right margins.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The name of a JSP bean that contains a <code>Map</code>
                representing the query parameters (if <code>property</code>
                is not specified), or a JSP bean whose property getter is
                called to return a <code>Map</code> (if <code>property</code>
                is specified).</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>noresize</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                <p>Should users be disallowed from resizing the frame?
                (true, false).</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>page</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The module-relative path (beginning with a "/"
                character) to which this hyperlink will transfer control
                 if activated.  This hyperlink may be dynamically modified
                 by the inclusion of query parameters, as described in the
                 tag description.  You <strong>must</strong> specify exactly
                 one of the <code>action</code> attribute, the
                 <code>forward</code> attribute, the
                 <code>href</code> attribute,
                 or the <code>page</code> attribute.</p>
                 ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The name of the request parameter that will be dynamically
                added to the generated hyperlink.  The corresponding value is
                defined by the <code>paramName</code> and (optional)
                <code>paramProperty</code> attributes, optionally scoped by
                the <code>paramScope</code> attribute</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The name of a JSP bean that is a String containing the
                value for the request parameter named by <code>paramId</code>
                (if <code>paramProperty</code> is not specified), or a JSP
                bean whose property getter is called to return a String
                (if <code>paramProperty</code> is specified).  The JSP bean
                is constrained to the bean scope specified by the
                <code>paramScope</code> property, if it is specified.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramProperty</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The name of a property of the bean specified by the
                <code>paramName</code> attribute, whose return value must
                be a String containing the value of the request parameter
                (named by the <code>paramId</code> attribute) that will be
                dynamically added to this hyperlink.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramScope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The scope within which to search for the bean specified
                by the <code>paramName</code> attribute.  If not specified,
                all scopes are searched.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The name of a property of the bean specified by the
                <code>name</code> attribute, whose return value must be
                a <code>java.util.Map</code> containing the query parameters
                to be added to the hyperlink.  You <strong>must</strong>
                specify the <code>name</code> attribute if you specify
                this attribute.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>scope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The scope within which to search for the bean specified
                by the <code>name</code> attribute.  If not specified, all
                scopes are searched.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>scrolling</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Should scroll bars be created unconditionally (yes),
                never (no), or only when needed (auto)?</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The advisory title for this element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key for the advisory title
                for this element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>transaction</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                <p>If set to <code>true</code>, any current transaction
                control token will be included in the generated hyperlink,
                so that it will pass an <code>isTokenValid()</code> test
                in the receiving Action.</p>
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>hidden</name>
        <tag-class>org.apache.struts.taglib.html.HiddenTag</tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[
            <p><strong>
            Render A Hidden Field
        </strong></p>
          
            <p>
                Renders an HTML &lt;input&gt; element of type hidden, populated
                from the specified value or the specified property of the bean
                associated with our current form. This tag is only valid when
                nested inside a form tag body.
            </p>
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of <code>logic:iterate</code> tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted
                when rendering the current value of this input field. If not
                specified, the bean associated with the form tag we are nested
                within is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of this input field, and the name of the corresponding bean
                property if value is not specified. The corresponding bean property
                (if any) must be of type String.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
            <p>The advisory title for this element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
            <p>The message resources key for the advisory title
            for this element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Value to which this field should be initialized. [Use the
                corresponding bean property value]
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>write</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Should the value of this field also be rendered to the
                response page to make it visible, in addition to creating
                an HTML type="hidden" element?  By default, only the
                hidden element is created.
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>html</name>
        <tag-class>org.apache.struts.taglib.html.HtmlTag</tag-class>
        <body-content>JSP</body-content>
        <description>
            <![CDATA[
            <p><strong>Render an HTML <code>&lt;html&gt;</code> Element</strong></p>
          
          <p>Renders an HTML <code>&lt;html&gt;</code> element with
          language attributes extracted from the user's current Locale
          object, if there is one.</p>
          ]]>
        </description>
        <attribute>
            <name>lang</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                 Renders a lang attribute with the locale stored in the user's session.  If not 
                 found in the session, the language from the <code>Accept-Language</code>
                 HTTP header is used.  If still not found, the default language for the server 
                 is used.
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>xhtml</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
              <p>Set to <code>true</code> in order to render 
              <code>xml:lang</code> and <code>xmlns</code> attributes 
              on the generated <code>html</code> element.  This also 
              causes all other html tags to render as XHTML 1.0 (the 
              &lt;html:xhtml/&gt; tag has a similar purpose).
              </p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.1</dd></dl>
          ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>image</name>
        <tag-class>org.apache.struts.taglib.html.ImageTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
                Render an input tag of type "image"
                </strong></p>
          

                <p>Renders an HTML <code>&lt;input&gt;</code> tag of type
                "image".  The base URL for this image is calculated directly
                based on the value specified in the <code>src</code> or
                <code>page</code> attributes, or indirectly by looking up a
                message resource string based on the <code>srcKey</code> or
                <code>pageKey</code> attributes.  You <strong>must</strong>
                specify exactly one of these attributes.</p>

                <p>If you would like to obtain the coordinates of the mouse
                click that submitted this request, see the information below
                on the <code>property</code> attribute.</p>
                
                <p>This tag is only valid when nested inside a form tag body.</p>

                ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The keyboard character used to move focus immediately
                to this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>align</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alignment option for this image.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this image.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                image.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>border</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The width (in pixels) of the border around this image.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The servlet context attribute key for the MessageResources
                instance to use.  If not specified, defaults to the
                application resources configured for our action servlet.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of logic:iterate tag.  If <code>true</code>
                then name of the html tag will be rendered as
                "propertyName[34]". Number in brackets will be generated for
                every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The session attribute key for the Locale used to select
                internationalized messages.  If not specified, defaults to the
                Struts standard value.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus
                and a key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus
                and a key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus
                and a key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under
                the mouse pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under
                the mouse pointer but the pointer was moved outside the
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not
                under the mouse pointer but the pointer is moved inside the
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>page</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The module-relative path of the image for this
                input tag.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>pageKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The key of the message resources string specifying the
                module-relative path of the image for this input tag.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The property name of this image tag.  The parameter names
                for the request will appear as "property.x" and "property.y",
                the x and y representing the coordinates of the mouse click
                for the image.  A way of retrieving these values through a
                form bean is to define getX(), getY(), setX(), and setY()
                methods, and specify your property as a blank string
                (property="").</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>src</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The source URL of the image for this input tag.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>srcKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The key of the message resources string specifying the
                source URL of the image for this input tag.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
              <p>The value that will be submitted if this image button
              is pressed.</p>
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>img</name>
        <tag-class>org.apache.struts.taglib.html.ImgTag</tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[
            <p><strong>Render an HTML img tag</strong></p>
          

                <p>Renders an HTML <code>&lt;img&gt;</code> element with
                the image at the specified URL.  Like the link tag, URL
                rewriting will be applied automatically to the value
                specified in <code>src</code>, <code>page</code>, or
                <code>action</code> to maintain session state
                in the absence of cookies.  This will allow dynamic
                generation of an image where the content displayed for this
                image will be taken from the attributes of this tag.</p>

                <p>The base URL for this image is calculated directly based on
                the value specified in <code>src</code>, <code>page</code>, or
                <code>action</code> or <code>page</code>,
                or indirectly by looking up a message resource string based on
                the <code>srcKey</code> or <code>pageKey</code> attributes.
                You <strong>must</strong> specify exactly one of these
                attributes.</p>

                <p>Normally, the <code>src</code>, <code>page</code>, or
                <code>action</code> that you specify will be left
                unchanged (other than URL rewriting if necessary).  However,
                there are two ways you can append one or more dynamically
                defined query parameters to the <code>src</code> URL --
                specify a single parameter with the <code>paramId</code>
                attribute (at its associated attributes to select the value),
                or specify the <code>name</code> (and optional
                <code>property</code>) attributes to select a
                <code>java.util.Map</code> bean that contains one or more
                parameter ids and corresponding values.</p>

                <p>To specify a single parameter, use the <code>paramId</code>
                attribute to define the name of the request parameter to be
                submitted.  To specify the corresponding value, use one of the
                following approaches:</p>
                <ul>
                <li><em>Specify only the <code>paramName</code> attribute</em>
                    - The named JSP bean (optionally scoped by the value of the
                    <code>paramScope</code> attribute) must identify a value
                    that can be converted to a String.</li>
                <li><em>Specify both the <code>paramName</code> and
                    <code>paramProperty</code> attributes</em> - The specified
                    property getter will be called on the JSP bean identified
                    by the <code>paramName</code> (and optional
                    <code>paramScope</code>) attributes, in order to select
                    a value that can be converted to a String.</li>
                </ul>

                <p>If you prefer to specify a <code>java.util.Map</code> that
                contains all of the request parameters to be added to the
                hyperlink, use one of the following techniques:</p>
                <ul>
                <li><em>Specify only the <code>name</code> attribute</em> -
                    The named JSP bean (optionally scoped by the value of
                    the <code>scope</code> attribute) must identify a
                    <code>java.util.Map</code> containing the parameters.</li>
                <li><em>Specify both <code>name</code> and
                    <code>property</code> attributes</em> - The specified
                    property getter method will be called on the bean
                    identified by the <code>name</code> (and optional
                    <code>scope</code>) attributes, in order to return the
                    <code>java.util.Map</code> containing the parameters.</li>
                </ul>

                <p>As the <code>Map</code> is processed, the keys are assumed
                to be the names of query parameters to be appended to the
                <code>src</code> URL.  The value associated with each key
                must be either a String or a String array representing the
                parameter value(s), or an object whose toString() method
                will be called.  If a String array is specified, more than
                one value for the same query parameter name will be
                created.</p>

                <p>You can specify the alternate text for this image (which
                most browsers display as pop-up text block when the user
                hovers the mouse over this image) either directly, through
                the <code>alt</code> attribute, or indirectly from a message
                resources bundle, using the <code>bundle</code> and
                <code>altKey</code> attributes.</p>

                ]]>
        </description>
        <attribute>
            <name>align</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Where the image is aligned to.  Can be one of the
                  following attributes:</p>
                  <ul>
                   <li>left - left justify, wrapping text on right</li>
                    <li>right -right justify, wrapping test on left</li>
                    <li>top - aligns the image with the top of the text on
                        the same row</li>
                    <li>middle - aligns the image's vertical center with the
                        text base line</li>
                    <li>bottom - aligns the image with the bottom of the
                        text's base line</li>
                    <li>texttop - aligns the image's top with that of the
                        text font on the same line</li>
                    <li>absmiddle - aligns the image's vertical center with the
                        absolute center of the text</li>
                    <li>absbottom - aligns the image with the absolute bottom
                        of the text font on the same row</li>
                  </ul>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>And alternative text to be displayed in browsers that
                     don't support graphics.  Also used often as type of
                     context help over images.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>border</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The width of the border surrounding the image.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The servlet context attribute key for the MessageResources
                  instance to use.  If not specified, defaults to the
                  application resources configured for our action servlet.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>height</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The height of the image being displayed.  This parameter
                     is very nice to specify (along with <code>width</code>)
                     to help the browser render the page faster.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>hspace</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The amount of horizontal spacing between the icon and
                     the text.  The text may be in the same paragraph, or
                     be wrapped around the image.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>imageName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The scriptable name to be defined within this page, so
                  that you can reference it with intra-page scripts.  In other
                  words, the value specified here will render a "name" element
                  in the generated image tag.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>ismap</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of the server-side map that this image belongs
                     to.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of the request or session Locale attribute used
                  to look up internationalized messages.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a JSP bean that contains a <code>Map</code>
                  representing the query parameters (if <code>property</code>
                  is not specified), or a JSP bean whose property getter is
                  called to return a <code>Map</code> (if <code>property</code>
                  is specified).</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        JavaScript event handler executed when this element receives a
                        mouse click.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        JavaScript event handler executed when this element receives a
                        mouse double click.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a key down event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a key press event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a key up event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        JavaScript event handler executed when this element is under the mouse
                        pointer and a mouse button is depressed.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        JavaScript event handler executed when this element is under the
                        mouse pointer and the pointer is moved.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        JavaScript event handler executed when this element was under the
                        mouse pointer but the pointer was moved outside the element.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        JavaScript event handler executed when this element was not under
                        the mouse pointer but the pointer is moved inside the element.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        JavaScript event handler executed when this element is under the
                        mouse pointer and a mouse button is released.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of the request parameter that will be dynamically
                  added to the generated src URL.  The corresponding value is
                  defined by the <code>paramName</code> and (optional)
                  <code>paramProperty</code> attributes, optionally scoped by
                  the <code>paramScope</code> attribute</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>page</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The module-relative path, starting with a slash, of
                  the image to be displayed by this tag.  The rendered
                  URL for this image will automatically prepend the context
                  path of this web application (in the same manner as the
                  <code>page</code> attribute on the link tag works),
                  in addition to any necessary URL rewriting.  You
                  <strong>must</strong> specify either the <code>page</code>
                  attribute or the <code>src</code> attribute.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>pageKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message key, in the message resources bundle named by
                  the <code>bundle</code> attribute, of the String to be
                  used as the module-relative path for this image.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>action</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
              <p>The action, starting with a slash, that will render
              the image to be displayed by this tag.  The rendered
              URL for this image will automatically prepend the context
              path of this web application (in the same manner as the
              <code>action</code> attribute on the link tag works),
              in addition to any necessary URL rewriting.  You
              <strong>must</strong> specify the <code>action</code>,
              <code>page</code>
                  attribute or the <code>src</code> attribute.</p>
               
               <p>Additionally, you can specify a <code>module</code> prefix 
               for linking to other modules.</p>
                           
               ]]>
            </description>
        </attribute>
        <attribute>
            <name>module</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                   <p>Prefix name of a <code>Module</code> that
                   contains the action mapping for the <code>Action</code>
                   that is specified by the <code>action</code> attribute.
                   You <strong>must</strong> specify an <code>action</code> 
                   attribute for this to have an effect.</p>
            
                   <p><strong>Note: </strong>Use "" to map to the default module.</p>
              ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a JSP bean that is a String containing the
                  value for the request parameter named by <code>paramId</code>
                  (if <code>paramProperty</code> is not specified), or a JSP
                  bean whose property getter is called to return a String
                  (if <code>paramProperty</code> is specified).  The JSP bean
                  is constrained to the bean scope specified by the
                  <code>paramScope</code> property, if it is specified.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramProperty</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a property of the bean specified by the
                  <code>paramName</code> attribute, whose return value must
                  be a String containing the value of the request parameter
                  (named by the <code>paramId</code> attribute) that will be
                  dynamically added to this src URL.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramScope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The scope within which to search for the bean specified
                  by the <code>paramName</code> attribute.  If not specified,
                  all scopes are searched.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a property of the bean specified by the
                  <code>name</code> attribute, whose return value must be
                  a <code>java.util.Map</code> containing the query parameters
                  to be added to the src URL.  You <strong>must</strong>
                  specify the <code>name</code> attribute if you specify
                  this attribute.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>scope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The scope within which to search for the bean specified
                  by the <code>name</code> attribute.  If not specified, all
                  scopes are searched.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>src</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The URL to which this image will be transferred from
                  This image may be dynamically modified
                  by the inclusion of query parameters, as described in the
                  tag description.  This value will be used unmodified (other
                  than potential URL rewriting) as the value of the "src"
                  attribute in the rendered tag.  You <strong>must</strong>
                  specify either the <code>page</code> attribute or the
                  <code>src</code> attribute.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>srcKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message key, in the message resources bundle named by
                  the <code>bundle</code> attribute, of the String to be
                  used as the URL of this image.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>CSS styles to be applied to this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  CSS stylesheet class to be applied to this HTML element
                  (renders a "class" attribute).
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>useLocalEncoding</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
              <p>If set to <code>true</code>, LocalCharacterEncoding will be
              used, that is, the characterEncoding set to the HttpServletResponse,
              as prefered character encoding rather than UTF-8, when
              URLEncoding is done on parameters of the URL.</p>
              ]]>
            </description>
        </attribute>
        <attribute>
            <name>usemap</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of the map as defined within this page for
                     mapping hot-spot areas of this image.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>vspace</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The amount of vertical spacing between the icon and
                     the text, above and below.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>width</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The width of the image being displayed.  This parameter
                     is very nice to specify (along with <code>height</code>)
                     to help the browser render the page faster.</p>
                  ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>javascript</name>
        <tag-class>
            org.apache.struts.taglib.html.JavascriptValidatorTag</tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[
            <p><strong>
            Render JavaScript validation based on the
            validation rules loaded by the ValidatorPlugIn.
        </strong></p>
          
            <p>
                Render JavaScript validation based on the
                validation rules loaded by the <code>ValidatorPlugIn</code>.
                The set of validation rules that should be generated is based
                on the formName attribute passed in, which should match
                the name attribute of the form element in the xml file.
            </p>
            <p>
                The dynamicJavascript and staticJavascript attributes
                default to true, but if dynamicJavascript is set to <code>true</code>
                and staticJavascript is set to <code>false</code> then only
                the dynamic JavaScript will be rendered.  If dynamicJavascript
                is set to <code>false</code>
                and staticJavascript is set to <code>true</code> then only
                the static JavaScript will be rendered which can then be put in
                separate JSP page so the browser can cache the static JavaScript.
            </p>
        ]]>
        </description>
        <attribute>
            <name>cdata</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
               <p>
                  If set to "true" and XHTML has been enabled, the JavaScript will
                  be wrapped in a CDATA section to prevent XML parsing. The default is
                  "true" to comply with the W3C's recommendation.
               </p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.1</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>dynamicJavascript</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
               <p>
                  Whether or not to render the dynamic JavaScript.
                  Defaults to <code>true</code>.
               </p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>formName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
               <p>
                  The key (form name) to retrieve a specific
                  set of validation rules.  If "dynamicJavascript" is set 
                  to <code>true</code> and formName is missing or is not 
                  recognized by the <code>ValidatorPlugIn</code>, a 
                  JspException will be thrown.
               </p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>method</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
               <p>
                  The alternate JavaScript method name to be used
                  instead of the of the default.  The default is
                  'validate' concatenated in front of
                  the key (form name) passed in (ex: validateRegistrationForm).
               </p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>page</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>int</type>
            <description>
                <![CDATA[
               <p>
                  The current page of a set of validation rules
                  if the page attribute for the field element
                  in the xml file is in use.
               </p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>scriptLanguage</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                The &lt;script&gt; element will not contain a language attribute
                when this is set to false.  The default is true but this property is ignored
                in XHTML mode.
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>src</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
               <p>
                  The src attribute's value when defining
                  the html script element.
               </p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>staticJavascript</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
               <p>
                  Whether or not to render the static JavaScript.
                  Defaults to <code>true</code>.
               </p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>htmlComment</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
               <p>
                  Whether or not to enclose the javascript
                  with HTML comments.  This attribute is ignored in XHTML
                  mode because the script would be deleted by the XML parser.  See
                  the cdata attribute for details on hiding scripts from XML
                  parsers. 
                  Defaults to <code>true</code>.
               </p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.7</dd></dl>
          ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>link</name>
        <tag-class>org.apache.struts.taglib.html.LinkTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>Render an HTML anchor or hyperlink</strong></p>
          

                <p>Renders an HTML <code>&lt;a&gt;</code> element as an
                anchor definition (if "linkName" is specified) or as a
                hyperlink to the specified URL.  URL rewriting will be
                applied automatically, to maintain session state in the
                absence of cookies.  The content displayed for this
                hyperlink will be taken from the body of this tag.</p>

                <p>The base URL for this hyperlink is calculated based on
                which of the following attributes you specify (you must
                specify exactly one of them):</p>
                <ul>
                <li><em>forward</em> - Use the value of this attribute as the
                    name of a global <code>ActionForward</code> to be looked
                    up, and use the module-relative or context-relative
                    URI found there. If the forward is module-relative then
                    it must point to an action and NOT to a page.</li>
                <li><em>action</em> - Use the value of this attribute as the
                    name of a <code>Action</code> to be looked
                    up, and use the module-relative or context-relative
                    URI found there.</li>
                 <li><em>href</em> - Use the value of this attribute unchanged.
                     </li>
                 <li><em>page</em> - Use the value of this attribute as a
                    module-relative URI, and generate a server-relative
                    URI by including the context path and module
                    prefix.</li>
                </ul>

                <p>Normally, the hyperlink you specify with one of the
                attributes described in the previous paragraph will be left
                unchanged (other than URL rewriting if necessary).  However,
                there are two ways you can append one or more dynamically
                defined query parameters to the hyperlink -- specify a single
                parameter with the <code>paramId</code> attribute (and its
                associated attributes to select the value), or specify the
                <code>name</code> (and optional <code>property</code>)
                attributes to select a <code>java.util.Map</code> bean that
                contains one or more parameter ids and corresponding values.
                </p>

                <p>To specify a single parameter, use the <code>paramId</code>
                attribute to define the name of the request parameter to be
                submitted.  To specify the corresponding value, use one of the
                following approaches:</p>
                <ul>
                <li><em>Specify only the <code>paramName</code> attribute</em>
                    - The named JSP bean (optionally scoped by the value of the
                    <code>paramScope</code> attribute) must identify a value
                    that can be converted to a String.</li>
                <li><em>Specify both the <code>paramName</code> and
                    <code>paramProperty</code> attributes</em> - The specified
                    property getter method will be called on the JSP bean
                    identified by the <code>paramName</code> (and optional
                    <code>paramScope</code>) attributes, in order to select
                    a value that can be converted to a String.</li>
                </ul>

                <p>If you prefer to specify a <code>java.util.Map</code> that
                contains all of the request parameters to be added to the
                hyperlink, use one of the following techniques:</p>
                <ul>
                <li><em>Specify only the <code>name</code> attribute</em> -
                    The named JSP bean (optionally scoped by the value of
                    the <code>scope</code> attribute) must identify a
                    <code>java.util.Map</code> containing the parameters.</li>
                <li><em>Specify both <code>name</code> and
                    <code>property</code> attributes</em> - The specified
                    property getter method will be called on the bean
                    identified by the <code>name</code> (and optional
                    <code>scope</code>) attributes, in order to return the
                    <code>java.util.Map</code> containing the parameters.</li>
                </ul>

                <p>As the <code>Map</code> is processed, the keys are assumed
                to be the names of query parameters to be appended to the
                hyperlink.  The value associated with each key must be either
                a String or a String array representing the parameter value(s),
                or an object whose toString() method will be called.
                If a String array is specified, more than one value for the
                same query parameter name will be created.</p>

                <p>Additionally, you can request that the current transaction
                control token, if any, be included in the generated hyperlink
                by setting the <code>transaction</code> attribute to
                <code>true</code>.
                You can also request that an anchor ("#xxx") be added to the
                end of the URL that is created by any of the above mechanisms,
                by using the <code>anchor</code> attribute.</p>

                ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The keyboard character used to move focus immediately
                  to this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>action</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Logical name of a <code>Action</code> that
                  contains the actual content-relative URI of the destination
                  of this transfer.  This hyperlink may be dynamically
                  modified by the inclusion of query parameters, as described
                  in the tag description.  You <strong>must</strong> specify
                  exactly one of the <code>action</code> attribute, the
                  <code>forward</code> attribute, the
                  <code>href</code> attribute, the <code>linkName</code>
                  attribute, or the <code>page</code> attribute.</p>
               
               <p>Additionally, you can specify a <code>module</code> prefix 
               for linking to other modules.</p>
                           
               ]]>
            </description>
        </attribute>
        <attribute>
            <name>module</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                   <p>Prefix name of a <code>Module</code> that
                   contains the action mapping for the <code>Action</code>
                   that is specified by the <code>action</code> attribute.
                   You <strong>must</strong> specify an <code>action</code> 
                   attribute for this to have an effect.</p>
            
                   <p><strong>Note: </strong>Use "" to map to the default module.</p>
              ]]>
            </description>
        </attribute>
        <attribute>
            <name>anchor</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Optional anchor tag ("#xxx") to be added to the generated
                  hyperlink.  Specify this value <strong>without</strong> any
                  "#" character.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>forward</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Logical name of a global <code>ActionForward</code> that
                  contains the actual content-relative URI of the destination
                   of this transfer.  This hyperlink may be dynamically
                   modified by the inclusion of query parameters, as described
                   in the tag description.  You <strong>must</strong> specify
                   exactly one of the <code>action</code> attribute, the
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, the <code>linkName</code>
                   attribute, or the <code>page</code> attribute.</p>
                   ]]>
            </description>
        </attribute>
        <attribute>
            <name>href</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The URL to which this hyperlink will transfer control
                   if activated.  This hyperlink may be dynamically modified
                   by the inclusion of query parameters, as described in the
                   tag description.  You <strong>must</strong> specify
                   exactly one of the <code>action</code> attribute, the
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, the <code>linkName</code>
                   attribute, or the <code>page</code> attribute.</p>
                   ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of logic:iterate tag.
                If <code>true</code> then indexed parameter with name from indexId attribute
                will be added to the query string. Indexed parameter looks like
                "index[32]". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                By this attribute different name for the indexed parameter can be
                specified. Take a look to the "indexed" attribute for details.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>linkName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The anchor name to be defined within this page, so that
                  you can reference it with intra-page hyperlinks.  In other
                  words, the value specified here will render a "name" element
                  in the generated anchor tag.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a JSP bean that contains a <code>Map</code>
                  representing the query parameters (if <code>property</code>
                  is not specified), or a JSP bean whose property getter is
                  called to return a <code>Map</code> (if <code>property</code>
                  is specified).</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element loses input focus.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse click.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse double click.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives input focus.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a key down event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a key press event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a key up event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse down event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse move event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse out event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse over event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>JavaScript event handler that is executed when
                  this element receives a mouse up event.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>page</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The module-relative path (beginning with a "/"
                  character) to which this hyperlink will transfer control
                   if activated.  This hyperlink may be dynamically modified
                   by the inclusion of query parameters, as described in the
                   tag description.  You <strong>must</strong> specify exactly
                   one of the <code>action</code> attribute,
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, the <code>linkName</code>
                   attribute, or the <code>page</code> attribute.</p>
                   ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of the request parameter that will be dynamically
                  added to the generated hyperlink.  The corresponding value is
                  defined by the <code>paramName</code> and (optional)
                  <code>paramProperty</code> attributes, optionally scoped by
                  the <code>paramScope</code> attribute</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a JSP bean that is a String containing the
                  value for the request parameter named by <code>paramId</code>
                  (if <code>paramProperty</code> is not specified), or a JSP
                  bean whose property getter is called to return a String
                  (if <code>paramProperty</code> is specified).  The JSP bean
                  is constrained to the bean scope specified by the
                  <code>paramScope</code> property, if it is specified.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramProperty</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a property of the bean specified by the
                  <code>paramName</code> attribute, whose return value must
                  be a String containing the value of the request parameter
                  (named by the <code>paramId</code> attribute) that will be
                  dynamically added to this hyperlink.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramScope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The scope within which to search for the bean specified
                  by the <code>paramName</code> attribute.  If not specified,
                  all scopes are searched.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a property of the bean specified by the
                  <code>name</code> attribute, whose return value must be
                  a <code>java.util.Map</code> containing the query parameters
                  to be added to the hyperlink.  You <strong>must</strong>
                  specify the <code>name</code> attribute if you specify
                  this attribute.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>scope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The scope within which to search for the bean specified
                  by the <code>name</code> attribute.  If not specified, all
                  scopes are searched.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>CSS styles to be applied to this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  CSS stylesheet class to be applied to this HTML element
                  (renders a "class" attribute).
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The tab order (ascending positive integers) for
                  this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>target</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The window target in which the resource requested by this
                  hyperlink will be displayed, for example in a framed
                  presentation.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this hyperlink.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>transaction</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                  <p>If set to <code>true</code>, any current transaction
                  control token will be included in the generated hyperlink,
                  so that it will pass an <code>isTokenValid()</code> test
                  in the receiving Action.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>useLocalEncoding</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
              <p>If set to <code>true</code>, LocalCharacterEncoding will be
              used, that is, the characterEncoding set to the HttpServletResponse,
              as prefered character encoding rather than UTF-8, when
              URLEncoding is done on parameters of the URL.</p>
              ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>messages</name>
        <tag-class>org.apache.struts.taglib.html.MessagesTag</tag-class>
        <tei-class>org.apache.struts.taglib.html.MessagesTei</tei-class>
        <body-content>JSP</body-content>
        <description>
            <![CDATA[
            <p><strong>
                Conditionally display a set of accumulated messages.
                </strong></p>
          
                <p>Displays a set of messages prepared by a business
                logic component and stored as an <code>ActionMessages</code>
                object, <code>ActionErrors</code> object, a String,
                or a String array in any scope.  If
                such a bean is not found, nothing will be rendered.  The messages are 
                placed into the page scope in the body of this tag where they can be displayed 
                by standard JSP methods. (For example: <code>&lt;bean:write&gt;</code>,<code>&lt;c:out&gt;</code>)
                </p>

                <p>In order to use this tag successfully, you must have
                defined an application scope <code>MessageResources</code>
                bean under the default attribute name.</p>
                ]]>
        </description>
        <attribute>
            <name>id</name>
            <required>true</required>
            <rtexprvalue>false</rtexprvalue>
            <description>
                <![CDATA[
                  The name of a page scope JSP bean that will contain the current
                  element of the collection of messages on each iteration, if it is not
                  <code>null</code>.
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attribute key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The session attribute key for the Locale used to select
                    messages to be displayed.  If not specified, defaults to
                    the Struts standard value.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  Name of the bean in any scope under which our messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  Name of the property for which messages should be
                  displayed.  If not specified, all messages (regardless
                  of property) are displayed.
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>header</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  This value is an optional message resource key that will
                  be printed before the iteration of messages begins.
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>footer</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  This value is an optional message resource key that will
                  be printed after the iteration of messages has finished.
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>message</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  By default the tag will retrieve the bean it will
                  iterate over from the <code>Globals.ERROR_KEY</code> constant string,
                  but if this attribute is set to 'true' the bean
                  will be retrieved from the <code>Globals.MESSAGE_KEY</code>
                  constant string.  Also if this is set to 'true', any value
                  assigned to the name attribute will be ignored.
                  ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>multibox</name>
        <tag-class>org.apache.struts.taglib.html.MultiboxTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
            Render A Checkbox Input Field
        </strong></p>
          
                        <p>Renders an HTML &lt;input&gt; element of type
                        <code>checkbox</code>, whose "checked" status is
                        initialized based on whether the specified value
                        matches one of the elements of the underlying
                        property's array of current values. This element is
                        useful when you have large numbers of checkboxes, and
                        prefer to combine the values into a single
                        array-valued property instead of multiple boolean
                        properties.  This tag is only valid when nested
                        inside a form tag body.</p>

                        <p><strong>WARNING</strong>:  In order to correctly
                        recognize cases where none of the associated checkboxes
                        are selected, the <code>ActionForm</code> bean
                        associated with this form must include a statement
                        setting the corresponding array to zero length in the
                        <code>reset()</code> method.</p>

                <p>The value to be returned to the server, if this checkbox is
                selected, must be defined by one of the following methods:</p>
                <ul>
                <li>Specify a <code>value</code> attribute, whose contents will
                be used literally as the value to be returned.</li>
                <li>Specify no <code>value</code> attribute, and the nested
                body content of this tag will be used as the value to be
                returned.</li>
                </ul>
              
                <p>
                Also note that a map backed attribute cannot be used to hold a the String[]
                for a group of multibox tags.
               </p>                

        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Name of the bean (in any scope) under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.</p>

                  <p><strong>N.B.</strong> This is used in conjunction with the 
                  <code>errorStyle</code>, <code>errorStyleClass</code> and 
                  <code>errorStyleId</code> attributes and should be set to
                  the same value as the <code>name</code> attribute on the
                  &lt;html:errors/&gt; tag.</p> 
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element if
                an error exists for it.</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>style</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element if
                an error exists for it (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleClass</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element if
                an error exists for it (renders an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleId</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element.</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyle</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleClass</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element (renders
                an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleId</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        The value to be transmitted if this checkbox is
                        checked when the form is submitted.
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>option</name>
        <tag-class>org.apache.struts.taglib.html.OptionTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
                Render A Select Option
        </strong></p>
          
                <p>Render an HTML <code>&lt;option&gt;</code> element,
                representing one of the choices for an enclosing
                <code>&lt;select&gt;</code> element.  The text displayed to the
                user comes from either the body of this tag, or from a message
                string looked up based on the <code>bundle</code>,
                <code>locale</code>, and <code>key</code> attributes.</p>

                <p>If the value of the corresponding bean property matches the
                specified value, this option will be marked selected.  This tag
                is only valid when nested inside a
                <code>&lt;html:select&gt;</code> tag body.</p>
        ]]>
        </description>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this option should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>key</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    If specified, defines the message key to be looked up in
                    the resource bundle specified by <code>bundle</code> for
                    the text displayed to the user for this option.  If not
                    specified, the text to be displayed is taken from the body
                    content of this tag.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>locale</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The session attributes key for the Locale instance to use
                    for looking up the message specified by the
                    <code>key</code> attribute.  If not specified, uses the
                    standard Struts session attribute name.
                    ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    Value to be submitted for this field if this option is
                    selected by the user.
                    ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>options</name>
        <tag-class>org.apache.struts.taglib.html.OptionsTag</tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[
            <p><strong>
            Render a Collection of Select Options
        </strong></p>
          
                <p>Renders a set of HTML <code>&lt;option&gt;</code> elements,
                representing possible choices for a <code>&lt;select&gt;</code>
                element.  This tag can be used multiple times within a single
                <code>&lt;html:select&gt;</code> element, either in conjunction
                with or instead of one or more <code>&lt;html:option&gt;</code>
                or <code>&lt;html:optionsCollection&gt;</code> elements.</p>

                <p>This tag operates in one of two major modes, depending on
                whether or not the <code>collection</code> attribute is
                specified.  If the <code>collection</code> attribute is
                included, the following rules apply:</p>
                <ul>
                <li>The <strong>collection</strong> attribute is interpreted
                    as the name of a JSP bean, in some scope, that itself
                    represents a collection of individual beans, one per option
                    value to be rendered.</li>
                <li>The <strong>property</strong> attribute is interpreted as
                    the name of a property of the individual beans included in
                    the collection, and is used to retrieve the value that will
                    be returned to the server if this option is selected.</li>
                <li>The <strong>labelProperty</strong> attribute is interpreted
                    as the name of a property of the individual beans included
                    in the collection, and is used to retrieve the label that
                    will be displayed to the user for this option.  If the
                    <code>labelProperty</code> attribute is not specified, the
                    property named by the <code>property</code> attribute will
                    be used to select both the value returned to the server and
                    the label displayed to the user for this option.</li>
                </ul>

                <p>If the <code>collection</code> attribute is not specified,
                the rules described in the remainder of this section apply.</p>

                <p>The collection of values actually selected depends on the presence or
                absence of the <code>name</code> and <code>property</code> attributes.  The
                following combinations are allowed:</p>
                <ul>
                <li><em>Only <code>name</code> is specified</em> - The value of this attribute
                    is the name of a JSP bean in some scope that is the
                    collection.</li>
                <li><em>Only <code>property</code> is specified</em> - The value of this
                    attribute is the name of a property of the ActionForm bean associated
                    with our form, which will return the collection.</li>
                <li><em>Both <code>name</code> and <code>property</code> are specified</em> -
                    The value of the <code>name</code> attribute identifies a JSP bean
                    in some scope.  The value of the <code>property</code> attribute is the
                    name of some property of that bean which will return the collection.</li>
                </ul>

                <p>The collection of labels displayed to the user can be the same as the
                option values themselves, or can be different, depending on the presence or
                absence of the <code>labelName</code> and <code>labelProperty</code>
                attributes.  If this feature is used, the collection of labels must contain
                the same number of elements as the corresponding collection of values.
                The following combinations are allowed:</p>
                <ul>
                <li><em>Neither <code>labelName</code> nor <code>labelProperty</code> is
                    specified</em> - The labels will be the same as the option values
                    themselves.</li>
                <li><em>Only <code>labelName</code> is specified</em> - The value of this
                    attribute is the name of a JSP bean in some scope that is the
                    collection.</li>
                <li><em>Only <code>labelProperty</code> is specified</em> - The value of this
                    attribute is the name of a property of the ActionForm bean associated
                    with our form, which will return the collection.</li>
                <li><em>Both <code>labelName</code> and <code>labelProperty</code> are
                    specified</em> - The value of the <code>labelName</code> attribute
                    identifies a JSP bean in some scope.  The value of the
                    <code>labelProperty</code> attribute is the name of some property of
                    that bean which will return the collection.</li>
                </ul>


            <p>Note that this tag does not support a <code>styleId</code>
            attribute, as it would have to apply the value to all the
            <code>option</code> elements created by this element, which would
            mean that more than one <code>id</code> element might have the same
            value, which the HTML specification says is illegal.</p>

        ]]>
        </description>
        <attribute>
            <name>collection</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                        Name of the JSP bean (in some scope) which is itself a
                        Collection of other beans, each of which has properties
                        named by the "property" and "labelProperty" attributes
                        that are used to retrieve the value and label for each
                        option, respectively.
                        ]]>
            </description>
        </attribute>
        <attribute>
            <name>filter</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Set to <code>false</code> if you do NOT want the option labels
                filtered for sensitive characters in HTML.  By default, such
                values are filtered.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>labelName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the JSP bean (in some scope) containing the collection of labels to
                be displayed to the user for these options.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>labelProperty</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Property of the form bean, or the bean specified by the labelName
                attribute, that will return the collection of labels to be displayed
                to the user for these options.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the JSP bean (in some scope) containing the collection of
                values to be returned to the server for these options. If not
                specified, the form bean associated with our form is assumed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Property of the form bean, or the bean specified by the name
                attribute, that will return the collection of values to returned
                to the server for these options.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>optionsCollection</name>
        <tag-class>
            org.apache.struts.taglib.html.OptionsCollectionTag</tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[
            <p><strong>
            Render a Collection of Select Options
        </strong></p>
          
            <p>Renders a set of HTML <code>&lt;option&gt;</code> elements,
            representing possible choices for a <code>&lt;select&gt;</code>
            element.  This tag can be used multiple times within a single
            <code>&lt;html:select&gt;</code> element, either in conjunction
            with or instead of one or more <code>&lt;html:option&gt;</code>
            or <code>&lt;html:options&gt;</code> elements.</p>

            <p>This tag operates on a collection of beans, where each bean
            has a <strong>label</strong> property and a <strong>value</strong>
            property. The actual names of these properties can be configured
            using the <code>label</code> and <code>value</code> attributes
            of this tag.</p>

            <p>This tag differs from the <code>&lt;html:options&gt;</code> tag
            in that it makes more consistent use of the <code>name</code> and
            <code>property</code> attributes, and allows the collection to be
            more easily obtained from the enclosing form bean.</p>

            <p>Note that this tag does not support a <code>styleId</code>
            attribute, as it would have to apply the value to all the
            <code>option</code> elements created by this element, which would
            mean that more than one <code>id</code> element might have the same
            value, which the HTML specification says is illegal.</p>
        ]]>
        </description>
        <attribute>
            <name>filter</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Set to <code>false</code> if you do NOT want the option labels
                filtered for sensitive characters in HTML.  By default, such
                values are filtered.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>label</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The property of the bean within the collection which represents
                the label to be rendered for each option. Defaults to "label".
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted
                when rendering the current value of this input field. If not
                specified, the bean associated with the form tag we are nested
                within is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The property of the form bean, or the bean specified by the name
                attribute, that will return the collection of objects to be
                rendered for these options.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The property of the bean within the collection which represents
                the value to be rendered for each option. Defaults to "value".
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>password</name>
        <tag-class>org.apache.struts.taglib.html.PasswordTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
            Render A Password Input Field
        </strong></p>
          
            Renders an HTML &lt;input&gt; element of type password, populated
            from the specified value or the specified property of the bean
            associated with our current form. This tag is only valid when
            nested inside a form tag body.
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Name of the bean (in any scope) under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.</p>

                  <p><strong>N.B.</strong> This is used in conjunction with the 
                  <code>errorStyle</code>, <code>errorStyleClass</code> and 
                  <code>errorStyleId</code> attributes and should be set to
                  the same value as the <code>name</code> attribute on the
                  &lt;html:errors/&gt; tag.</p> 
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element if
                an error exists for it.</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>style</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element if
                an error exists for it (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleClass</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element if
                an error exists for it (renders an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleId</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>maxlength</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Maximum number of input characters to accept. [No limit]
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>readonly</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          read only.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>redisplay</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                        Boolean flag indicating whether or not existing values
                        will be redisplayed if they exist.  Even though the
                        redisplayed value will be shown as asterisks on the
                        visible HTML page, the cleartext of the actual password
                        value will be visible though the "Show Page Source"
                        menu option of the client browser.  You may wish to
                        set this value to <code>false</code> on login pages.
                        Defaults to <code>true</code> for consistency with
                        all other form tags that redisplay their contents.
                        ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element.</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyle</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleClass</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element (renders
                an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleId</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>size</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Number of character positions to allocate. [Browser default]
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Value of the label to be placed on this button. This value will
                also be submitted as the value of the specified request parameter.
                [Body of this tag (if any)]
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>radio</name>
        <tag-class>org.apache.struts.taglib.html.RadioTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
            Render A Radio Button Input Field
        </strong></p>
          
            <p>
            Renders an HTML &lt;input&gt; element of type radio, populated from
            the specified property of the bean associated with our current form.
            This tag is only valid when nested inside a form tag body.
            </p>
            <p>
            If an iterator is used to render a series of radio tags, the
            idName attribute may be used to specify the name of the bean
            exposed by the iterator. In this case, the value attribute is
            used as the name of a property on the idName bean that returns
            the value of the radio tag in this iteration.
            </p>
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Name of the bean (in any scope) under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.</p>

                  <p><strong>N.B.</strong> This is used in conjunction with the 
                  <code>errorStyle</code>, <code>errorStyleClass</code> and 
                  <code>errorStyleId</code> attributes and should be set to
                  the same value as the <code>name</code> attribute on the
                  &lt;html:errors/&gt; tag.</p> 
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element if
                an error exists for it.</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>style</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element if
                an error exists for it (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleClass</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element if
                an error exists for it (renders an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleId</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted when
                rendering the current value of this input field. If not specified,
                the bean associated with the form tag we are nested within is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                                The corresponding bean property for this radio tag.
                        ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element.</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyle</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleClass</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element (renders
                an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleId</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                            The value of the radio tag.
                        ]]>
            </description>
        </attribute>
        <attribute>
            <name>idName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Name of the bean (in some scope) that will return the
                value of the radio tag. Usually exposed
                by an iterator. When the idName attribute is
                present, the value attribute is used as the name of the
                property on the idName bean that will return the
                value of the radio tag for this iteration.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.1</dd></dl>
          ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>reset</name>
        <tag-class>org.apache.struts.taglib.html.ResetTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
            Render A Reset Button Input Field
        </strong></p>
          
            Renders an HTML &lt;input&gt; element of type reset.
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the input field that will be generated.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
            Value of the label to be placed on this button.
                        [Body of this tag (if any), or "Reset"]
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>rewrite</name>
        <tag-class>org.apache.struts.taglib.html.RewriteTag</tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[
            <p><strong>Render an URI</strong></p>
          
                <p>Renders a request URI based on exactly the same rules
                as the <code><a href="#link">link</a></code> tag does,
                but without creating
                the <code>&lt;a&gt;</code> hyperlink.  This value is useful
                when you want to generate a string constant for use by
                a JavaScript procedure.</p>
                ]]>
        </description>
        <attribute>
            <name>action</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Logical name of a <code>Action</code> that
                  contains the actual content-relative URI of the destination
                  of this transfer.  This hyperlink may be dynamically
                  modified by the inclusion of query parameters, as described
                  in the tag description. You <strong>must</strong> specify
                  exactly one of the <code>action</code> attribute, the
                  <code>forward</code> attribute, the
                  <code>href</code> attribute, or the <code>page</code>
                  attribute.</p>
               
               <p>Additionally, you can specify a <code>module</code> prefix 
               for linking to other modules.</p>
                           
               
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.0</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>module</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                   <p>Prefix name of a <code>Module</code> that
                   contains the action mapping for the <code>Action</code>
                   that is specified by the <code>action</code> attribute.
                   You <strong>must</strong> specify an <code>action</code> 
                   attribute for this to have an effect.</p>
            
                   <p><strong>Note: </strong>Use "" to map to the default module.</p>
              ]]>
            </description>
        </attribute>
        <attribute>
            <name>anchor</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Optional anchor tag ("#xxx") to be added to the generated
                  hyperlink.  Specify this value <strong>without</strong> any
                  "#" character.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>forward</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Logical name of a global <code>ActionForward</code> that
                   contains the actual content-relative URI of the destination
                   of this transfer.  This hyperlink may be dynamically
                   modified by the inclusion of query parameters, as described
                   in the tag description.  You <strong>must</strong> specify
                   exactly one of the <code>action</code> attribute, the
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, or the <code>page</code>
                   attribute.</p>
                   ]]>
            </description>
        </attribute>
        <attribute>
            <name>href</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The URL to which this hyperlink will transfer control
                   if activated.  This hyperlink may be dynamically modified
                   by the inclusion of query parameters, as described in the
                   tag description.  You <strong>must</strong> specify
                   exactly one of the <code>action</code> attribute, the
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, or the <code>page</code>
                   attribute.</p>
                   ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a JSP bean that contains a <code>Map</code>
                  representing the query parameters (if <code>property</code>
                  is not specified), or a JSP bean whose property getter is
                  called to return a <code>Map</code> (if <code>property</code>
                  is specified).</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>page</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The module-relative path (beginning with a "/"
                  character) to which this hyperlink will transfer control
                   if activated.  This hyperlink may be dynamically modified
                   by the inclusion of query parameters, as described in the
                   tag description.  You <strong>must</strong> specify exactly
                   one of the <code>action</code> attribute, the 
                   <code>forward</code> attribute, the
                   <code>href</code> attribute, or the <code>page</code>
                   attribute.</p>
                   ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of the request parameter that will be dynamically
                  added to the generated hyperlink.  The corresponding value is
                  defined by the <code>paramName</code> and (optional)
                  <code>paramProperty</code> attributes, optionally scoped by
                  the <code>paramScope</code> attribute</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramName</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a JSP bean that is a String containing the
                  value for the request parameter named by <code>paramId</code>
                  (if <code>paramProperty</code> is not specified), or a JSP
                  bean whose property getter is called to return a String
                  (if <code>paramProperty</code> is specified).  The JSP bean
                  is constrained to the bean scope specified by the
                  <code>paramScope</code> property, if it is specified.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramProperty</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a property of the bean specified by the
                  <code>paramName</code> attribute, whose return value must
                  be a String containing the value of the request parameter
                  (named by the <code>paramId</code> attribute) that will be
                  dynamically added to this hyperlink.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>paramScope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The scope within which to search for the bean specified
                  by the <code>paramName</code> attribute.  If not specified,
                  all scopes are searched.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The name of a property of the bean specified by the
                  <code>name</code> attribute, whose return value must be
                  a <code>java.util.Map</code> containing the query parameters
                  to be added to the hyperlink.  You <strong>must</strong>
                  specify the <code>name</code> attribute if you specify
                  this attribute.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>scope</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The scope within which to search for the bean specified
                  by the <code>name</code> attribute.  If not specified, all
                  scopes are searched.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>transaction</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                  <p>If set to <code>true</code>, any current transaction
                  control token will be included in the generated hyperlink,
                  so that it will pass an <code>isTokenValid()</code> test
                  in the receiving Action.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>useLocalEncoding</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
              <p>If set to <code>true</code>, LocalCharacterEncoding will be
              used, that is, the characterEncoding set to the HttpServletResponse,
              as prefered character encoding rather than UTF-8, when
              URLEncoding is done on parameters of the URL.</p>
              ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>select</name>
        <tag-class>org.apache.struts.taglib.html.SelectTag</tag-class>
        <body-content>JSP</body-content>
        <description>
            <![CDATA[
            <p><strong>
            Render A Select Element
        </strong></p>
          
                        <p>Renders an HTML &lt;select&gt; element, associated
                        with a bean property specified by our attributes.  This
                        tag is only valid when nested inside a form tag body.
                        </p>

                        <p>This tag operates in two modes, depending upon the
                        state of the <code>multiple</code> attribute, which
                        affects the data type of the associated property you
                        should use:</p>
                        <ul>
                        <li><em>multiple="true" IS NOT selected</em> -
                            The corresponding property should be a scalar
                            value of any supported data type.</li>
                        <li><em>multiple="true" IS selected</em> -
                            The corresponding property should be an array
                            of any supported data type.</li>
                        </ul>

                        <p><strong>WARNING</strong>:  In order to correctly
                        recognize cases where no selection at all is made, the
                        <code>ActionForm</code> bean associated with this form
                        must include a statement resetting the scalar property
                        to a default value (if <code>multiple</code> is not
                        set), or the array property to zero length (if
                        <code>multiple</code> is set) in the
                        <code>reset()</code> method.</p>
        ]]>
        </description>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Name of the bean (in any scope) under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.</p>

                  <p><strong>N.B.</strong> This is used in conjunction with the 
                  <code>errorStyle</code>, <code>errorStyleClass</code> and 
                  <code>errorStyleId</code> attributes and should be set to
                  the same value as the <code>name</code> attribute on the
                  &lt;html:errors/&gt; tag.</p> 
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element if
                an error exists for it.</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>style</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element if
                an error exists for it (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleClass</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element if
                an error exists for it (renders an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleId</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>multiple</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                                If set to any arbitrary value, the rendered
                                select element will support
                                multiple selections.
                        ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted
                to determine which option should be pre-selected when rendering
                this input field.  If not specified, the bean associated with
                the enclosing <code>&lt;html:form&gt;</code> tag is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element.</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyle</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleClass</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element (renders
                an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleId</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>size</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The number of available options displayed at one time.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
            <p>The advisory title for this element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
            <p>The message resources key for the advisory title
            for this element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The value to compare with for marking an option selected.
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>submit</name>
        <tag-class>org.apache.struts.taglib.html.SubmitTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
            Render A Submit Button
        </strong></p>
          
            Renders an HTML &lt;input&gt; element of type <code>submit</code>.
            <p>
             If a graphical button is needed (a button with an image), then the
             <a href="#image"><code>image</code></a> tag is more appropriate.
            </p>
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of logic:iterate tag.  If <code>true</code>
                then name of the html tag will be rendered as
                "propertyName[34]". Number in brackets will be generated for
                every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of the request parameter that will be included with this
                submission, set to the specified value.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS styles to be applied to this HTML element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Identifier to be assigned to this HTML element (renders
                an "id" attribute).
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The value of the button label.
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>text</name>
        <tag-class>org.apache.struts.taglib.html.TextTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>Render An Input Field of Type text</strong></p>
          
            <p>Render an input field of type text.  This tag is only valid when 
            nested inside a form tag body.</p>
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The keyboard character used to move focus immediately to this
                element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Name of the bean (in any scope) under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.</p>

                  <p><strong>N.B.</strong> This is used in conjunction with the 
                  <code>errorStyle</code>, <code>errorStyleClass</code> and 
                  <code>errorStyleId</code> attributes and should be set to
                  the same value as the <code>name</code> attribute on the
                  &lt;html:errors/&gt; tag.</p> 
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element if
                an error exists for it.</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>style</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element if
                an error exists for it (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleClass</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element if
                an error exists for it (renders an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleId</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>maxlength</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Maximum number of input characters to accept. [No limit]
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted
                when rendering the current value of this input field. If not
                specified, the bean associated with the form tag we are nested
                within is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onselect</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when a
                when a user selects some text in a text field.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of this input field, and the name of the corresponding bean
                property if value is not specified. The corresponding bean property
                (if any) must be of type String.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>readonly</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          read only.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>size</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Number of character positions to allocate. [Browser default]
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element.</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyle</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleClass</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element (renders
                an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleId</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Value to which this field should be initialized. [Use the
                corresponding bean property value]
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>textarea</name>
        <tag-class>org.apache.struts.taglib.html.TextareaTag</tag-class>
        <description>
            <![CDATA[
            <p><strong>
            Render A Textarea
        </strong></p>
          
            Render a textarea element.  This tag is only valid when nested
                inside a form tag body.
        ]]>
        </description>
        <attribute>
            <name>accesskey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The keyboard character used to move focus immediately to this
                element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>alt</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The alternate text for this element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>altKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>The message resources key of the alternate text for this
                element.</p>
                ]]>
            </description>
        </attribute>
        <attribute>
            <name>bundle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                    The servlet context attributes key for the MessageResources
                    instance to use.  If not specified, defaults to the
                    application resources configured for our action servlet.
                
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>cols</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The number of columns to display.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>disabled</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          disabled.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>Name of the bean (in any scope) under which our error messages
                  have been stored.  If not present, the name specified by the
                  <code>Globals.ERROR_KEY</code> constant string will be used.</p>

                  <p><strong>N.B.</strong> This is used in conjunction with the 
                  <code>errorStyle</code>, <code>errorStyleClass</code> and 
                  <code>errorStyleId</code> attributes and should be set to
                  the same value as the <code>name</code> attribute on the
                  &lt;html:errors/&gt; tag.</p> 
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyle</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element if
                an error exists for it.</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>style</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element if
                an error exists for it (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleClass</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>errorStyleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element if
                an error exists for it (renders an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, this overrides the 
                <code>styleId</code> attribute in the event of an error.</p>
            
            <dl><dt><b>Since:</b></dt>
            <dd>Struts 1.2.5</dd></dl>
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>indexed</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
                Valid only inside of logic:iterate tag.
                If <code>true</code> then name of the html tag will be rendered as
                "id[34].propertyName". Number in brackets will be generated
                for every iteration and taken from ancestor logic:iterate tag.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>name</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The attribute name of the bean whose properties are consulted
                when rendering the current value of this input field. If not
                specified, the bean associated with the form tag we are nested
                within is utilized.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onblur</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onchange</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element loses input
                focus and its value has changed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>ondblclick</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives a
                mouse double click.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onfocus</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element receives input
                focus.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeydown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeypress</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is depressed and released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onkeyup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element has focus and a
                key is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousedown</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the mouse
                pointer and a mouse button is depressed.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmousemove</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and the pointer is moved.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseout</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was under the
                mouse pointer but the pointer was moved outside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseover</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element was not under
                the mouse pointer but the pointer is moved inside the element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onmouseup</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when this element is under the
                mouse pointer and a mouse button is released.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>onselect</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                JavaScript event handler executed when a
                when a user selects some text in a text field.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>property</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Name of this input field, and the name of the corresponding bean
                property if value is not specified. The corresponding bean property
                (if any) must be of type String.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>readonly</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <type>boolean</type>
            <description>
                <![CDATA[
          Set to <code>true</code> if this input field should be
          read only.
          ]]>
            </description>
        </attribute>
        <attribute>
            <name>rows</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The number of rows to display.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>style</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS styles to be applied to this HTML element.</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyle</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleClass</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>CSS stylesheet class to be applied to this HTML element
                (renders a "class" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleClass</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>styleId</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                <p>Identifier to be assigned to this HTML element (renders
                an "id" attribute).</p>

                <p><strong>N.B.</strong> If present, the <code>errorStyleId</code>
                overrides this attribute in the event of an error for the element.</p>
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>tabindex</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                The tab order (ascending positive integers) for this element.
            ]]>
            </description>
        </attribute>
        <attribute>
            <name>title</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The advisory title for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>titleKey</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                  <p>The message resources key for the advisory title
                  for this element.</p>
                  ]]>
            </description>
        </attribute>
        <attribute>
            <name>value</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
            <description>
                <![CDATA[
                Value to which this field should be initialized. [Use the
                corresponding bean property value]
            ]]>
            </description>
        </attribute>
    </tag>
    <tag>
        <name>xhtml</name>
        <tag-class>org.apache.struts.taglib.html.XhtmlTag</tag-class>
        <body-content>empty</body-content>
        <description>
            <![CDATA[
            <p><strong>Render HTML tags as XHTML</strong></p>
          
          <p>
            Using this tag in a page tells all other html taglib tags
            to render themselves as XHTML 1.0.  This is useful
            when composing pages with JSP includes or Tiles. 
            &lt;html:html xhtml="true"&gt; has a similar effect.  This
            tag has no attributes; you use it like this: &lt;html:xhtml/&gt;.
          </p>
          <p>
            <strong>Note</strong>: Included pages do not inherit the rendering
            style of the including page.  Each JSP fragment or Tile must use this
            tag to render as XHTML.  
          </p>
          ]]>
        </description>
    </tag>
</taglib>

