You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ma...@apache.org on 2018/10/18 09:31:40 UTC

[incubator-netbeans] branch master updated: [NETBEANS-1074] Module Review web.struts

This is an automated email from the ASF dual-hosted git repository.

matthiasblaesing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 3f40c0b  [NETBEANS-1074] Module Review web.struts
     new b424509  Merge branch 'github-pr-940-2'
3f40c0b is described below

commit 3f40c0b525d3a8c4031c24251a5d594022b09ae6
Author: Sarvesh Kesharwani <sa...@oracle.com>
AuthorDate: Thu Oct 4 10:50:45 2018 +0530

    [NETBEANS-1074] Module Review web.struts
---
 enterprise/web.struts/build.xml                    |   55 +-
 .../web.struts/external/antlr-2.7.2-license.txt    |   23 +
 enterprise/web.struts/external/binaries-list       |   48 +-
 ...ts-1.3.10-license.txt => bsf-2.3.0-license.txt} |   12 +-
 ...nse.txt => commons-beanutils-1.8.0-license.txt} |   12 +-
 .../external/commons-beanutils-1.8.0-notice.txt    |    2 +
 ...0-license.txt => commons-chain-1.2-license.txt} |   12 +-
 .../external/commons-chain-1.2-notice.txt          |    2 +
 ...icense.txt => commons-digester-1.8-license.txt} |   12 +-
 .../external/commons-digester-1.8-notice.txt       |    2 +
 ...se.txt => commons-fileupload-1.1.1-license.txt} |   12 +-
 ...3.10-license.txt => commons-io-1.1-license.txt} |   12 +-
 ...cense.txt => commons-logging-1.0.4-license.txt} |   12 +-
 ...nse.txt => commons-validator-1.3.1-license.txt} |   12 +-
 .../external/commons-validator-1.3.1-notice.txt    |    2 +
 ...=> generated-struts-1.3.10-javadoc-license.txt} |   11 +-
 .../web.struts/external/jstl-1.0.2-license.txt     |  405 +
 .../web.struts/external/oro-2.0.8-license.txt      |   57 +
 ...3.10-license.txt => standard-1.0.6-license.txt} |   12 +-
 ...-license.txt => struts-core-1.3.10-license.txt} |   11 +-
 .../external/struts-core-1.3.10-notice.txt         |    2 +
 ...10-license.txt => struts-el-1.3.10-license.txt} |   11 +-
 .../external/struts-el-1.3.10-notice.txt           |    2 +
 ...icense.txt => struts-extras-1.3.10-license.txt} |   10 +-
 .../external/struts-extras-1.3.10-notice.txt       |    2 +
 ...license.txt => struts-faces-1.3.10-license.txt} |   11 +-
 .../external/struts-faces-1.3.10-notice.txt        |    2 +
 ...xt => struts-mailreader-dao-1.3.10-license.txt} |   11 +-
 .../struts-mailreader-dao-1.3.10-notice.txt        |    2 +
 ...nse.txt => struts-scripting-1.3.10-license.txt} |   11 +-
 .../external/struts-scripting-1.3.10-notice.txt    |    2 +
 ...icense.txt => struts-taglib-1.3.10-license.txt} |   11 +-
 .../external/struts-taglib-1.3.10-notice.txt       |    2 +
 ...license.txt => struts-tiles-1.3.10-license.txt} |   11 +-
 .../external/struts-tiles-1.3.10-notice.txt        |    2 +
 .../external/web.struts-ext-res-apache-license.txt |   53 -
 enterprise/web.struts/licenseinfo.xml              |   70 +
 enterprise/web.struts/nbproject/project.properties |   23 +-
 .../modules/web/struts/resources/struts-bean.tld   | 1153 +++
 .../modules/web/struts/resources/struts-config.xml |   89 +
 .../web/struts/resources/struts-config_1_0.dtd     |  424 +
 .../web/struts/resources/struts-config_1_1.dtd     |  712 ++
 .../web/struts/resources/struts-config_1_2.dtd     |  702 ++
 .../web/struts/resources/struts-config_1_2.mdd     |  247 +
 .../struts/resources/struts-config_1_3-custom.dtd  |  682 ++
 .../web/struts/resources/struts-config_1_3.dtd     |  726 ++
 .../modules/web/struts/resources/struts-html.tld   | 9283 ++++++++++++++++++++
 .../modules/web/struts/resources/struts-logic.tld  | 1891 ++++
 .../modules/web/struts/resources/struts-nested.tld | 5051 +++++++++++
 .../modules/web/struts/resources/struts-tiles.tld  |  916 ++
 .../modules/web/struts/resources/struts.xml        |   71 +
 .../web/struts/resources/tiles-config_1_1.dtd      |  299 +
 .../web/struts/resources/tiles-config_1_3.dtd      |  299 +
 .../modules/web/struts/resources/tiles-defs.xml    |   63 +
 .../modules/web/struts/resources/validation.xml    |   95 +
 .../web/struts/resources/validator-rules.xml       |  418 +
 .../modules/web/struts/resources/validator_1_0.dtd |  262 +
 .../web/struts/resources/validator_1_0_1.dtd       |  261 +
 .../modules/web/struts/resources/validator_1_1.dtd |  308 +
 .../web/struts/resources/validator_1_1_3.dtd       |  328 +
 .../web/struts/resources/validator_1_2_0.dtd       |  249 +
 .../web/struts/resources/validator_1_3_0.dtd       |  249 +
 .../modules/web/struts/resources/welcome.jsp       |   49 +
 .../org/netbeans/nbbuild/extlibs/ignored-overlaps  |    5 +
 64 files changed, 25588 insertions(+), 208 deletions(-)

diff --git a/enterprise/web.struts/build.xml b/enterprise/web.struts/build.xml
index bdb80f1..b17aa47 100644
--- a/enterprise/web.struts/build.xml
+++ b/enterprise/web.struts/build.xml
@@ -23,39 +23,26 @@
 
     <import file="../../nbbuild/templates/projectized.xml"/>
 
-    <property name="resources.dir" value="./src/org/netbeans/modules/web/struts/resources/"/>
-
-    <target name="build-init" depends="projectized.build-init">
-        <unzip src="external/web.struts-external-resources.zip" dest="${resources.dir}"/>
-    </target>
-
-    <target name="release" depends="projectized.release">
-        <mkdir dir="${cluster}/modules/ext/struts"/>
-        <unzip src="external/struts-1.3.10-lib.zip" dest="${cluster}/modules/ext/struts">
-            <patternset>
-                <include name="struts-1.3.10-lib/antlr-2.7.2.jar"/>
-                <include name="struts-1.3.10-lib/bsf-2.3.0.jar"/>
-                <include name="struts-1.3.10-lib/commons-beanutils-1.8.0.jar"/>
-                <include name="struts-1.3.10-lib/commons-chain-1.2.jar"/>
-                <include name="struts-1.3.10-lib/commons-digester-1.8.jar"/>
-                <include name="struts-1.3.10-lib/commons-fileupload-1.1.1.jar"/>
-                <include name="struts-1.3.10-lib/commons-io-1.1.jar"/>
-                <include name="struts-1.3.10-lib/commons-logging-1.0.4.jar"/>
-                <include name="struts-1.3.10-lib/commons-validator-1.3.1.jar"/>
-                <include name="struts-1.3.10-lib/jstl-1.0.2.jar"/>
-                <include name="struts-1.3.10-lib/oro-2.0.8.jar"/>
-                <include name="struts-1.3.10-lib/standard-1.0.6.jar"/>
-                <include name="struts-1.3.10-lib/struts-core-1.3.10.jar"/>
-                <include name="struts-1.3.10-lib/struts-el-1.3.10.jar"/>
-                <include name="struts-1.3.10-lib/struts-extras-1.3.10.jar"/>
-                <include name="struts-1.3.10-lib/struts-faces-1.3.10.jar"/>
-                <include name="struts-1.3.10-lib/struts-mailreader-dao-1.3.10.jar"/>
-                <include name="struts-1.3.10-lib/struts-scripting-1.3.10.jar"/>
-                <include name="struts-1.3.10-lib/struts-taglib-1.3.10.jar"/>
-                <include name="struts-1.3.10-lib/struts-tiles-1.3.10.jar"/>
-            </patternset>
-            <mapper type="flatten"/>
-        </unzip>
+     <target name="-check-prepared-zip">
+         <condition property="web.struts.generated-zip-created" value="present">
+             <and>
+                 <available file="external/generated-struts-1.3.10-javadoc.zip" />
+             </and>
+         </condition>
+     </target>
+
+    <target name="build-init" depends="-check-prepared-zip,projectized.build-init" unless="web.struts.generated-zip-created">
+        <delete file="external/generated-struts-1.3.10-javadoc.zip"/>
+
+        <zip destfile="external/generated-struts-1.3.10-javadoc.zip" duplicate="fail">
+            <zipfileset src="external/struts-core-1.3.10-javadoc.jar" includes="**" />
+            <zipfileset src="external/struts-mailreader-dao-1.3.10-javadoc.jar" includes="org/**" />
+            <zipfileset src="external/struts-faces-1.3.10-javadoc.jar" includes="org/**" />
+            <zipfileset src="external/struts-scripting-1.3.10-javadoc.jar" includes="org/**" />
+            <zipfileset src="external/struts-taglib-1.3.10-javadoc.jar" includes="org/**" />
+            <zipfileset src="external/struts-tiles-1.3.10-javadoc.jar" includes="org/**" />
+            <zipfileset src="external/struts-extras-1.3.10.jar" includes="org/**" />
+            <zipfileset src="external/struts-el-1.3.10-javadoc.jar" includes="org/**" />
+        </zip>
     </target>
- 
 </project>
diff --git a/enterprise/web.struts/external/antlr-2.7.2-license.txt b/enterprise/web.struts/external/antlr-2.7.2-license.txt
new file mode 100644
index 0000000..c89c5ef
--- /dev/null
+++ b/enterprise/web.struts/external/antlr-2.7.2-license.txt
@@ -0,0 +1,23 @@
+Name: Another Tool for Language Recognition
+Version: 2.7.2
+License: ANTLR-2
+Description: Another Tool for Language Recognition
+Origin: http://www.antlr2.org/
+
+ANTLR 2 License
+
+We reserve no legal rights to the ANTLR--it is fully in the public
+domain. An individual or company may do whatever they wish with source
+code distributed with ANTLR or the code generated by ANTLR, including
+the incorporation of ANTLR, or its output, into commerical software.
+
+We encourage users to develop software with ANTLR. However, we do ask
+that credit is given to us for developing ANTLR. By "credit", we mean
+that if you use ANTLR or incorporate any source code into one of your
+programs (commercial product, research project, or otherwise) that you
+acknowledge this fact somewhere in the documentation, research report,
+etc... If you like ANTLR and have developed a nice tool with the output,
+please mention that you developed it using ANTLR. In addition, we ask
+that the headers remain intact in our source code. As long as these
+guidelines are kept, we expect to continue enhancing this system and
+expect to make other tools available as they are completed.
diff --git a/enterprise/web.struts/external/binaries-list b/enterprise/web.struts/external/binaries-list
index 0e6efda..0834623 100644
--- a/enterprise/web.struts/external/binaries-list
+++ b/enterprise/web.struts/external/binaries-list
@@ -1,3 +1,45 @@
-9319FDBED11E0D2EB03E4BB9E94BAA439A1DA469 struts-1.3.10-javadoc.zip
-9E226CFC08177A6666E5A2C535C25837A92C54C9 struts-1.3.10-lib.zip
-DF8909E990F2159CC050634A9A8AF32F55C8F5EF web.struts-external-resources.zip
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+546B5220622C4D9B2DA45AD1899224B6CE1C8830 antlr:antlr:2.7.2
+B6BE87B58571101E95525228CF23E934B4EABE35 bsf:bsf:2.3.0
+0C651D5103C649C12B20D53731643E5FFFCEB536 commons-beanutils:commons-beanutils:1.8.0
+744A13E8766E338BD347B6FBC28C6DB12979D0C6 commons-chain:commons-chain:1.2
+DC6A73FDBD1FA3F0944E8497C6C872FA21DCA37E commons-digester:commons-digester:1.8
+D587A50727BA905AAD13DE9EA119081403BF6823 commons-fileupload:commons-fileupload:1.1.1
+5E986A7E4B0472AEBE121154178DAB2DA26A8BF5 commons-io:commons-io:1.1
+F029A2AEFE2B3E1517573C580F948CAAC31B1056 commons-logging:commons-logging:1.0.4
+D1FD6B1510F25E827ADFFCF17DE3C85FA00E9391 commons-validator:commons-validator:1.3.1
+D494CF539682127EC637157B8529111CA365A67B jstl:jstl:1.0.2
+5592374F834645C4AE250F4C9FBB314C9369D698 oro:oro:2.0.8
+72B2DAB3D9723943F6F6839EF84CCC25A087E5FA taglibs:standard:1.0.6
+0C0F68CD5E17487C16D266D1280E3E16BEF5A848 org.apache.struts:struts-core:1.3.10
+DCD9A743C6225E2330904CBA1BF9B2516754DC13 org.apache.struts:struts-el:1.3.10
+BBC4F2B320B7E2479F4FA42FF79006EB413E6C51 org.apache.struts:struts-extras:1.3.10
+6FED60B15EC0E6C2F039FD98AABD7AAAB3084E8C org.apache.struts:struts-faces:1.3.10
+D593C116EF0802F61603B722609CC28C81DA4559 org.apache.struts:struts-mailreader-dao:1.3.10
+57CE5DCA514BA7CCB83081BB839D293F1A0BA704 org.apache.struts:struts-scripting:1.3.10
+9EF247D8EB03A09A3B1C9D434F9F9ACD45BA1C62 org.apache.struts:struts-taglib:1.3.10
+40693E3AA8A8586B8BAA0317D0127597CAD3D5EC org.apache.struts:struts-tiles:1.3.10
+D5BD13D892F7E277E35F6B22595E2D524550BFDB org.apache.struts:struts-core:1.3.10:javadoc
+1596C42F9CBF5FA0635A81FFF46F8F05B56BB529 org.apache.struts:struts-faces:1.3.10:javadoc
+9152F10FC1E2F2FE331A474D6B4E230CEF47ABDA org.apache.struts:struts-scripting:1.3.10:javadoc
+BE53F8B1D4611AAEE6075704BFDE2A177F2D3927 org.apache.struts:struts-taglib:1.3.10:javadoc
+B64308BBD204C6F27D79200A5D663FA43DF24B0C org.apache.struts:struts-tiles:1.3.10:javadoc
+BBC4F2B320B7E2479F4FA42FF79006EB413E6C51 org.apache.struts:struts-extras:1.3.10
+D52AE414833BAD731CBC66625537D6FD49EBA0AC org.apache.struts:struts-mailreader-dao:1.3.10:javadoc
+C8721D124BCBBA670D24A60311305B847EFA68F5 org.apache.struts:struts-el:1.3.10:javadoc
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/bsf-2.3.0-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/bsf-2.3.0-license.txt
index bab43da..c3358b7 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/bsf-2.3.0-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
-Version: 1.3.10
+Name: Bean Scripting Framework
+Version: 2.3.0
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Bean Scripting Framework
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/commons-beanutils-1.8.0-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/commons-beanutils-1.8.0-license.txt
index bab43da..c20ab0b 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/commons-beanutils-1.8.0-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
-Version: 1.3.10
+Name: Commons Beanutils
+Version: 1.8.0
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Bean Collections Library
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/commons-beanutils-1.8.0-notice.txt b/enterprise/web.struts/external/commons-beanutils-1.8.0-notice.txt
new file mode 100644
index 0000000..473dad5
--- /dev/null
+++ b/enterprise/web.struts/external/commons-beanutils-1.8.0-notice.txt
@@ -0,0 +1,2 @@
+Apache Commons BeanUtils
+Copyright 2000-2008 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/commons-chain-1.2-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/commons-chain-1.2-license.txt
index bab43da..b3c6254 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/commons-chain-1.2-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
-Version: 1.3.10
+Name: Commons Chain
+Version: 1.2
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Chain Library using Chain of Responsibility
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/commons-chain-1.2-notice.txt b/enterprise/web.struts/external/commons-chain-1.2-notice.txt
new file mode 100644
index 0000000..4f72d8b
--- /dev/null
+++ b/enterprise/web.struts/external/commons-chain-1.2-notice.txt
@@ -0,0 +1,2 @@
+Apache Commons Chain
+Copyright 2003-2008 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/commons-digester-1.8-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/commons-digester-1.8-license.txt
index bab43da..7d717f4 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/commons-digester-1.8-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
-Version: 1.3.10
+Name: Commons Digester
+Version: 1.8
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Digester layer to better process xml input
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/commons-digester-1.8-notice.txt b/enterprise/web.struts/external/commons-digester-1.8-notice.txt
new file mode 100644
index 0000000..d8e0f03
--- /dev/null
+++ b/enterprise/web.struts/external/commons-digester-1.8-notice.txt
@@ -0,0 +1,2 @@
+Apache Jakarta Commons Digester
+Copyright 2001-2006 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/commons-fileupload-1.1.1-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/commons-fileupload-1.1.1-license.txt
index bab43da..d2c3b44 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/commons-fileupload-1.1.1-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
-Version: 1.3.10
+Name: Commons Fileupload
+Version: 1.1.1
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Fileupload component for servlets and web applications
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/commons-io-1.1-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/commons-io-1.1-license.txt
index bab43da..d317051 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/commons-io-1.1-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
-Version: 1.3.10
+Name: Commons IO
+Version: 1.1
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Utility Libary to assist with developing IO functionality
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/commons-logging-1.0.4-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/commons-logging-1.0.4-license.txt
index bab43da..92d3ebd 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/commons-logging-1.0.4-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
-Version: 1.3.10
+Name: Commons Logging
+Version: 1.0.4
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Java-based logging utility
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/commons-validator-1.3.1-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/commons-validator-1.3.1-license.txt
index bab43da..ac1247f 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/commons-validator-1.3.1-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
-Version: 1.3.10
+Name: Commons Validator
+Version: 1.3.1
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Data Validation for Client side and server side
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/commons-validator-1.3.1-notice.txt b/enterprise/web.struts/external/commons-validator-1.3.1-notice.txt
new file mode 100644
index 0000000..cc36956
--- /dev/null
+++ b/enterprise/web.struts/external/commons-validator-1.3.1-notice.txt
@@ -0,0 +1,2 @@
+Apache Jakarta Commons Validator
+Copyright 2001-2006 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/generated-struts-1.3.10-javadoc-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/generated-struts-1.3.10-javadoc-license.txt
index bab43da..46a42ff 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/generated-struts-1.3.10-javadoc-license.txt
@@ -1,10 +1,10 @@
-Name: Apache Struts
+Name: Generated Javadoc for struts framework
 Version: 1.3.10
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Generated Javadoc for struts framework
+Type: generated
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +207,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/jstl-1.0.2-license.txt b/enterprise/web.struts/external/jstl-1.0.2-license.txt
new file mode 100644
index 0000000..8d8f287
--- /dev/null
+++ b/enterprise/web.struts/external/jstl-1.0.2-license.txt
@@ -0,0 +1,405 @@
+Name: JavaServer Pages Standard Tag Library
+Version: 1.0.2
+License: CDDL-1.1
+Description: JavaServer Pages Standard Tag Library
+Origin: Oracle
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.1
+
+1. Definitions.
+
+1.1. "Contributor" means each individual or entity that
+creates or contributes to the creation of Modifications.
+
+1.2. "Contributor Version" means the combination of the
+Original Software, prior Modifications used by a
+Contributor (if any), and the Modifications made by that
+particular Contributor.
+
+1.3. "Covered Software" means (a) the Original Software, or
+(b) Modifications, or (c) the combination of files
+containing Original Software with files containing
+Modifications, in each case including portions thereof.
+
+1.4. "Executable" means the Covered Software in any form
+other than Source Code.
+
+1.5. "Initial Developer" means the individual or entity
+that first makes Original Software available under this
+License.
+
+1.6. "Larger Work" means a work which combines Covered
+Software or portions thereof with code not governed by the
+terms of this License.
+
+1.7. "License" means this document.
+
+1.8. "Licensable" means having the right to grant, to the
+maximum extent possible, whether at the time of the initial
+grant or subsequently acquired, any and all of the rights
+conveyed herein.
+
+1.9. "Modifications" means the Source Code and Executable
+form of any of the following:
+
+A. Any file that results from an addition to,
+deletion from or modification of the contents of a
+file containing Original Software or previous
+Modifications;
+
+B. Any new file that contains any part of the
+Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made
+available under the terms of this License.
+
+1.10. "Original Software" means the Source Code and
+Executable form of computer software code that is
+originally released under this License.
+
+1.11. "Patent Claims" means any patent claim(s), now owned
+or hereafter acquired, including without limitation,
+method, process, and apparatus claims, in any patent
+Licensable by grantor.
+
+1.12. "Source Code" means (a) the common form of computer
+software code in which modifications are made and (b)
+associated documentation included in or with such code.
+
+1.13. "You" (or "Your") means an individual or a legal
+entity exercising rights under, and complying with all of
+the terms of, this License. For legal entities, "You"
+includes any entity which controls, is controlled by, or is
+under common control with You. For purposes of this
+definition, "control" means (a) the power, direct or
+indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (b) ownership
+of more than fifty percent (50%) of the outstanding shares
+or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, the
+Initial Developer hereby grants You a world-wide,
+royalty-free, non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Initial Developer,
+to use, reproduce, modify, display, perform,
+sublicense and distribute the Original Software (or
+portions thereof), with or without Modifications,
+and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using or selling of Original Software, to make, have
+made, use, practice, sell, and offer for sale, and/or
+otherwise dispose of the Original Software (or
+portions thereof).
+
+(c) The licenses granted in Sections 2.1(a) and (b)
+are effective on the date Initial Developer first
+distributes or otherwise makes the Original Software
+available to a third party under the terms of this
+License.
+
+(d) Notwithstanding Section 2.1(b) above, no patent
+license is granted: (1) for code that You delete from
+the Original Software, or (2) for infringements
+caused by: (i) the modification of the Original
+Software, or (ii) the combination of the Original
+Software with other software or devices.
+
+2.2. Contributor Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, each
+Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Contributor to
+use, reproduce, modify, display, perform, sublicense
+and distribute the Modifications created by such
+Contributor (or portions thereof), either on an
+unmodified basis, with other Modifications, as
+Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using, or selling of Modifications made by that
+Contributor either alone and/or in combination with
+its Contributor Version (or portions of such
+combination), to make, use, sell, offer for sale,
+have made, and/or otherwise dispose of: (1)
+Modifications made by that Contributor (or portions
+thereof); and (2) the combination of Modifications
+made by that Contributor with its Contributor Version
+(or portions of such combination).
+
+(c) The licenses granted in Sections 2.2(a) and
+2.2(b) are effective on the date Contributor first
+distributes or otherwise makes the Modifications
+available to a third party.
+
+(d) Notwithstanding Section 2.2(b) above, no patent
+license is granted: (1) for any code that Contributor
+has deleted from the Contributor Version; (2) for
+infringements caused by: (i) third party
+modifications of Contributor Version, or (ii) the
+combination of Modifications made by that Contributor
+with other software (except as part of the
+Contributor Version) or other devices; or (3) under
+Patent Claims infringed by Covered Software in the
+absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make
+available in Executable form must also be made available in
+Source Code form and that Source Code form must be
+distributed only under the terms of this License. You must
+include a copy of this License with every copy of the
+Source Code form of the Covered Software You distribute or
+otherwise make available. You must inform recipients of any
+such Covered Software in Executable form as to how they can
+obtain such Covered Software in Source Code form in a
+reasonable manner on or through a medium customarily used
+for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You
+contribute are governed by the terms of this License. You
+represent that You believe Your Modifications are Your
+original creation(s) and/or You have sufficient rights to
+grant the rights conveyed by this License.
+
+3.3. Required Notices.
+
+You must include a notice in each of Your Modifications
+that identifies You as the Contributor of the Modification.
+You may not remove or alter any copyright, patent or
+trademark notices contained within the Covered Software, or
+any notices of licensing or any descriptive text giving
+attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+
+You may not offer or impose any terms on any Covered
+Software in Source Code form that alters or restricts the
+applicable version of this License or the recipients'
+rights hereunder. You may choose to offer, and to charge a
+fee for, warranty, support, indemnity or liability
+obligations to one or more recipients of Covered Software.
+However, you may do so only on Your own behalf, and not on
+behalf of the Initial Developer or any Contributor. You
+must make it absolutely clear that any such warranty,
+support, indemnity or liability obligation is offered by
+You alone, and You hereby agree to indemnify the Initial
+Developer and every Contributor for any liability incurred
+by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+
+You may distribute the Executable form of the Covered
+Software under the terms of this License or under the terms
+of a license of Your choice, which may contain terms
+different from this License, provided that You are in
+compliance with the terms of this License and that the
+license for the Executable form does not attempt to limit
+or alter the recipient's rights in the Source Code form
+from the rights set forth in this License. If You
+distribute the Covered Software in Executable form under a
+different license, You must make it absolutely clear that
+any terms which differ from this License are offered by You
+alone, not by the Initial Developer or Contributor. You
+hereby agree to indemnify the Initial Developer and every
+Contributor for any liability incurred by the Initial
+Developer or such Contributor as a result of any such terms
+You offer.
+
+3.6. Larger Works.
+
+You may create a Larger Work by combining Covered Software
+with other code not governed by the terms of this License
+and distribute the Larger Work as a single product. In such
+a case, You must make sure the requirements of this License
+are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+
+Oracle is the initial license steward and
+may publish revised and/or new versions of this License
+from time to time. Each version will be given a
+distinguishing version number. Except as provided in
+Section 4.3, no one other than the license steward has the
+right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. If the Initial Developer includes a
+notice in the Original Software prohibiting it from being
+distributed or otherwise made available under any
+subsequent version of the License, You must distribute and
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. Otherwise, You may also choose to
+use, distribute or otherwise make the Covered Software
+available under the terms of any subsequent version of the
+License published by the license steward.
+
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a
+new license for Your Original Software, You may create and
+use a modified version of this License if You: (a) rename
+the license and remove any references to the name of the
+license steward (except to note that the license differs
+from this License); and (b) otherwise make it clear that
+the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will
+terminate automatically if You fail to comply with terms
+herein and fail to cure such breach within 30 days of
+becoming aware of the breach. Provisions which, by their
+nature, must remain in effect beyond the termination of
+this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding
+declaratory judgment actions) against Initial Developer or
+a Contributor (the Initial Developer or Contributor against
+whom You assert such claim is referred to as "Participant")
+alleging that the Participant Software (meaning the
+Contributor Version where the Participant is a Contributor
+or the Original Software where the Participant is the
+Initial Developer) directly or indirectly infringes any
+patent, then any and all rights granted directly or
+indirectly to You by such Participant, the Initial
+Developer (if the Initial Developer is not the Participant)
+and all Contributors under Sections 2.1 and/or 2.2 of this
+License shall, upon 60 days notice from Participant
+terminate prospectively and automatically at the expiration
+of such 60 day notice period, unless if within such 60 day
+period You withdraw Your claim with respect to the
+Participant Software against such Participant either
+unilaterally or pursuant to a written agreement with
+Participant.
+
+6.3. If You assert a patent infringement claim against
+Participant alleging that the Participant Software directly
+or indirectly infringes any patent where such claim is
+resolved (such as by license or settlement) prior to the
+initiation of patent infringement litigation, then the
+reasonable value of the licenses granted by such Participant
+under Sections 2.1 or 2.2 shall be taken into account in
+determining the amount or value of any payment or license.
+
+6.4. In the event of termination under Sections 6.1 or 6.2
+above, all end user licenses that have been validly granted
+by You or any distributor hereunder prior to termination
+(excluding licenses granted to You by any distributor)
+shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
+STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a "commercial item," as that term is
+defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+computer software" (as that term is defined at 48 C.F.R.
+ยง 252.227-7014(a)(1)) and "commercial computer software
+documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+through 227.7202-4 (June 1995), all U.S. Government End Users
+acquire Covered Software with only those rights set forth herein.
+This U.S. Government Rights clause is in lieu of, and supersedes,
+any other FAR, DFAR, or other clause or provision that addresses
+Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the
+extent necessary to make it enforceable. This License shall be
+governed by the law of the jurisdiction specified in a notice
+contained within the Original Software (except to the extent
+applicable law, if any, provides otherwise), excluding such
+jurisdiction's conflict-of-law provisions. Any litigation
+relating to this License shall be subject to the jurisdiction of
+the courts located in the jurisdiction and venue specified in a
+notice contained within the Original Software, with the losing
+party responsible for costs, including, without limitation, court
+costs and reasonable attorneys' fees and expenses. The
+application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded. Any law or
+regulation which provides that the language of a contract shall
+be construed against the drafter shall not apply to this License.
+You agree that You alone are responsible for compliance with the
+United States export administration regulations (and the export
+control laws and regulation of any other countries) when You use,
+distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or
+indirectly, out of its utilization of rights under this License
+and You agree to work with Initial Developer and Contributors to
+distribute such responsibility on an equitable basis. Nothing
+herein is intended or shall be deemed to constitute any admission
+of liability.
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND
+DISTRIBUTION LICENSE (CDDL)
+
+The code released under the CDDL shall be governed by the laws
+of the State of California (excluding conflict-of-law provisions).
+Any litigation relating to this License shall be subject to the
+jurisdiction of the Federal Courts of the Northern District of
+California and the state courts of the State of California, with
+venue lying in Santa Clara County, California.
diff --git a/enterprise/web.struts/external/oro-2.0.8-license.txt b/enterprise/web.struts/external/oro-2.0.8-license.txt
new file mode 100644
index 0000000..27d0a17
--- /dev/null
+++ b/enterprise/web.struts/external/oro-2.0.8-license.txt
@@ -0,0 +1,57 @@
+Name: Oro
+Version: 2.0.8
+License: Apache-1.1
+Description: Text processing Java Classes
+Origin: Apache
+
+The Apache Software License, Version 1.1
+
+Copyright (c) __YEARS__ The Apache Software Foundation.  All rights
+reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+3. The end-user documentation included with the redistribution,
+   if any, must include the following acknowledgment:
+      "This product includes software developed by the
+       Apache Software Foundation (http://www.apache.org/)."
+   Alternately, this acknowledgment may appear in the software itself,
+   if and wherever such third-party acknowledgments normally appear.
+
+4. The names __NAMES__ must
+   not be used to endorse or promote products derived from this
+   software without prior written permission. For written
+   permission, please contact apache@apache.org.
+
+5. Products derived from this software may not be called "Apache",
+   nor may "Apache" appear in their name, without prior written
+   permission of the Apache Software Foundation.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+====================================================================
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the Apache Software Foundation.  For more
+information on the Apache Software Foundation, please see
+<http://www.apache.org/>.
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/standard-1.0.6-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/standard-1.0.6-license.txt
index bab43da..ba3b728 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/standard-1.0.6-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
-Version: 1.3.10
+Name: jakarta-taglibs 'standard'
+Description: An implementation of JavaServer Pages Standard Tag Library (JSTL)
+Origin: Apache
+Version: 1.0.6
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/struts-core-1.3.10-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/struts-core-1.3.10-license.txt
index bab43da..c535cd8 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/struts-core-1.3.10-license.txt
@@ -1,10 +1,10 @@
-Name: Apache Struts
+Name: Struts Core
 Version: 1.3.10
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Core Struts Library
+Origin: Apache
+Files: struts-core-1.3.10-javadoc.jar, struts-core-1.3.10.jar
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +207,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-core-1.3.10-notice.txt b/enterprise/web.struts/external/struts-core-1.3.10-notice.txt
new file mode 100644
index 0000000..bc8e797
--- /dev/null
+++ b/enterprise/web.struts/external/struts-core-1.3.10-notice.txt
@@ -0,0 +1,2 @@
+Apache Struts
+Copyright 2000-2007 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/struts-el-1.3.10-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/struts-el-1.3.10-license.txt
index bab43da..6064fca 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/struts-el-1.3.10-license.txt
@@ -1,10 +1,10 @@
-Name: Apache Struts
+Name: Struts EL
 Version: 1.3.10
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Struts Expression Language
+Origin: Apache
+Files: struts-el-1.3.10-javadoc.jar, struts-el-1.3.10.jar
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +207,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-el-1.3.10-notice.txt b/enterprise/web.struts/external/struts-el-1.3.10-notice.txt
new file mode 100644
index 0000000..e3fea86
--- /dev/null
+++ b/enterprise/web.struts/external/struts-el-1.3.10-notice.txt
@@ -0,0 +1,2 @@
+Apache Struts EL
+Copyright 2000-2007 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/struts-extras-1.3.10-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/struts-extras-1.3.10-license.txt
index bab43da..37247ba 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/struts-extras-1.3.10-license.txt
@@ -1,10 +1,9 @@
-Name: Apache Struts
+Name: Struts Extras
 Version: 1.3.10
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Struts Extras provides different plugins mostly focused on fixing vulnerabilities in older versions of the framework
+Origin: Apache
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +206,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-extras-1.3.10-notice.txt b/enterprise/web.struts/external/struts-extras-1.3.10-notice.txt
new file mode 100644
index 0000000..566d2c4
--- /dev/null
+++ b/enterprise/web.struts/external/struts-extras-1.3.10-notice.txt
@@ -0,0 +1,2 @@
+Apache Struts Extras
+Copyright 2000-2007 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/struts-faces-1.3.10-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/struts-faces-1.3.10-license.txt
index bab43da..0df1ed1 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/struts-faces-1.3.10-license.txt
@@ -1,10 +1,10 @@
-Name: Apache Struts
+Name: Struts Faces
 Version: 1.3.10
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Struts Faces framework
+Origin: Apache
+Files: struts-faces-1.3.10-javadoc.jar, struts-faces-1.3.10.jar
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +207,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-faces-1.3.10-notice.txt b/enterprise/web.struts/external/struts-faces-1.3.10-notice.txt
new file mode 100644
index 0000000..ed316f7
--- /dev/null
+++ b/enterprise/web.struts/external/struts-faces-1.3.10-notice.txt
@@ -0,0 +1,2 @@
+Apache Struts Faces
+Copyright 2000-2007 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/struts-mailreader-dao-1.3.10-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/struts-mailreader-dao-1.3.10-license.txt
index bab43da..a0c6fe7 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/struts-mailreader-dao-1.3.10-license.txt
@@ -1,10 +1,10 @@
-Name: Apache Struts
+Name: Struts Mailreader
 Version: 1.3.10
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Struts mailreader framework focused on maintain accounts with mail servers
+Origin: Apache
+Files: struts-mailreader-dao-1.3.10-javadoc.jar, struts-mailreader-dao-1.3.10.jar
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +207,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-mailreader-dao-1.3.10-notice.txt b/enterprise/web.struts/external/struts-mailreader-dao-1.3.10-notice.txt
new file mode 100644
index 0000000..5415b4b
--- /dev/null
+++ b/enterprise/web.struts/external/struts-mailreader-dao-1.3.10-notice.txt
@@ -0,0 +1,2 @@
+Apache Struts Mailreader DAO
+Copyright 2000-2007 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/struts-scripting-1.3.10-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/struts-scripting-1.3.10-license.txt
index bab43da..7391485 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/struts-scripting-1.3.10-license.txt
@@ -1,10 +1,10 @@
-Name: Apache Struts
+Name: Struts Scripting
 Version: 1.3.10
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Struts scripting allows Struts Actions be written with the scripting language of your choice
+Origin: Apache
+Files: struts-scripting-1.3.10-javadoc.jar, struts-scripting-1.3.10.jar
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +207,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-scripting-1.3.10-notice.txt b/enterprise/web.struts/external/struts-scripting-1.3.10-notice.txt
new file mode 100644
index 0000000..ce3019d
--- /dev/null
+++ b/enterprise/web.struts/external/struts-scripting-1.3.10-notice.txt
@@ -0,0 +1,2 @@
+Apache Struts Scripting
+Copyright 2000-2007 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/struts-taglib-1.3.10-license.txt
similarity index 98%
copy from enterprise/web.struts/external/struts-1.3.10-license.txt
copy to enterprise/web.struts/external/struts-taglib-1.3.10-license.txt
index bab43da..6e69214 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/struts-taglib-1.3.10-license.txt
@@ -1,10 +1,10 @@
-Name: Apache Struts
+Name: Struts taglib library
 Version: 1.3.10
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Struts tag library contains JSP custom tags useful in creating dynamic HTML user interfaces
+Origin: Apache
+Files: struts-taglib-1.3.10-javadoc.jar, struts-taglib-1.3.10.jar
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +207,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-taglib-1.3.10-notice.txt b/enterprise/web.struts/external/struts-taglib-1.3.10-notice.txt
new file mode 100644
index 0000000..1f5770d
--- /dev/null
+++ b/enterprise/web.struts/external/struts-taglib-1.3.10-notice.txt
@@ -0,0 +1,2 @@
+Apache Struts Taglib
+Copyright 2000-2007 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/struts-1.3.10-license.txt b/enterprise/web.struts/external/struts-tiles-1.3.10-license.txt
similarity index 98%
rename from enterprise/web.struts/external/struts-1.3.10-license.txt
rename to enterprise/web.struts/external/struts-tiles-1.3.10-license.txt
index bab43da..bd73937 100644
--- a/enterprise/web.struts/external/struts-1.3.10-license.txt
+++ b/enterprise/web.struts/external/struts-tiles-1.3.10-license.txt
@@ -1,10 +1,10 @@
-Name: Apache Struts
+Name: Struts Tiles
 Version: 1.3.10
 License: Apache-2.0
-Files: struts-1.3.10-lib.zip struts-1.3.10-javadoc.zip
-OSR: 2970
-Description: Framework for creating Java web applications
-Origin: http://struts.apache.org/
+Description: Struts Tiles is used to create reusable presentation components
+Origin: Apache
+Files: struts-tiles-1.3.10-javadoc.jar, struts-tiles-1.3.10.jar
+
 
                                  Apache License
                            Version 2.0, January 2004
@@ -207,4 +207,3 @@ Origin: http://struts.apache.org/
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff --git a/enterprise/web.struts/external/struts-tiles-1.3.10-notice.txt b/enterprise/web.struts/external/struts-tiles-1.3.10-notice.txt
new file mode 100644
index 0000000..ee85f3f
--- /dev/null
+++ b/enterprise/web.struts/external/struts-tiles-1.3.10-notice.txt
@@ -0,0 +1,2 @@
+Apache Struts Tiles
+Copyright 2000-2007 The Apache Software Foundation
\ No newline at end of file
diff --git a/enterprise/web.struts/external/web.struts-ext-res-apache-license.txt b/enterprise/web.struts/external/web.struts-ext-res-apache-license.txt
deleted file mode 100644
index 0c8a800..0000000
--- a/enterprise/web.struts/external/web.struts-ext-res-apache-license.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-Apache License
-
-Version 2.0, January 2004
-
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or it [...]
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combin [...]
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-You must give any other recipients of the Work or Derivative Works a copy of this License; and
-You must cause any modified files to carry prominent notices stating that You changed the files; and
-You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, w [...]
-
-You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the [...]
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limit [...]
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor h [...]
-
-END OF TERMS AND CONDITIONS
diff --git a/enterprise/web.struts/licenseinfo.xml b/enterprise/web.struts/licenseinfo.xml
new file mode 100644
index 0000000..e61e60c
--- /dev/null
+++ b/enterprise/web.struts/licenseinfo.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<licenseinfo>
+    <fileset>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_0.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_1.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_2.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_3.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-config_1_3-custom.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/validator-rules.xml</file>
+        <license ref="Apache-2.0-ASF" />
+        <notice>
+Apache Struts
+Copyright 2000-2007 The Apache Software Foundation
+        </notice>
+    </fileset>
+    <fileset>
+        <file>src/org/netbeans/modules/web/struts/resources/tiles-config_1_1.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/tiles-config_1_3.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-tiles.tld</file>
+        <license ref="Apache-2.0-ASF" />
+        <notice>
+Apache Struts Tiles
+Copyright 2000-2007 The Apache Software Foundation
+        </notice>
+    </fileset>
+    <fileset>
+        <file>src/org/netbeans/modules/web/struts/resources/validator_1_0.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/validator_1_0_1.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/validator_1_1.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/validator_1_1_3.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/validator_1_2_0.dtd</file>
+        <file>src/org/netbeans/modules/web/struts/resources/validator_1_3_0.dtd</file>
+        <license ref="Apache-2.0-ASF" />
+        <notice>
+Apache Jakarta Commons Validator
+Copyright 2001-2006 The Apache Software Foundation
+        </notice>
+    </fileset>
+    <fileset>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-bean.tld</file>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-html.tld</file>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-logic.tld</file>
+        <file>src/org/netbeans/modules/web/struts/resources/struts-nested.tld</file>
+        <license ref="Apache-2.0-ASF" />
+        <notice>
+Apache Struts Taglib
+Copyright 2000-2007 The Apache Software Foundation
+        </notice>
+    </fileset>
+</licenseinfo>
diff --git a/enterprise/web.struts/nbproject/project.properties b/enterprise/web.struts/nbproject/project.properties
index f3f079f..b8c2e8e 100644
--- a/enterprise/web.struts/nbproject/project.properties
+++ b/enterprise/web.struts/nbproject/project.properties
@@ -40,7 +40,28 @@ extra.module.files=\
     modules/ext/struts/struts-scripting-1.3.10.jar,\
     modules/ext/struts/struts-taglib-1.3.10.jar,\
     modules/ext/struts/struts-tiles-1.3.10.jar
-release.external/struts-1.3.10-javadoc.zip=docs/struts-1.3.10-javadoc.zip
+
+release.external/generated-struts-1.3.10-javadoc.zip=docs/struts-1.3.10-javadoc.zip
+release.external/antlr-2.7.2.jar=modules/ext/struts/antlr-2.7.2.jar
+release.external/bsf-2.3.0.jar=modules/ext/struts/bsf-2.3.0.jar
+release.external/commons-beanutils-1.8.0.jar=modules/ext/struts/commons-beanutils-1.8.0.jar
+release.external/commons-chain-1.2.jar=modules/ext/struts/commons-chain-1.2.jar
+release.external/commons-digester-1.8.jar=modules/ext/struts/commons-digester-1.8.jar
+release.external/commons-fileupload-1.1.1.jar=modules/ext/struts/commons-fileupload-1.1.1.jar
+release.external/commons-io-1.1.jar=modules/ext/struts/commons-io-1.1.jar
+release.external/commons-logging-1.0.4.jar=modules/ext/struts/commons-logging-1.0.4.jar
+release.external/commons-validator-1.3.1.jar=modules/ext/struts/commons-validator-1.3.1.jar
+release.external/jstl-1.0.2.jar=modules/ext/struts/jstl-1.0.2.jar
+release.external/oro-2.0.8.jar=modules/ext/struts/oro-2.0.8.jar
+release.external/standard-1.0.6.jar=modules/ext/struts/standard-1.0.6.jar
+release.external/struts-core-1.3.10.jar=modules/ext/struts/struts-core-1.3.10.jar
+release.external/struts-el-1.3.10.jar=modules/ext/struts/struts-el-1.3.10.jar
+release.external/struts-extras-1.3.10.jar=modules/ext/struts/struts-extras-1.3.10.jar
+release.external/struts-faces-1.3.10.jar=modules/ext/struts/struts-faces-1.3.10.jar
+release.external/struts-mailreader-dao-1.3.10.jar=modules/ext/struts/struts-mailreader-dao-1.3.10.jar
+release.external/struts-scripting-1.3.10.jar=modules/ext/struts/struts-scripting-1.3.10.jar
+release.external/struts-taglib-1.3.10.jar=modules/ext/struts/struts-taglib-1.3.10.jar
+release.external/struts-tiles-1.3.10.jar=modules/ext/struts/struts-tiles-1.3.10.jar
 
 test.unit.cp.extra=\
     ${xml.text.dir}/modules/org-netbeans-modules-xml-text.jar
diff --git a/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-bean.tld b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-bean.tld
new file mode 100644
index 0000000..ebcf6dc
--- /dev/null
+++ b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-bean.tld
@@ -0,0 +1,1153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    $Id: struts-bean.tld 657484 2008-05-18 00:44:36Z niallp $
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+         http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!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>bean</short-name>
+    <uri>http://struts.apache.org/tags-bean</uri>
+    <description>
+        <![CDATA[
+  <p><strong>Note:  Some of the features in this taglib are also
+  available in the <a href="http://java.sun.com/products/jsp/jstl/">JavaServer Pages Standard Tag Library (JSTL)</a>.
+  The Struts team encourages the use of the standard tags over the Struts
+  specific tags when possible.</strong></p>
+
+  <p>This tag library contains tags useful in accessing beans and their
+  properties, as well as defining new beans (based on these accesses)
+  that are accessible to the remainder of the page via scripting variables
+  and page scope attributes.  Convenient mechanisms to create new beans
+  based on the value of request cookies, headers, and parameters are also
+  provided.</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>cookie</name>
+        <tag-class>org.apache.struts.taglib.bean.CookieTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.CookieTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a scripting variable based on the value(s) of the specified
+    request cookie.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified request cookie (as a single
+    value or multiple values, depending on the <code>multiple</code> attribute),
+    and define the result as a page scope attribute of type <code>Cookie</code>
+    (if <code>multiple</code> is not specified) or <code>Cookie[]</code>
+    (if <code>multiple</code> is specified).</p>
+
+    <p>If no cookie with the specified name can be located, and no default
+    value is specified, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified request cookie.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>multiple</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If any arbitrary value for this attribute is specified, causes all
+      matching cookies to be accumulated and stored into a bean of type
+      <code>Cookie[]</code>.  If not specified, the first value for the
+      specified cookie will be retrieved as a value of type
+      <code>Cookie</code>.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the request cookie whose value, or values,
+      is to be retrieved.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The default cookie value to return if no cookie with the
+      specified name was included in this request.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>define</name>
+        <tag-class>org.apache.struts.taglib.bean.DefineTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.DefineTei</tei-class>
+        <body-content>JSP</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a scripting variable based on the value(s) of the specified
+    bean property.
+    </strong></p>
+          
+    <p>Create a new attribute (in the scope specified by the
+    <code>toScope</code> property, if any), and a corresponding scripting
+    variable, both of which are named by the value of the <code>id</code>
+    attribute.  The corresponding value to which this new attribute (and
+    scripting variable) is set are specified via use of exactly one of the
+    following approaches (trying to use more than one will result in a
+    JspException being thrown):</p>
+    <ul>
+    <li>Specify a <code>name</code> attribute (plus optional
+        <code>property</code> and <code>scope</code> attributes) -
+        The created attribute and scripting variable will be of the type of the
+        retrieved JavaBean property, unless it is a Java primitive type,
+        in which case it will be wrapped in the appropriate wrapper class
+        (i.e. int is wrapped by java.lang.Integer).</li>
+    <li>Specify a <code>value</code> attribute - The created attribute and
+        scripting variable will be of type <code>java.lang.String</code>,
+        set to the value of this attribute.</li>
+    <li>Specify nested body content - The created attribute and scripting
+        variable will be of type <code>java.lang.String</code>, set to
+        the value of the nested body content.</li>
+    </ul>
+
+    <p>If a problem occurs while retrieving the specified bean property, a
+    request time exception will be thrown.</p>
+
+    <p>The <code>&lt;bean:define&gt;</code> tag differs from
+    <code>&lt;jsp:useBean&gt;</code> in several ways, including:</p>
+    <ul>
+    <li>Unconditionally creates (or replaces) a bean under the
+        specified identifier.</li>
+    <li>Can create a bean with the value returned by a property getter
+        of a different bean (including properties referenced with a
+        nested and/or indexed property name).</li>
+    <li>Can create a bean whose contents is a literal string (or the result
+        of a runtime expression) specified by the <code>value</code>
+        attribute.</li>
+    <li>Does not support nested content (such as
+        <code>&lt;jsp:setProperty&gt;</code> tags) that are only executed
+        if a bean was actually created.</li>
+    </ul>
+
+    <p><strong>USAGE NOTE</strong> - There is a restriction in the JSP 1.1
+    Specification that disallows using the same value for an <code>id</code>
+    attribute more than once in a single JSP page.  Therefore, you will not
+    be able to use <code>&lt;bean:define&gt;</code> for the same bean
+    name more than once in a single page.</p>
+
+    <p><strong>USAGE NOTE</strong> - If you use another tag to create the
+    body content (e.g. bean:write), that tag must return a non-empty String.
+    An empty String equates to an empty body or a null String, and a new
+    scripting variable cannot be defined as null. Your bean must return a
+    non-empty String, or the define tag must be wrapped within a logic tag
+    to test for an empty or null value.</p>
+
+    <p><strong>USAGE NOTE</strong> - You cannot use bean:define to <strong>instantiate</strong>
+    a DynaActionForm (type="org.apache.struts.action.DynaActionForm") with
+    the properties specified in the struts-config. The mechanics of creating
+    the dyna-properties is complex and cannot be handled by a no-argument
+    constructor. If you need to create an ActionForm this way, you must use
+    a conventional ActionForm.
+    </p>
+
+    <p>See the Bean Developer's Guide section on
+    <a href="../apidocs/org/apache/struts/taglib/bean/package-summary.html#doc.Creation">
+    bean creation</a> for more information about these differences, as well
+    as alternative approaches to introducing beans into a JSP page.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified property.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the attribute name of the bean whose property is accessed
+      to define a new page scope attribute (if <code>property</code> is also
+      specified) or the attribute name of the bean that is duplicated with
+      the new reference created by this tag (if <code>property</code> is not
+      also specified).  This attribute is required unless you specify
+      a <code>value</code> attribute or nested body content.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the property to be accessed on the bean
+      specified by <code>name</code>.  This value may be a simple, indexed,
+      or nested property reference expression.  If not specified, the bean
+      identified by <code>name</code> is given a new reference identified by
+      <code>id</code>.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the variable scope searched to retrieve the bean specified
+      by <code>name</code>.  If not specified, the default rules applied by
+      <code>PageContext.findAttribute()</code> are applied.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>toScope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the variable scope into which the newly defined bean will
+      be created.  If not specified, the bean will be created in
+      <code>page</code> scope.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>type</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+        <p>Specifies the fully qualified class name of the value to be exposed
+        as the <code>id</code> attribute.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The <code>java.lang.String</code> value to which the exposed bean
+      should be set.  This attribute is required unless you specify the
+      <code>name</code> attribute or nested body content.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>header</name>
+        <tag-class>org.apache.struts.taglib.bean.HeaderTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.HeaderTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a scripting variable based on the value(s) of the specified
+    request header.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified request header (as a single
+    value or multiple values, depending on the <code>multiple</code> attribute),
+    and define the result as a page scope attribute of type <code>String</code>
+    (if <code>multiple</code> is not specified) or <code>String[]</code>
+    (if <code>multiple</code> is specified).</p>
+
+    <p>If no header with the specified name can be located, and no default
+    value is specified, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified request header.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>multiple</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If any arbitrary value for this attribute is specified, causes a call
+      to <code>HttpServletRequest.getHeaders()</code> and a definition of the
+      result as a bean of type <code>String[]</code>.  Otherwise,
+      <code>HttpServletRequest.getHeader()</code> will be called, and a
+      definition of the result as a bean of type <code>String</code>
+      will be performed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the request header whose value, or values,
+      is to be retrieved.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The default header value to return if no header with the
+      specified name was included in this request.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>include</name>
+        <tag-class>org.apache.struts.taglib.bean.IncludeTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.IncludeTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Load the response from a dynamic application request and make it available
+    as a bean.
+    </strong></p>
+          
+    <p>Perform an internal dispatch to the specified application component
+    (or external URL)
+    and make the response data from that request available as a bean of
+    type <code>String</code>.  This tag has a function similar to that of
+    the standard <code>&lt;jsp:include&gt;</code> tag, except that the
+    response data is stored in a page scope attribute instead of being
+    written to the output stream.  If the current request is part of a
+    session, the generated request for the include will also include the
+    session identifier (and thus be part of the same session).</p>
+
+    <p>The URL used to access the specified application component 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 (since
+        this might link to a resource external to the application, the
+        session identifier is <strong>not</strong> included.</li>
+    <li><em>page</em> - Use the value of this attribute as an
+        module-relative URI to the desired resource.</li>
+    </ul>
+    ]]>
+        </description>
+        <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 resource to be included.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>href</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Absolute URL (including the appropriate protocol prefix such as
+      "http:") of the resource to be included.  Because this URL could be
+      external to the current web application, the session identifier will
+      <strong>not</strong> be included in the request.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified web application resource.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>page</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Module-relative URI (starting with a '/') of the web application
+      resource to be included.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>transaction</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>boolean</type>
+            <description>
+                <![CDATA[
+        <p>Set to <code>true</code> if you want the current
+        transaction control token included in the generated
+        URL for this include.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>message</name>
+        <tag-class>org.apache.struts.taglib.bean.MessageTag</tag-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Render an internationalized message string to the response.
+    </strong></p>
+          
+    <p>Retrieves an internationalized message for the specified locale,
+    using the specified message key, and write it to the output stream.
+    Up to five parametric replacements (such as "{0}") may be specified.</p>
+
+    <p>The message key may be specified directly, using the <code>key</code>
+    attribute, or indirectly, using the <code>name</code> and
+    <code>property</code> attributes to obtain it from a bean.</p>
+    
+    <p>
+    <strong>JSTL</strong>:  The equivalent JSTL tag is &lt;fmt:message&gt;.  For example,
+    <br/>
+    <code>
+    	&lt;fmt:message key="my.msg.key"&gt;
+    	  &lt;fmt:param value="replacement text"/&gt;
+    	&lt;/fmt:message&gt;
+    </code>
+    </p>
+    ]]>
+        </description>
+        <attribute>
+            <name>arg0</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>First parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>arg1</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Second parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>arg2</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Third parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>arg3</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Fourth parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>arg4</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Fifth parametric replacement value, if any.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>bundle</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the application scope bean under which the
+      <code>MessageResources</code> object containing our messages
+      is stored.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>key</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The message key of the requested message, which must have
+      a corresponding value in the message resources. If not specified,
+      the key is obtained from the <code>name</code> and
+      <code>property</code> attributes.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>locale</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the session scope bean under which our currently
+      selected <code>Locale</code> object is stored.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the attribute name of the bean whose property is accessed
+      to retrieve the value specified by <code>property</code> (if
+      specified).  If <code>property</code> is not specified, the value of
+      this bean itself will be used as the message resource key.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the property to be accessed on the bean
+      specified by <code>name</code>.  This value may be a simple, indexed,
+      or nested property reference expression.  If not specified, the value
+      of the bean identified by <code>name</code> will itself be used as the
+      message resource key.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the variable scope searched to retrieve the bean specified
+      by <code>name</code>.  If not specified, the default rules applied by
+      <code>PageContext.findAttribute()</code> are applied.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>page</name>
+        <tag-class>org.apache.struts.taglib.bean.PageTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.PageTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Expose a specified item from the page context as a bean.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified item from the page context
+    for this page, and define it as a scripting variable, and a page scope
+    attribute accessible to the remainder of the current page.</p>
+
+    <p>If a problem occurs while retrieving the specified configuration
+    object, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated
+      page scope attribute) that will be made available with the value of
+      the specified page context property.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Name of the property from our page context to be retrieved and
+      exposed.  Must be one of <code>application</code>, <code>config</code>,
+      <code>request</code>, <code>response</code>, or <code>session</code>.
+      </p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>parameter</name>
+        <tag-class>org.apache.struts.taglib.bean.ParameterTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.ParameterTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a scripting variable based on the value(s) of the specified
+    request parameter.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified request parameter (as a single
+    value or multiple values, depending on the <code>multiple</code> attribute),
+    and define the result as a page scope attribute of type <code>String</code>
+    (if <code>multiple</code> is not specified) or <code>String[]</code>
+    (if <code>multiple</code> is specified).</p>
+
+    <p>If no request parameter with the specified name can be located, and
+    no default value is specified, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified request parameter.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>multiple</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If any arbitrary value for this attribute is specified, causes a call
+      to <code>ServletRequest.getParameterValues()</code> and a definition of
+      the result as a bean of type <code>String[]</code>.  Otherwise,
+      <code>ServletRequest.getParameter()</code> will be called, and a
+      definition of the result as a bean of type <code>String</code>
+      will be performed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the request parameter whose value, or values,
+      is to be retrieved.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>value</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The default parameter value to return if no parameter with the
+      specified name was included in this request.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>resource</name>
+        <tag-class>org.apache.struts.taglib.bean.ResourceTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.ResourceTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Load a web application resource and make it available as a bean.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified web application resource, and make
+    it available as either a <code>InputStream</code> or a <code>String</code>,
+    depending on the value of the <code>input</code> attribute.</p>
+
+    <p>If a problem occurs while retrieving the specified resource, a
+    request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated page
+      scope attribute) that will be made available with the value of the
+      specified web application resource.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>input</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>If any arbitrary value for this attribute is specified, the resource
+      will be made available as an <code>InputStream</code>.  If this
+      attribute is not specified, the resource will be made available
+      as a <code>String</code>.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Module-relative name (starting with a '/') of the web application
+      resource to be loaded and made available.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>size</name>
+        <tag-class>org.apache.struts.taglib.bean.SizeTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.SizeTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Define a bean containing the number of elements in a Collection or Map.
+    </strong></p>
+          
+    <p>Given a reference to an array, Collection or Map, creates a new bean, of
+    type <code>java.lang.Integer</code>, whose value is the number of elements
+    in that collection.  You can specify the collection to be counted in any
+    one of the following ways:</p>
+    <ul>
+    <li>As a runtime expression specified as the value of the
+        <code>collection</code> attribute.</li>
+    <li>As a JSP bean specified by the <code>name</code> attribute.</li>
+    <li>As the property, specified by the <code>property</code> attribute,
+        of the JSP bean specified by the <code>name</code> attribute.</li>
+    </ul>
+    ]]>
+        </description>
+        <attribute>
+            <name>collection</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>java.lang.Object</type>
+            <description>
+                <![CDATA[
+      <p>A runtime expression that evaluates to an array, a Collection, or
+      a Map.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of a page scope JSP bean, of type
+      <code>java.lang.Integer</code>, that will be created to contain the
+      size of the underlying collection being counted.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the JSP bean (optionally constrained to the scope
+      specified by the <code>scope</code> attribute) that contains the
+      collection to be counted (if <code>property</code> is not specified),
+      or whose property getter is called to return the collection to be
+      counted (if <code>property</code> is specified.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the property, of the bean specified by the
+      <code>name</code> attribute, whose getter method will return the
+      collection to be counted.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The bean scope within which to search for the JSP bean specified
+      by the <code>name</code> attribute.  If not specified, the available
+      scopes are searched in ascending sequence.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>struts</name>
+        <tag-class>org.apache.struts.taglib.bean.StrutsTag</tag-class>
+        <tei-class>org.apache.struts.taglib.bean.StrutsTei</tei-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Expose a named Struts internal configuration object as a bean.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified Struts internal configuration
+    object, and define it as a scripting variable and as a page scope
+    attribute accessible to the remainder of the current page.  You must
+    specify exactly one of the <code>formBean</code>, <code>forward</code>,
+    and <code>mapping</code> attributes to select the configuration object
+    to be exposed.</p>
+
+    <p>If a problem occurs while retrieving the specified configuration
+    object, a request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>id</name>
+            <required>true</required>
+            <rtexprvalue>false</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the scripting variable (and associated
+      page scope attribute) that will be made available with the value of
+      the specified Struts internal configuration object.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>formBean</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the Struts <code>ActionFormBean</code>
+      definition object to be exposed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>forward</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the global Struts <code>ActionForward</code>
+      definition object to be exposed.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>mapping</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the matching path of the Struts <code>ActionMapping</code>
+      definition object to be exposed.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+    <tag>
+        <name>write</name>
+        <tag-class>org.apache.struts.taglib.bean.WriteTag</tag-class>
+        <body-content>empty</body-content>
+        <description>
+            <![CDATA[
+            <p><strong>
+    Render the value of the specified bean property to the current
+    JspWriter.
+    </strong></p>
+          
+    <p>Retrieve the value of the specified bean property, and render it to the
+    current JspWriter as a String by the ways:</p>
+     <ul>
+     <li>If <code>format</code> attribute exists then value will be formatted on base of format
+     string from <code>format</code> attribute and default system locale.</li>
+     <li>If in resources exists format string for value data type (view <code>format</code>
+     attribute description) then value will be formatted on base of format string
+     from resources. Resources bundle and target locale can be specified with
+     <code>bundle</code> and <code>locale</code> attributes. If nothing specified then
+     default resource bundle and current user locale will be used.</li>
+     <li>If there is a PropertyEditor configured for the property value's class, the
+     <code>getAsText()</code> method will be called.</li>
+     <li>Otherwise, the usual <code>toString()</code> conversions will be applied.</li>
+     </ul>
+    <p>When a format string is provided, numeric values are formatted using the
+    <code>java.text.DecimalFormat</code> class; if the format string came from
+    a resource, the <code>applyLocalisedPattern()</code> method is used, and
+    <code>applyPattern()</code> is used otherwise. Dates are formatted using
+    the <code>SimpleDateFormat</code> class. For details of the specific format
+    patterns, please see the Javadocs for those classes.</p>
+    <p>If a problem occurs while retrieving the specified bean property, a
+    request time exception will be thrown.</p>
+    ]]>
+        </description>
+        <attribute>
+            <name>bundle</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>The name of the application scope bean under which the
+      <code>MessageResources</code> object containing our messages
+      is stored.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>filter</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>boolean</type>
+            <description>
+                <![CDATA[
+      <p>If this attribute is set to <code>true</code>, the rendered property
+      value will be filtered for characters that are sensitive in HTML, and any
+      such characters will be replaced by their entity equivalents.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>format</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the format string to use to convert bean or property value
+      to the <code>String</code>. If nothing specified, then default format
+      string for value data type will be searched in message resources by
+      according key.</p>
+<!-- move to developers guide
+      <table>
+       <tr>
+           <td>Key to search format string</td>
+           <td>Data types</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.int</td>
+           <td>java.lang.Byte, java.lang.Short, java.lang.Integer, java.lang.Long,
+               java.math.BigInteger</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.float</td>
+           <td>java.lang.Float, java.lang.Double, java.math.BigDecimal</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.sql.timestamp</td>
+           <td>java.sql.Timestamp</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.sql.date</td>
+           <td>java.sql.Date</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.sql.time</td>
+           <td>java.sql.Time</td>
+       </tr>
+       <tr>
+           <td>org.apache.struts.taglib.bean.format.date</td>
+           <td>java.util.Date</td>
+       </tr>
+      </table>
+      <p>Default format strings in resources can be written as - <br />
+        <pre>
+                org.apache.struts.taglib.bean.format.int=######
+                org.apache.struts.taglib.bean.format.float=######,####
+                org.apache.struts.taglib.bean.format.sql.timestamp=hh 'o''clock' a, zzzz
+                org.apache.struts.taglib.bean.format.sql.date=EEE, MMM d, ''yy
+                org.apache.struts.taglib.bean.format.sql.time=h:mm a
+                org.apache.struts.taglib.bean.format.date=hh 'o''clock' a, zzzz
+        </pre>
+        <br />values for resource file entries are standart Java format strings for
+        date, time and number values.</p>
+-->
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>formatKey</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the key to search format string in application resources.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>ignore</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <type>boolean</type>
+            <description>
+                <![CDATA[
+      <p>If this attribute is set to <code>true</code>, and the bean specified
+      by the <code>name</code> and <code>scope</code> attributes does not
+      exist, simply return without writing anything.  If this attribute is
+      set to <code>false</code>, a runtime exception to be thrown,
+      consistent with the other tags in this tag library.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>locale</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+        <p>The name of the session scope bean under which our currently
+        selected <code>Locale</code> object is stored.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>name</name>
+            <required>true</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the attribute name of the bean whose property is accessed
+      to retrieve the value specified by <code>property</code> (if
+      specified).  If <code>property</code> is not specified, the value of
+      this bean itself will be rendered.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>property</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the name of the property to be accessed on the bean
+      specified by <code>name</code>.  This value may be a simple, indexed,
+      or nested property reference expression.  If not specified, the bean
+      identified by <code>name</code> will itself be rendered.  If the
+      specified property returns null, no output will be rendered.</p>
+      ]]>
+            </description>
+        </attribute>
+        <attribute>
+            <name>scope</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+      <p>Specifies the variable scope searched to retrieve the bean specified
+      by <code>name</code>.  If not specified, the default rules applied by
+      <code>PageContext.findAttribute()</code> are applied.</p>
+      ]]>
+            </description>
+        </attribute>
+    </tag>
+</taglib>
+
+
+
diff --git a/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config.xml b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config.xml
new file mode 100644
index 0000000..04671d4
--- /dev/null
+++ b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+<!DOCTYPE struts-config PUBLIC
+          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
+          "http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
+
+
+<struts-config>
+    <form-beans>
+    
+    </form-beans>
+    
+    <global-exceptions>
+    
+    </global-exceptions>
+
+    <global-forwards>
+        <forward name="welcome"  path="____ACTION_MAPPING___"/>
+    </global-forwards>
+
+    <action-mappings>
+        <action path="/Welcome" forward="/welcomeStruts.jsp"/>
+    </action-mappings>
+    
+    <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
+
+    <message-resources parameter="_____MESSAGE_RESOURCE____"/>    
+    
+    <!-- ========================= Tiles plugin ===============================-->
+    <!--
+    This plugin initialize Tiles definition factory. This later can takes some
+    parameters explained here after. The plugin first read parameters from
+    web.xml, thenoverload them with parameters defined here. All parameters
+    are optional.
+    The plugin should be declared in each struts-config file.
+    - definitions-config: (optional)
+    Specify configuration file names. There can be several comma
+    separated file names (default: ?? )
+    - moduleAware: (optional - struts1.1)
+    Specify if the Tiles definition factory is module aware. If true
+    (default), there will be one factory for each Struts module.
+    If false, there will be one common factory for all module. In this
+    later case, it is still needed to declare one plugin per module.
+    The factory will be initialized with parameters found in the first
+    initialized plugin (generally the one associated with the default
+    module).
+    true : One factory per module. (default)
+    false : one single shared factory for all modules
+    - definitions-parser-validate: (optional)
+    Specify if xml parser should validate the Tiles configuration file.
+    true : validate. DTD should be specified in file header (default)
+    false : no validation
+
+    Paths found in Tiles definitions are relative to the main context.
+    -->
+    <plug-in className="org.apache.struts.tiles.TilesPlugin" >
+        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />      
+        <set-property property="moduleAware" value="true" />
+    </plug-in>
+    
+    <!-- ========================= Validator plugin ================================= -->
+    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
+        <set-property
+            property="pathnames"
+            value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
+    </plug-in>
+  
+</struts-config>
diff --git a/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_0.dtd b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_0.dtd
new file mode 100644
index 0000000..063c021
--- /dev/null
+++ b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_0.dtd
@@ -0,0 +1,424 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+         http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+
+<!--
+     DTD for the Struts Application Configuration File, Version 1.0
+
+     To support validation of your configuration file, include the following
+     DOCTYPE element at the beginning (after the "xml" declaration):
+
+     <!DOCTYPE struts-config PUBLIC
+       "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
+       "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
+
+     $Id: struts-config_1_0.dtd 481833 2006-12-03 17:32:52Z niallp $
+-->
+
+
+<!-- ========== Defined Types ============================================= -->
+
+
+<!-- A "BeanName" is the identifier of a JavaBean, such as a form bean,
+     and also serves as the name of the corresponding scripting variable
+     and the name of the JSP attribute under which the bean is accessed.
+     Therefore, it must conform to the rules for a Java identifier.
+-->
+<!ENTITY % BeanName "CDATA">
+
+
+<!-- A "Boolean" is the string representation of a boolean (true or false)
+     variable.
+-->
+<!ENTITY % Boolean "(true|false|yes|no)">
+
+
+<!-- A "ClassName" is the fully qualified name of a Java class that is
+     instantiated to provide the functionality of the enclosing element.
+-->
+<!ENTITY % ClassName "CDATA">
+
+
+<!-- An "Integer" is a character string consisting solely of numeric digits,
+     optionally preceeded by a minus sign, that can be converted to a
+     32-bit integer.
+-->
+<!ENTITY % Integer "CDATA">
+
+
+<!-- A "Location" is a relative path, delimited by "/" characters, that
+     defines the location of a resource relative to the location of the
+     Struts configuration file itself.
+-->
+<!ENTITY % Location "#PCDATA">
+
+
+<!-- A "PropName" is the name of a JavaBeans property, and must begin with
+     a lower case letter and contain only characters that are legal in a
+     Java identifier.
+-->
+<!ENTITY % PropName "CDATA">
+
+
+<!-- A "RequestPath" is a context-relative URI path, beginning with a slash,
+     that identifies a mapped resource (such as a JSP page or a servlet)
+     within this web application.
+-->
+<!ENTITY % RequestPath "CDATA">
+
+
+<!-- The name of a JSP bean scope within which such a form bean may be
+     accessed.
+-->
+<!ENTITY % RequestScope "(request|session)">
+
+
+<!-- ========== Top Level Elements ======================================== -->
+
+
+<!-- The "struts-config" element is the root of the configuration file
+     hierarchy, and contains nested elements for all of the other
+     configuration settings.
+-->
+<!ELEMENT struts-config (data-sources?, form-beans?, global-forwards?, action-mappings?)>
+<!ATTLIST struts-config  id             ID              #IMPLIED>
+
+
+<!-- The "data-sources" element describes a set of JDBC 2.0 Standard Extension
+     data source objects which will be configured according to the nested
+     "data-source" elements found inside.
+-->
+
+<!ELEMENT data-sources (data-source*)>
+<!ATTLIST data-sources   id             ID              #IMPLIED>
+
+
+<!-- The "data-source" element describes a JDBC 2.0 Standard Extension data
+     source object (that implements javax.sql.DataSource) which will be
+     configured according to the properties and nested elements found here,
+     and made available as a servlet context attribute (i.e. application
+     scope bean).  The following attributes are required:
+
+     key             Servlet context attribute key under which this data
+                     source will be stored.  Default is the value specified
+                     by string constant Action.DATA_SOURCE_KEY.
+
+     type            Fully qualified Java class name of the implementation
+                     class (must implement javax.sql.DataSource).  Default
+                     value is 'org.apache.struts.util.GenericDataSource'.
+
+     NOTE:  The following attributes are defined by the default data source
+     implementation, and only take effect for that class or subclasses of
+     that class.
+
+     WARNING:  The use of these attributes is deprecated.  You should use
+     nested &lt;set-property&gt; elements to configure *all* properties of
+     your data source implementation.
+
+     autoCommit      The default auto-commit state for newly created
+                     connections.
+
+     description     The description of this data source.
+
+     driverClass     The Java class name of the JDBC driver to be used.
+                     [REQUIRED]
+
+     loginTimeout    The maximum number of seconds to wait for a connection
+                     to be created or returned.  Default is driver dependent.
+
+     maxCount        The maximum number of connections to be created.
+
+     minCount        The minimum number of connections to be created.
+
+     password        The database password to use when connecting. [REQUIRED]
+
+     readOnly        The default read-only state for newly created
+                     connections.
+
+     url             The JDBC URL to use when connecting. [REQUIRED]
+
+     user            The database username to use when connecting. [REQUIRED]
+
+-->
+<!ELEMENT data-source (set-property*)>
+<!ATTLIST data-source    id             ID              #IMPLIED>
+<!ATTLIST data-source    key            %BeanName;      #IMPLIED>
+<!ATTLIST data-source    type           %ClassName;     #IMPLIED>
+<!-- All of the following attributes are deprecated.  Use a nested          -->
+<!-- set-property element to configure data source properties.              -->
+<!ATTLIST data-source    autoCommit     %Boolean;       #IMPLIED>
+<!ATTLIST data-source    description    CDATA           #IMPLIED>
+<!ATTLIST data-source    driverClass    %ClassName;     #IMPLIED>
+<!ATTLIST data-source    loginTimeout   %Integer;       #IMPLIED>
+<!ATTLIST data-source    maxCount       %Integer;       #IMPLIED>
+<!ATTLIST data-source    minCount       %Integer;       #IMPLIED>
+<!ATTLIST data-source    password       CDATA           #IMPLIED>
+<!ATTLIST data-source    readOnly       %Boolean;       #IMPLIED>
+<!ATTLIST data-source    url            CDATA           #IMPLIED>
+<!ATTLIST data-source    user           CDATA           #IMPLIED>
+
+
+<!-- The "form-beans" element is the root of the set of form bean descriptors
+     for this application.  The following attributes are defined:
+
+     type            Fully qualified Java class name of the implementation
+                     class used for ActionFormBean objects.  DEPRECATED.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "formBean" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT form-beans (form-bean*)>
+<!ATTLIST form-beans     id             ID              #IMPLIED>
+<!ATTLIST form-beans     type           %ClassName;     "org.apache.struts.action.ActionFormBean">
+
+
+<!-- The "form-bean" element describes a particular form bean, which is a
+     JavaBean that implements the org.apache.struts.action.ActionForm
+     class.  The following attributes are defined:
+
+     className       Fully qualified Java class name of the ActionFormBean
+                     implementation class to use.  Defaults to the value
+                     configured as the "formBean" initialization parameter
+                     to the Struts controller servlet.
+
+     name            Unique identifier of this bean, used to reference it
+                     in corresponding action mappings.
+
+     type            Fully qualified Java class name of the implementation
+                     class to be used or generated
+-->
+<!ELEMENT form-bean (icon?, display-name?, description?, set-property*)>
+<!ATTLIST form-bean      id             ID              #IMPLIED>
+<!ATTLIST form-bean      className      %ClassName;     #IMPLIED>
+<!ATTLIST form-bean      name           %BeanName;      #REQUIRED>
+<!ATTLIST form-bean      type           %ClassName;     #REQUIRED>
+
+
+<!-- The "global-forwards" element configures the global mappings of logical
+     names (used within the application) to mappable resources (identified
+     by context-relative URI paths).  A global "forward" with a particular name
+     can be locally overridden by defining a "forward" of the same name within
+     an "action" element.  The following attribute are defined:
+
+     type            Fully qualified Java class name of the implementation
+                     class used for ActionForward objects.  DEPRECATED.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "forward" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT global-forwards (forward*)>
+<!ATTLIST global-forwards id            ID              #IMPLIED>
+<!ATTLIST global-forwards type          %ClassName;     "org.apache.struts.action.ActionForward">
+
+
+<!-- The "forward" element describes a mapping of a logical name (used within
+     the application) to a mappable resource identified by a context-relative
+     URI path.  The following attributes are defined:
+
+     className       Fully qualified Java class name of the ActionForward
+                     implementation class to use.  Defaults to the value
+                     configured as the "forward" initialization parameter
+                     to the Struts controller servlet.
+
+     name            Unique identifier of this forward, used to reference it
+                     in application action classes.
+
+     path            The context-relative path of the mapped resource.
+
+     redirect        Set to "true" if sendRedirect() should be used to forward
+                     to this resource, or "false" in order to use
+                     RequestDispatcher.forward() instead.
+-->
+<!ELEMENT forward (icon?, display-name?, description?, set-property*)>
+<!ATTLIST forward        id             ID              #IMPLIED>
+<!ATTLIST forward        className      %ClassName;     #IMPLIED>
+<!ATTLIST forward        name           CDATA           #REQUIRED>
+<!ATTLIST forward        path           %RequestPath;   #REQUIRED>
+<!ATTLIST forward        redirect       %Boolean;       #IMPLIED>
+
+
+<!-- The "action-mappings" element configures the mappings from submitted
+     request paths to the corresponding Action classes that should be
+     used to process these requests.  The following attributes are
+     defined:
+
+     type           Fully qualified Java class name of the ActionMapping
+                    implementation class to be used.  DEPRECATED.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "mapping" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT action-mappings (action*)>
+<!ATTLIST action-mappings id             ID              #IMPLIED>
+<!ATTLIST action-mappings type           %ClassName;     "org.apache.struts.action.ActionMapping">
+
+
+<!-- The "action" element describes a mapping from a request paths to the
+     corresponding Action classes that should be used to process these
+     requests.  The following attributes are defined:
+
+     attribute       Name of the request-scope or session-scope attribute
+                     under which our form bean is accessed, if it is other
+                     than the bean's specified "name".  Optional if
+                     "name" is specified, else not allowed.
+
+     className       Fully qualified Java class name of the ActionMapping
+                     implementation class to use.  Defaults to the value
+                     configured as the "mapping" initialization parameter
+                     to the Struts controller servlet.
+
+     forward         Context-relative path of the servlet or JSP resource that
+                     will process this request, instead of instantiating and
+                     calling the Action class specified by "type".  Exactly one
+                     of "forward", "include", or "type" must be specified.
+
+     include         Context-relative path of the servlet or JSP resource that
+                     will process this request, instead of instantiating and
+                     calling the Action class specified by "type".  Exactly one
+                     of "forward", "include", or "type" must be specified.
+
+     input           Context-relative path of the input form to which control
+                     should be returned if a validation error is encountered.
+                     Required if "name" is specified and the input bean
+                     returns validation errors.  Optional if "name" is
+                     specified and the input bean does not return validation
+                     errors.  Not allowed if "name" is not specified.
+
+     name            Name of the form bean, if any, that is associated
+                     with this action.
+
+     path            The context-relative path of the submitted request,
+                     starting with a "/" character, and without the
+                     filename extension if extension mapping is used.
+
+     parameter       General purpose configuration parameter that can be used
+                     to pass extra information to the Action selected by this
+                     mapping.
+
+     prefix          Prefix used to match request parameter names to form bean
+                     property names, if any.  Optional if "name" is specified,
+                     else not allowed.
+
+     scope           Identifier of the scope ("request" or "session") within
+                     which our form bean is accessed, if any.  Optional if
+                     "name" is specified, else not allowed.
+
+     suffix          Suffix used to match request parameter names to form bean
+                     property names, if any.  Optional if "name" is specified,
+                     else not allowed.
+
+     type            Fully qualified Java class name of the Action class
+                     (implements org.apache.struts.action.Action) to be
+                     used to process requests for this mapping if the "forward"
+                     or "include" attribute is not included.  Exactly one
+                     of "forward", "include", or "type" must be specified.
+
+     unknown         Set to "true" if this action should be configured as the
+                     default for this application, to handle all requests
+                     not handled by another action.  Only one action can be
+                     defined as a default within a single application.
+
+     validate        Set to "true" if the validate() method of the form bean
+                     should be called prior to calling this action, or set to
+                     "false" if you do not want validation performed.
+-->
+<!ELEMENT action (icon?, display-name?, description?, set-property*, forward*)>
+<!ATTLIST action         id             ID              #IMPLIED>
+<!ATTLIST action         attribute      %BeanName;      #IMPLIED>
+<!ATTLIST action         className      %ClassName;     #IMPLIED>
+<!ATTLIST action         forward        %RequestPath;   #IMPLIED>
+<!ATTLIST action         include        %RequestPath;   #IMPLIED>
+<!ATTLIST action         input          %RequestPath;   #IMPLIED>
+<!ATTLIST action         name           %BeanName;      #IMPLIED>
+<!ATTLIST action         parameter      CDATA           #IMPLIED>
+<!ATTLIST action         path           %RequestPath;   #REQUIRED>
+<!ATTLIST action         prefix         CDATA           #IMPLIED>
+<!ATTLIST action         scope          %RequestScope;  #IMPLIED>
+<!ATTLIST action         suffix         CDATA           #IMPLIED>
+<!ATTLIST action         type           %ClassName;     #IMPLIED>
+<!ATTLIST action         unknown        %Boolean;       #IMPLIED>
+<!ATTLIST action         validate       %Boolean;       #IMPLIED>
+
+
+<!-- The "set-property" element specifies the name and value of an additional
+     JavaBeans configuration property whose setter method will be called
+     on the object that represents our surrounding element.  This is especially
+     useful when an extended implementation class (with additional properties)
+     is configured on the <global-forwards> or <action-mappings> elements.
+     The following attributes are defined:
+
+     property        Name of the JavaBeans property whose setter method
+                     will be called.
+
+     value           String representation of the value to which this
+                     property will be set, after suitable type conversion
+-->
+<!ELEMENT set-property EMPTY>
+<!ATTLIST set-property   id             ID              #IMPLIED>
+<!ATTLIST set-property   property       %PropName;      #REQUIRED>
+<!ATTLIST set-property   value          CDATA           #REQUIRED>
+
+
+
+<!-- ========== Subordinate Elements ====================================== -->
+
+
+<!-- The "description" element contains descriptive (paragraph length) text
+     about the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT description (#PCDATA)>
+<!ATTLIST description    id             ID              #IMPLIED>
+
+
+
+<!-- The "display-name" element contains a short (one line) description of
+     the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT display-name (#PCDATA)>
+<!ATTLIST display-name   id             ID              #IMPLIED>
+
+
+<!-- The "icon" element contains a small-icon and large-icon element which
+     specify the location, relative to the Struts configuration file, for small
+     and large images used to represent the surrounding element in GUI tools.
+-->
+<!ELEMENT icon (small-icon?, large-icon?)>
+<!ATTLIST icon           id             ID              #IMPLIED>
+
+
+<!-- The "large-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a large (32x32 pixel)
+     icon image.
+-->
+<!ELEMENT large-icon (%Location;)>
+<!ATTLIST large-icon     id             ID              #IMPLIED>
+
+
+<!-- The "small-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a small (16x16 pixel)
+     icon image.
+-->
+<!ELEMENT small-icon (%Location;)>
+<!ATTLIST small-icon     id             ID              #IMPLIED>
+
diff --git a/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_1.dtd b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_1.dtd
new file mode 100644
index 0000000..0ecb92a
--- /dev/null
+++ b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_1.dtd
@@ -0,0 +1,712 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+         http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<!--
+     DTD for the Struts Application Configuration File, Version 1.1
+
+     To support validation of your configuration file, include the following
+     DOCTYPE element at the beginning (after the "xml" declaration):
+
+     <!DOCTYPE struts-config PUBLIC
+       "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
+       "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
+
+     $Id: struts-config_1_1.dtd 481833 2006-12-03 17:32:52Z niallp $
+-->
+
+
+<!-- ========== Defined Types ============================================= -->
+
+
+<!-- An "AttributeName" is the identifier of a page, request, session, or
+     application scope attribute.
+-->
+<!ENTITY % AttributeName "CDATA">
+
+
+<!-- A "BeanName" is the identifier of a JavaBean, such as a form bean,
+     and also serves as the name of the corresponding scripting variable
+     and the name of the JSP attribute under which the bean is accessed.
+     Therefore, it must conform to the rules for a Java identifier.
+-->
+<!ENTITY % BeanName "CDATA">
+
+
+<!-- A "Boolean" is the string representation of a boolean (true or false)
+     variable.
+-->
+<!ENTITY % Boolean "(true|false|yes|no)">
+
+
+<!-- A "ClassName" is the fully qualified name of a Java class that is
+     instantiated to provide the functionality of the enclosing element.
+-->
+<!ENTITY % ClassName "CDATA">
+
+
+<!-- An "Integer" is a character string consisting solely of numeric digits,
+     optionally preceeded by a minus sign, that can be converted to a
+     32-bit integer.
+-->
+<!ENTITY % Integer "CDATA">
+
+
+<!-- A "Location" is a relative path, delimited by "/" characters, that
+     defines the location of a resource relative to the location of the
+     Struts configuration file itself.
+-->
+<!ENTITY % Location "#PCDATA">
+
+
+<!-- A "PropName" is the name of a JavaBeans property, and must begin with
+     a lower case letter and contain only characters that are legal in a
+     Java identifier.
+-->
+<!ENTITY % PropName "CDATA">
+
+
+<!-- A "RequestPath" is an module-relative URI path, beginning with a
+     slash, that identifies a mapped resource (such as a JSP page or a servlet)
+     within this web application.
+-->
+<!ENTITY % RequestPath "CDATA">
+
+
+<!-- The name of a JSP bean scope within which such a form bean may be
+     accessed.
+-->
+<!ENTITY % RequestScope "(request|session)">
+
+
+<!-- ========== Top Level Elements ======================================== -->
+
+
+<!-- The "struts-config" element is the root of the configuration file
+     hierarchy, and contains nested elements for all of the other
+     configuration settings.
+-->
+<!ELEMENT struts-config (data-sources?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)>
+<!ATTLIST struts-config  id             ID              #IMPLIED>
+
+
+<!-- The "data-sources" element describes a set of DataSource objects [JDBC 2.0
+     Standard Extension]. The individual DataSource objects are configured through
+     nested <data-source> elements.
+-->
+<!ELEMENT data-sources (data-source*)>
+<!ATTLIST data-sources   id             ID              #IMPLIED>
+
+
+<!-- The "data-source" element describes a DataSource object [JDBC 2.0 Standard
+     Extension] that will be instantiated, configured, and made available as a
+     servlet context attribute (or "application-scope bean"). Any object can be
+     specified so long as it implements [javax.sql.DataSource] and can be
+     configured entirely from JavaBean properties. The following attributes
+     are required:
+
+     className       The configuration bean for this DataSource object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.DataSourceConfig"]
+
+     key             Servlet context attribute key under which this data source
+                     will be stored.  Default is the value specified by string
+                     constant defined by Globals.DATA_SOURCE_KEY. The application
+                     module prefix (if any) is appended to the key
+                     (${key}$prefix}).
+                     [org.apache.struts.Globals.DATA_SOURCE_KEY]
+
+                     NOTE: The application module prefix includes the leading
+                     slash, so the default datasource for a module named "foo" is
+                     stored under "org.apache.struts.action.DATA_SOURCE/foo".
+
+     type            Fully qualified Java class name for this data source object.
+                     The class must implement DataSource [javax.sql.DataSource],
+                     and the object must be configurable entirely from JavaBean
+                     properties.
+-->
+<!ELEMENT data-source (set-property*)>
+<!ATTLIST data-source    id             ID              #IMPLIED>
+<!ATTLIST data-source    className      %ClassName;     #IMPLIED>
+<!ATTLIST data-source    key            %AttributeName; #IMPLIED>
+<!ATTLIST data-source    type           %ClassName;     #IMPLIED>
+
+
+<!-- The "form-beans" element describes the set of form bean descriptors for this
+     module. The following attributes are defined:
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionFormBean objects. If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "formBean" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT form-beans (form-bean*)>
+<!ATTLIST form-beans     id             ID              #IMPLIED>
+<!ATTLIST form-beans     type           %ClassName;     #IMPLIED>
+
+
+<!-- The "form-bean" element describes an ActionForm subclass
+     [org.apache.struts.action.ActionForm] that can be referenced by an "action"
+     element.
+
+
+The "form-bean" element describes a particular form bean, which is a
+     JavaBean that implements the org.apache.struts.action.ActionForm
+     class.  The following attributes are defined:
+
+     className       The configuration bean for this form bean object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormBeanConfig"]
+
+     dynamic         If the form bean type is a  DynaActionForm subclass (that you
+                     created), then (and only then) set this attribute to "true".
+                     If the type is set to the default DynaActionForm or any
+                     conventional ActionForm subclass, then this attribute can be
+                     omitted.
+                     [true] if type is "org.apache.struts.action.DynaActionForm"
+                     [false] otherwise  DEPRECATED - THIS IS NOW DETERMINED
+                     DYNAMICALLY BASED ON THE SPECIFIED IMPLEMENTATION CLASS.
+
+     name            The unique identifier for this form bean. Referenced by the
+                     <action> element to specify which form bean to use with its
+                     request.
+
+     type            Fully qualified Java class name of the ActionForm subclass
+                     to use with this form bean.
+-->
+<!ELEMENT form-bean (icon?, display-name?, description?, set-property*, form-property*)>
+<!ATTLIST form-bean      id             ID              #IMPLIED>
+<!ATTLIST form-bean      className      %ClassName;     #IMPLIED>
+<!ATTLIST form-bean      dynamic        %Boolean;       #IMPLIED>
+<!ATTLIST form-bean      name           %BeanName;      #REQUIRED>
+<!ATTLIST form-bean      type           %ClassName;     #REQUIRED>
+
+
+<!-- The "form-property" element describes a JavaBean property that can be used to
+     configure an instance of a DynaActionForm or a subclass thereof. This element
+     is only utilized when the "type" attribute of the enclosing "form-bean" element
+     is [org.apache.struts.action.DynaActionForm] or a subclass of DynaActionForm. If
+     a custom DynaActionForm subclass is used, then the "dynamic" attribute of the
+     enclosing <form-bean> element must be set to "true". Since Struts 1.1.
+
+     className       The configuration bean for this form property object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormPropertyConfig"]
+
+     initial         String representation of the initial value for this property.
+                     If not specified, primitives will be initialized to zero and
+                     objects initialized to the zero-argument instantiation of that
+                     object class.  For example, Strings will be initialized to ""
+
+
+     name            The name of the JavaBean property described by this element.
+
+     size            The number of array elements to create if the value of the
+                     "type" attribute specifies an array, but there is no value
+                     specified for the "initial" attribute.
+
+     type            Fully qualified Java class name of the field underlying this
+                     property, optionally followed by "[]" to indicate that the
+                     field is indexed.
+-->
+<!ELEMENT form-property  (set-property*)>
+<!ATTLIST form-property  className      %ClassName;     #IMPLIED>
+<!ATTLIST form-property  initial        CDATA           #IMPLIED>
+<!ATTLIST form-property  name           %PropName;      #REQUIRED>
+<!ATTLIST form-property  size           %Integer;       #IMPLIED>
+<!ATTLIST form-property  type           %ClassName;     #REQUIRED>
+
+
+<!-- The "global-exceptions" element describes a set of exceptions that might be
+     thrown by an Action object. The handling of individual exception types is
+     configured through nested exception elements. An <action> element may
+     override a global exception handler by registering a local exception handler
+     for the same exception type. Since Struts 1.1.
+-->
+<!ELEMENT global-exceptions (exception*)>
+<!ATTLIST global-exceptions id          ID              #IMPLIED>
+
+
+<!-- The "exception" element registers an ExceptionHandler for an exception type.
+     The following attributes are defined:
+
+    bundle           Servlet context attribute for the message resources bundle
+                     associated with this handler. The default attribute is the
+                     value specified by the string constant declared at
+                     Globals.MESSAGES_KEY.
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+    className        The configuration bean for this ExceptionHandler object.
+                     If specified, className must be a subclass of the default
+                     configuration bean
+                     ["org.apache.struts.config.ExceptionConfig"]
+
+    handler          Fully qualified Java class name for this exception handler.
+                     ["org.apache.struts.action.ExceptionHandler"]
+
+    key              The key to use with this handler's message resource bundle
+                     that will retrieve the error message template for this
+                     exception.
+
+    path             The module-relative URI to the resource that will complete
+                     the request/response if this exception occurs.
+
+    scope            The context ("request" or "session") that is used to access
+                     the ActionError object [org.apache.struts.action.ActionError]
+                     for this exception.
+
+    type             Fully qualified Java class name of the exception type to
+                     register with this handler.
+-->
+<!ELEMENT exception (icon?, display-name?, description?, set-property*)>
+<!ATTLIST exception      id             ID              #IMPLIED>
+<!ATTLIST exception      bundle         %AttributeName; #IMPLIED>
+<!ATTLIST exception      className      %ClassName;     #IMPLIED>
+<!ATTLIST exception      handler        %ClassName;     #IMPLIED>
+<!ATTLIST exception      key            CDATA           #REQUIRED>
+<!ATTLIST exception      path           %RequestPath;   #IMPLIED>
+<!ATTLIST exception      scope          CDATA           #IMPLIED>
+<!ATTLIST exception      type           %ClassName;     #REQUIRED>
+
+
+<!-- The "global-forwards" element describes a set of ActionForward objects
+     [org.apache.struts.action.ActionForward] that are available to all Action
+     objects as a return value. The individual ActionForwards are configured
+     through nested <forward> elements. An <action> element may override a global
+     forward by defining a local <forward> of the same name.
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionForward objects.  If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "forward" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT global-forwards (forward*)>
+<!ATTLIST global-forwards id            ID              #IMPLIED>
+<!ATTLIST global-forwards type          %ClassName;     #IMPLIED>
+
+
+<!-- The "forward" element describes an ActionForward that is to be made
+     available to an Action as a return value. An ActionForward is referenced by
+     a logical name and encapsulates a URI. A "forward" element may be used to
+     describe both global and local ActionForwards. Global forwards are available
+     to all the Action objects in the module. Local forwards can be
+     nested within an <action> element and only available to an Action object
+     when it is invoked through that ActionMapping.
+
+     className       Fully qualified Java class name of ActionForward
+                     subclass to use for this object.
+                     ["org.apache.struts.action.ActionForward"]
+
+    contextRelative  Set this to "true" if, in a modular application, the path
+                     attribute starts with a slash "/" and should be considered
+                     relative to the entire web application rather than the module.
+                     Since Struts 1.1.
+                     [false]
+
+     name            The unique identifier for this forward. Referenced by the
+                     Action object at runtime to select - by its logical name -
+                     the resource that should complete the request/response.
+
+     path            The module-relative or context-relative path to the resources
+                     that is encapsulated by the logical name of this ActionForward.
+                     If the path is to be considered context-relative when used in
+                     a modular application, then the contextRelative attribute
+                     should be set to "true". This value should begin with a slash
+                     ("/") character.
+
+     redirect        Set to "true" if a redirect instruction should be issued to
+                     the user-agent so that a new request is issued for this
+                     forward's resource. If true,  RequestDispatcher.Redirect is
+                     called. If "false", RequestDispatcher.forward is called instead.
+                     [false]
+-->
+<!ELEMENT forward (icon?, display-name?, description?, set-property*)>
+<!ATTLIST forward        id             ID              #IMPLIED>
+<!ATTLIST forward        className      %ClassName;     #IMPLIED>
+<!ATTLIST forward        contextRelative %Boolean;      #IMPLIED>
+<!ATTLIST forward        name           CDATA           #REQUIRED>
+<!ATTLIST forward        path           %RequestPath;   #REQUIRED>
+<!ATTLIST forward        redirect       %Boolean;       #IMPLIED>
+
+
+<!-- The "action-mappings" element describes a set of ActionMapping objects
+     [org.apache.struts.action.ActionMapping] that are available to process
+     requests matching the url-pattern our ActionServlet registered with the
+     container. The individual ActionMappings are configured through nested
+     <action> elements. The following attributes are defined:
+
+     type           Fully qualified Java class to use when instantiating
+                    ActionMapping objects. If specified, the object must be a
+                    subclass of the default class type.
+
+                    WARNING:  For Struts 1.0, this value is ignored.  You
+                    can set the default implementation class name with the
+                    "mapping" initialization parameter to the Struts
+                    controller servlet.
+-->
+<!ELEMENT action-mappings (action*)>
+<!ATTLIST action-mappings id             ID              #IMPLIED>
+<!ATTLIST action-mappings type           %ClassName;     #IMPLIED>
+
+
+<!-- The "action" element describes an ActionMapping object that is to be used
+     to process a request for a specific module-relative URI. The following
+     attributes are defined:
+
+     attribute       Name of the request-scope or session-scope attribute that
+                     is used to access our ActionForm bean, if it is other than
+                     the bean's specified "name". Optional if "name" is specified,
+                     else not valid.
+
+     className       The fully qualified Java class name of the ActionMapping
+                     subclass to use for this action mapping object. Defaults to
+                     the type specified by the enclosing <action-mappings>
+                     element or to "org.apache.struts.action.ActionMapping" if
+                     not specified.
+                     ["org.apache.struts.action.ActionMapping"]
+
+     forward         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     include         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     input           Module-relative path of the action or other resource to
+                     which control should be returned if a validation error is
+                     encountered. Valid only when "name" is specified. Required
+                     if "name" is specified and the input bean returns
+                     validation errors. Optional if "name" is specified and the
+                     input bean does not return validation errors.
+
+     name            Name of the form bean, if any, that is associated with this
+                     action mapping.
+
+     path            The module-relative path of the submitted request, starting
+                     with a "/" character, and without the filename extension if
+                     extension mapping is used.
+
+                     NOTE:  Do *not* include a period in your path name,
+                     because it will look like a filename extension and
+                     cause your Action to not be located.
+
+     parameter       General-purpose configuration parameter that can be used to
+                     pass extra information to the Action object selected by
+                     this action mapping.
+
+     prefix          Prefix used to match request parameter names to ActionForm
+                     property names, if any. Optional if "name" is specified,
+                     else not allowed.
+
+     roles           Comma-delimited list of security role names that are allowed
+                     access to this ActionMapping object. Since Struts 1.1.
+
+     scope           The context ("request" or "session") that is used to
+                     access our ActionForm bean, if any.  Optional if "name" is
+                     specified, else not valid.
+
+     suffix          Suffix used to match request parameter names to ActionForm
+                     bean property names, if any. Optional if "name" is
+                     specified, else not valid.
+
+     type            Fully qualified Java class name of the Action subclass
+                     [org.apache.struts.action.Action] that will process requests
+                     for this action mapping. Not valid if either the "forward"
+                     or "include" attribute is specified.  Exactly one of
+                     "forward", "include", or "type" must be specified.
+
+     unknown         Set to "true" if this object should be configured as the
+                     default action mapping for this module. If a request does not
+                     match another object, it will be passed to the ActionMapping
+                     object with unknown set to "true". Only one ActionMapping
+                     can be marked as "unknown" within a module.
+                     [false]
+
+     validate        Set to "true" if the validate method of the ActionForm bean
+                     should be called prior to calling the Action object for this
+                     action mapping, or set to "false" if you do not want the
+                     validate method called.
+                     [true]
+-->
+<!ELEMENT action (icon?, display-name?, description?, set-property*, exception*, forward*)>
+<!ATTLIST action         id             ID              #IMPLIED>
+<!ATTLIST action         attribute      %BeanName;      #IMPLIED>
+<!ATTLIST action         className      %ClassName;     #IMPLIED>
+<!ATTLIST action         forward        %RequestPath;   #IMPLIED>
+<!ATTLIST action         include        %RequestPath;   #IMPLIED>
+<!ATTLIST action         input          %RequestPath;   #IMPLIED>
+<!ATTLIST action         name           %BeanName;      #IMPLIED>
+<!ATTLIST action         parameter      CDATA           #IMPLIED>
+<!ATTLIST action         path           %RequestPath;   #REQUIRED>
+<!ATTLIST action         prefix         CDATA           #IMPLIED>
+<!ATTLIST action         roles          CDATA           #IMPLIED>
+<!ATTLIST action         scope          %RequestScope;  #IMPLIED>
+<!ATTLIST action         suffix         CDATA           #IMPLIED>
+<!ATTLIST action         type           %ClassName;     #IMPLIED>
+<!ATTLIST action         unknown        %Boolean;       #IMPLIED>
+<!ATTLIST action         validate       %Boolean;       #IMPLIED>
+
+
+<!-- The "controller" element describes the ControllerConfig bean
+     [org.apache.struts.config.ControllerConfig] that encapsulates
+     a module's runtime configuration. The following
+     attributes are defined:
+
+     bufferSize      The size of the input buffer used when processing
+                     file uploads.
+                     [4096]
+
+     className       Fully qualified Java class name of the
+                     ControllerConfig subclass for this controller object.
+                     If specified, the object must be a subclass of the
+                     default class.
+                     ["org.apache.struts.config.ControllerConfig"]
+
+     contentType     Default content type (and optional character encoding) to
+                     be set on each response. May be overridden by the Action,
+                     JSP, or other resource to which the request is forwarded.
+                     ["text/html"]
+
+     debug           Debugging detail level for this module. [0]
+                     DEPRECATED - configure the logging detail level
+                     in your underlying logging implementation.
+
+     forwardPattern  Replacement pattern defining how the "path" attribute of a
+                     <forward> element is mapped to a context-relative URL when
+                     it starts with a slash (and when the contextRelative
+                     property is false). This value may consist of any
+                     combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the "path" attribute of the  selected
+                     "forward" element
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                     Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is "$M$P",
+                     which is consistent with the previous behavior of
+                     forwards.  Since Struts 1.1.  ["$M$P"]
+
+     inputForward    Set to "true" if you want the "input" attribute of
+                     <action> elements to be the name of a local or global
+                     ActionForward, which will then be used to calculate the
+                     ultimate URL. Set to "false" (the default) to treat the
+                     "input" parameter of <action> elements as a
+                     module-relative path to the resource
+                     to be used as the input form. Since Struts 1.1.
+                     [false]
+
+     locale          Set to "true" if you want a Locale object stored in the
+                     user's session if not already present.
+                     [true]
+
+     maxFileSize     The maximum size (in bytes) of a file to be accepted as a
+                     file upload.  Can be expressed as a number followed by a
+                     "K", "M", or "G", which are interpreted to mean kilobytes,
+                     megabytes, or gigabytes, respectively.
+                     ["250M"]
+
+     memFileSize     The maximum size (in bytes) of a file whose contents will
+                     be retained in memory after uploading. Files larger than
+                     this threshold will be written to some alternative storage
+                     medium, typically a hard disk. Can be expressed as a number
+                     followed by a "K", "M", or "G", which are interpreted to
+                     mean kilobytes, megabytes, or gigabytes, respectively.
+                     ["256K"]
+
+     multipartClass  The fully qualified Java class name of the multipart
+                     request handler class to be used with this module.
+                     ["org.apache.struts.upload.CommonsMultipartRequestHandler"]
+
+     nocache         Set to "true" if you want the controller to add HTTP
+                     headers for defeating caching to every response from
+                     this module.  [false]
+
+     pagePattern     Replacement pattern defining how the "page" attribute of
+                     custom tags using it is mapped to a context-relative URL
+                     of the corresponding resource.  This value may consist of
+                     any combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the value of the "page" attribute
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                              Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is
+                     "$M$P", which is consistent with previous hard coded
+                     behavior of URL evaluation for "page" attributes.
+                     ["$M$P"]
+
+     processorClass  The fully qualified Java class name of the
+                     RequestProcessor subclass to be used with this module.
+                     ["org.apache.struts.action.RequestProcessor"]
+
+     tempDir         Temporary working directory to use when processing
+                     file uploads.
+                     [{Directory provided by servlet container}]
+-->
+<!ELEMENT controller     (set-property*)>
+<!ATTLIST controller     id             ID              #IMPLIED>
+<!ATTLIST controller     bufferSize     %Integer;       #IMPLIED>
+<!ATTLIST controller     className      %ClassName;     #IMPLIED>
+<!ATTLIST controller     contentType    CDATA           #IMPLIED>
+<!ATTLIST controller     debug          %Integer;       #IMPLIED>
+<!ATTLIST controller     forwardPattern CDATA           #IMPLIED>
+<!ATTLIST controller     inputForward   %Boolean;       #IMPLIED>
+<!ATTLIST controller     locale         %Boolean;       #IMPLIED>
+<!ATTLIST controller     maxFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     memFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     multipartClass %ClassName;     #IMPLIED>
+<!ATTLIST controller     nocache        %Boolean;       #IMPLIED>
+<!ATTLIST controller     pagePattern    CDATA           #IMPLIED>
+<!ATTLIST controller     processorClass %ClassName;     #IMPLIED>
+<!ATTLIST controller     tempDir        CDATA           #IMPLIED>
+
+
+<!-- The "message-resources" element describes a MessageResources object with
+     message templates for this module. The following attributes are defined:
+
+     className       The configuration bean for this message resources object.
+                     If specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.MessageResourcesConfig"]
+
+     factory         Fully qualified Java class name of the
+                     MessageResourcesFactory subclass to use for this message
+                     resources object.
+                     ["org.apache.struts.util.PropertyMessageResourcesFactory"]
+
+     key             Servlet context attribute under which this message
+                     resources bundle will be stored. The default attribute is
+                     the value specified by the string constant at
+                     [Globals.MESSAGES_KEY]. The module prefix (if
+                     any) is appended to the key (${key}${prefix}).
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+                     NOTE: The module  prefix includes the leading
+                     slash, so the default message resource bundle for a module
+                     named "foo" is stored under
+                     "org.apache.struts.action.MESSAGE/foo".
+
+     null            Set to "true" if you want our message resources to return a
+                     null string for unknown message keys, or "false" to return a
+                     message with the bad key value.
+
+     parameter       Configuration parameter to be passed to the createResources
+                     method of our factory object.
+-->
+<!ELEMENT message-resources (set-property*)>
+<!ATTLIST message-resources id          ID              #IMPLIED>
+<!ATTLIST message-resources className   %ClassName;     #IMPLIED>
+<!ATTLIST message-resources factory     %ClassName;     #IMPLIED>
+<!ATTLIST message-resources key         %AttributeName; #IMPLIED>
+<!ATTLIST message-resources null        %Boolean;       #IMPLIED>
+<!ATTLIST message-resources parameter   CDATA           #REQUIRED>
+
+
+<!-- The "plug-in" element specifies the fully qualified class name of a
+     general-purpose application plug-in module that receives notification of
+     application startup and shutdown events. An instance of the specified class
+     is created for each element, and can be configured with nested <set-property>
+     elements. The following attributes are supported:
+
+     className       Fully qualified Java class name of the plug-in class; must
+                     implement [org.apache.struts.action.PlugIn].
+-->
+<!ELEMENT plug-in           (set-property*)>
+<!ATTLIST plug-in           id          ID              #IMPLIED>
+<!ATTLIST plug-in           className   %ClassName;     #REQUIRED>
+
+
+<!-- ========== Subordinate Elements ====================================== -->
+
+
+<!-- The "description" element contains descriptive (paragraph length) text
+     about the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT description    (#PCDATA)>
+<!ATTLIST description    id             ID              #IMPLIED>
+
+
+<!-- The "display-name" element contains a short (one line) description of
+     the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT display-name (#PCDATA)>
+<!ATTLIST display-name   id             ID              #IMPLIED>
+
+
+<!-- The "icon" element contains a small-icon and large-icon element which
+     specify the location, relative to the Struts configuration file, for small
+     and large images used to represent the surrounding element in GUI tools.
+-->
+<!ELEMENT icon           (small-icon?, large-icon?)>
+<!ATTLIST icon           id             ID              #IMPLIED>
+
+
+<!-- The "large-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a large (32x32 pixel)
+     icon image.
+-->
+<!ELEMENT large-icon     (%Location;)>
+<!ATTLIST large-icon     id             ID              #IMPLIED>
+
+
+<!-- The "set-property" element specifies the method name and initial value of
+     an additional JavaBean configuration property. When the object representing
+     the surrounding element is instantiated, the accessor for the indicated
+     property is called and passed the indicated value. The "set-property"
+     element is especially useful when a custom subclass is used with
+     <data-source>, <forward>, <action>, or <plug-in> elements. The subclass
+     can be passed whatever other properties may be required to configure the
+     object without changing how the struts-config is parsed.
+
+     property        Name of the JavaBeans property whose setter method
+                     will be called.
+
+     value           String representation of the value to which this
+                     property will be set, after suitable type conversion
+-->
+<!ELEMENT set-property   EMPTY>
+<!ATTLIST set-property   id             ID              #IMPLIED>
+<!ATTLIST set-property   property       %PropName;      #REQUIRED>
+<!ATTLIST set-property   value          CDATA           #REQUIRED>
+
+
+<!-- The "small-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a small (16x16 pixel)
+     icon image.
+-->
+<!ELEMENT small-icon     (%Location;)>
+<!ATTLIST small-icon     id             ID              #IMPLIED>
+
diff --git a/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_2.dtd b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_2.dtd
new file mode 100644
index 0000000..ec1a3d0
--- /dev/null
+++ b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_2.dtd
@@ -0,0 +1,702 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+         http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!--
+     DTD for the Struts Application Configuration File
+
+     To support validation of your configuration file, include the following
+     DOCTYPE element at the beginning (after the "xml" declaration):
+
+     <!DOCTYPE struts-config PUBLIC
+       "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
+       "http://struts.apache.org/dtds/struts-config_1_2.dtd">
+
+     $Id: struts-config_1_2.dtd 481833 2006-12-03 17:32:52Z niallp $
+-->
+
+
+<!-- ========== Defined Types ============================================= -->
+
+
+<!-- An "AttributeName" is the identifier of a page, request, session, or
+     application scope attribute.
+-->
+<!ENTITY % AttributeName "CDATA">
+
+
+<!-- A "BeanName" is the identifier of a JavaBean, such as a form bean,
+     and also serves as the name of the corresponding scripting variable
+     and the name of the JSP attribute under which the bean is accessed.
+     Therefore, it must conform to the rules for a Java identifier.
+-->
+<!ENTITY % BeanName "CDATA">
+
+
+<!-- A "Boolean" is the string representation of a boolean (true or false)
+     variable.
+-->
+<!ENTITY % Boolean "(true|false|yes|no)">
+
+
+<!-- A "ClassName" is the fully qualified name of a Java class that is
+     instantiated to provide the functionality of the enclosing element.
+-->
+<!ENTITY % ClassName "CDATA">
+
+
+<!-- An "Integer" is a character string consisting solely of numeric digits,
+     optionally preceeded by a minus sign, that can be converted to a
+     32-bit integer.
+-->
+<!ENTITY % Integer "CDATA">
+
+
+<!-- A "Location" is a relative path, delimited by "/" characters, that
+     defines the location of a resource relative to the location of the
+     Struts configuration file itself.
+-->
+<!ENTITY % Location "#PCDATA">
+
+
+<!-- A "PropName" is the name of a JavaBeans property, and must begin with
+     a lower case letter and contain only characters that are legal in a
+     Java identifier.
+-->
+<!ENTITY % PropName "CDATA">
+
+
+<!-- A "RequestPath" is an module-relative URI path, beginning with a
+     slash, that identifies a mapped resource (such as a JSP page or a servlet)
+     within this web application.
+-->
+<!ENTITY % RequestPath "CDATA">
+
+
+<!-- The name of a JSP bean scope within which such a form bean may be
+     accessed.
+-->
+<!ENTITY % RequestScope "(request|session)">
+
+
+<!-- ========== Top Level Elements ======================================== -->
+
+
+<!-- The "struts-config" element is the root of the configuration file
+     hierarchy, and contains nested elements for all of the other
+     configuration settings.
+-->
+<!ELEMENT struts-config (display-name?, description?, data-sources?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)>
+<!ATTLIST struts-config  id             ID              #IMPLIED>
+
+
+<!-- The "data-sources" element describes a set of DataSource objects [JDBC 2.0
+     Standard Extension]. The individual DataSource objects are configured through
+     nested <data-source> elements.
+-->
+<!ELEMENT data-sources (data-source*)>
+<!ATTLIST data-sources   id             ID              #IMPLIED>
+
+
+<!-- The "data-source" element describes a DataSource object [JDBC 2.0 Standard
+     Extension] that will be instantiated, configured, and made available as a
+     servlet context attribute (or "application-scope bean"). Any object can be
+     specified so long as it implements [javax.sql.DataSource] and can be
+     configured entirely from JavaBean properties. The following attributes
+     are required:
+
+     className       The configuration bean for this DataSource object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.DataSourceConfig"]
+
+     key             Servlet context attribute key under which this data source
+                     will be stored.  Default is the value specified by string
+                     constant defined by Globals.DATA_SOURCE_KEY. The application
+                     module prefix (if any) is appended to the key
+                     (${key}$prefix}).
+                     [org.apache.struts.Globals.DATA_SOURCE_KEY]
+
+                     NOTE: The application module prefix includes the leading
+                     slash, so the default datasource for a module named "foo" is
+                     stored under "org.apache.struts.action.DATA_SOURCE/foo".
+
+     type          Fully qualified Java class name for this data source object.
+                     The class must implement DataSource [javax.sql.DataSource],
+                     and the object must be configurable entirely from JavaBean
+                     properties.
+-->
+<!ELEMENT data-source (set-property*)>
+<!ATTLIST data-source    id             ID              #IMPLIED>
+<!ATTLIST data-source    className      %ClassName;     #IMPLIED>
+<!ATTLIST data-source    key            %AttributeName; #IMPLIED>
+<!ATTLIST data-source    type           %ClassName;     #REQUIRED>
+
+
+<!-- The "form-beans" element describes the set of form bean descriptors for this
+     module. The following attributes are defined:
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionFormBean objects. If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "formBean" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT form-beans (form-bean*)>
+<!ATTLIST form-beans     id             ID              #IMPLIED>
+<!ATTLIST form-beans     type           %ClassName;     #IMPLIED>
+
+
+<!-- The "form-bean" element describes an ActionForm subclass
+     [org.apache.struts.action.ActionForm] that can be referenced by an "action"
+     element.
+
+
+The "form-bean" element describes a particular form bean, which is a
+     JavaBean that implements the org.apache.struts.action.ActionForm
+     class.  The following attributes are defined:
+
+     className       The configuration bean for this form bean object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormBeanConfig"]
+
+     name            The unique identifier for this form bean. Referenced by the
+                     <action> element to specify which form bean to use with its
+                     request.
+
+     type            Fully qualified Java class name of the ActionForm subclass
+                     to use with this form bean.
+-->
+<!ELEMENT form-bean (icon?, display-name?, description?, set-property*, form-property*)>
+<!ATTLIST form-bean      id             ID              #IMPLIED>
+<!ATTLIST form-bean      className      %ClassName;     #IMPLIED>
+<!ATTLIST form-bean      dynamic        %Boolean;       #IMPLIED>
+<!ATTLIST form-bean      name           %BeanName;      #REQUIRED>
+<!ATTLIST form-bean      type           %ClassName;     #REQUIRED>
+
+
+<!-- The "form-property" element describes a JavaBean property that can be used to
+     configure an instance of a DynaActionForm or a subclass thereof. This element
+     is only utilized when the "type" attribute of the enclosing "form-bean" element
+     is [org.apache.struts.action.DynaActionForm] or a subclass of DynaActionForm. If
+     a custom DynaActionForm subclass is used, then the "dynamic" attribute of the
+     enclosing <form-bean> element must be set to "true". Since Struts 1.1.
+
+     className       The configuration bean for this form property object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormPropertyConfig"]
+
+     initial         String representation of the initial value for this property.
+                     If not specified, primitives will be initialized to zero and
+                     objects initialized to the zero-argument instantiation of that
+                     object class.  For example, Strings will be initialized to ""
+
+
+     name            The name of the JavaBean property described by this element.
+
+     size            The number of array elements to create if the value of the
+                     "type" attribute specifies an array, but there is no value
+                     specified for the "initial" attribute.
+
+     type            Fully qualified Java class name of the field underlying this
+                     property, optionally followed by "[]" to indicate that the
+                     field is indexed.
+-->
+<!ELEMENT form-property  (set-property*)>
+<!ATTLIST form-property  className      %ClassName;     #IMPLIED>
+<!ATTLIST form-property  initial        CDATA           #IMPLIED>
+<!ATTLIST form-property  name           %PropName;      #REQUIRED>
+<!ATTLIST form-property  size           %Integer;       #IMPLIED>
+<!ATTLIST form-property  type           %ClassName;     #REQUIRED>
+
+
+<!-- The "global-exceptions" element describes a set of exceptions that might be
+     thrown by an Action object. The handling of individual exception types is
+     configured through nested exception elements. An <action> element may
+     override a global exception handler by registering a local exception handler
+     for the same exception type. Since Struts 1.1.
+-->
+<!ELEMENT global-exceptions (exception*)>
+<!ATTLIST global-exceptions id          ID              #IMPLIED>
+
+
+<!-- The "exception" element registers an ExceptionHandler for an exception type.
+     The following attributes are defined:
+
+    bundle           Servlet context attribute for the message resources bundle
+                     associated with this handler. The default attribute is the
+                     value specified by the string constant declared at
+                     Globals.MESSAGES_KEY.
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+    className        The configuration bean for this ExceptionHandler object.
+                     If specified, className must be a subclass of the default
+                     configuration bean
+                     ["org.apache.struts.config.ExceptionConfig"]
+
+    handler          Fully qualified Java class name for this exception handler.
+                     ["org.apache.struts.action.ExceptionHandler"]
+
+    key              The key to use with this handler's message resource bundle
+                     that will retrieve the error message template for this
+                     exception.
+
+    path             The module-relative URI to the resource that will complete
+                     the request/response if this exception occurs.
+
+    scope            The context ("request" or "session") that is used to access
+                     the ActionError object [org.apache.struts.action.ActionError]
+                     for this exception.
+
+    type             Fully qualified Java class name of the exception type to
+                     register with this handler.
+-->
+<!ELEMENT exception (icon?, display-name?, description?, set-property*)>
+<!ATTLIST exception      id             ID              #IMPLIED>
+<!ATTLIST exception      bundle         %AttributeName; #IMPLIED>
+<!ATTLIST exception      className      %ClassName;     #IMPLIED>
+<!ATTLIST exception      handler        %ClassName;     #IMPLIED>
+<!ATTLIST exception      key            CDATA           #REQUIRED>
+<!ATTLIST exception      path           %RequestPath;   #IMPLIED>
+<!ATTLIST exception      scope          CDATA           #IMPLIED>
+<!ATTLIST exception      type           %ClassName;     #REQUIRED>
+
+
+<!-- The "global-forwards" element describes a set of ActionForward objects
+     [org.apache.struts.action.ActionForward] that are available to all Action
+     objects as a return value. The individual ActionForwards are configured
+     through nested <forward> elements. An <action> element may override a global
+     forward by defining a local <forward> of the same name.
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionForward objects.  If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "forward" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT global-forwards (forward*)>
+<!ATTLIST global-forwards id            ID              #IMPLIED>
+<!ATTLIST global-forwards type          %ClassName;     #IMPLIED>
+
+
+<!-- The "forward" element describes an ActionForward that is to be made
+     available to an Action as a return value. An ActionForward is referenced by
+     a logical name and encapsulates a URI. A "forward" element may be used to
+     describe both global and local ActionForwards. Global forwards are available
+     to all the Action objects in the module. Local forwards can be
+     nested within an <action> element and only available to an Action object
+     when it is invoked through that ActionMapping.
+
+     className       Fully qualified Java class name of ActionForward
+                     subclass to use for this object.
+                     ["org.apache.struts.action.ActionForward"]
+
+    contextRelative  Set this to "true" if, in a modular application, the path
+                     attribute starts with a slash "/" and should be considered
+                     relative to the entire web application rather than the module.
+                     Since Struts 1.1.
+                     DEPRECATED.
+                     [false]
+
+     module          The module prefix to use with this path. This value should
+                     begin with a slash ("/").
+
+     name            The unique identifier for this forward. Referenced by the
+                     Action object at runtime to select - by its logical name -
+                     the resource that should complete the request/response.
+
+     path            The module-relative or context-relative path to the resources
+                     that is encapsulated by the logical name of this ActionForward.
+                     If the path is to be considered context-relative when used in
+                     a modular application, then the contextRelative attribute
+                     should be set to "true". This value should begin with a slash
+                     ("/") character.
+
+     redirect        Set to "true" if a redirect instruction should be issued to
+                     the user-agent so that a new request is issued for this
+                     forward's resource. If true,  RequestDispatcher.Redirect is
+                     called. If "false", RequestDispatcher.forward is called instead.
+                     [false]
+-->
+<!ELEMENT forward (icon?, display-name?, description?, set-property*)>
+<!ATTLIST forward        id             ID              #IMPLIED>
+<!ATTLIST forward        className      %ClassName;     #IMPLIED>
+<!ATTLIST forward        contextRelative %Boolean;      #IMPLIED>
+<!ATTLIST forward        module         %RequestPath;   #IMPLIED>
+<!ATTLIST forward        name           CDATA           #REQUIRED>
+<!ATTLIST forward        path           %RequestPath;   #REQUIRED>
+<!ATTLIST forward        redirect       %Boolean;       #IMPLIED>
+
+
+<!-- The "action-mappings" element describes a set of ActionMapping objects
+     [org.apache.struts.action.ActionMapping] that are available to process
+     requests matching the url-pattern our ActionServlet registered with the
+     container. The individual ActionMappings are configured through nested
+     <action> elements. The following attributes are defined:
+
+     type           Fully qualified Java class to use when instantiating
+                    ActionMapping objects. If specified, the object must be a
+                    subclass of the default class type.
+
+                    WARNING:  For Struts 1.0, this value is ignored.  You
+                    can set the default implementation class name with the
+                    "mapping" initialization parameter to the Struts
+                    controller servlet.
+-->
+<!ELEMENT action-mappings (action*)>
+<!ATTLIST action-mappings id             ID              #IMPLIED>
+<!ATTLIST action-mappings type           %ClassName;     #IMPLIED>
+
+
+<!-- The "action" element describes an ActionMapping object that is to be used
+     to process a request for a specific module-relative URI. The following
+     attributes are defined:
+
+     attribute       Name of the request-scope or session-scope attribute that
+                     is used to access our ActionForm bean, if it is other than
+                     the bean's specified "name". Optional if "name" is specified,
+                     else not valid.
+
+     className       The fully qualified Java class name of the ActionMapping
+                     subclass to use for this action mapping object. Defaults to
+                     the type specified by the enclosing <action-mappings>
+                     element or to "org.apache.struts.action.ActionMapping" if
+                     not specified.
+                     ["org.apache.struts.action.ActionMapping"]
+
+     forward         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     include         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     input           Module-relative path of the action or other resource to
+                     which control should be returned if a validation error is
+                     encountered. Valid only when "name" is specified. Required
+                     if "name" is specified and the input bean returns
+                     validation errors. Optional if "name" is specified and the
+                     input bean does not return validation errors.
+
+     name            Name of the form bean, if any, that is associated with this
+                     action mapping.
+
+     path            The module-relative path of the submitted request, starting
+                     with a "/" character, and without the filename extension if
+                     extension mapping is used.
+
+                     NOTE:  Do *not* include a period in your path name,
+                     because it will look like a filename extension and
+                     cause your Action to not be located.
+
+     parameter       General-purpose configuration parameter that can be used to
+                     pass extra information to the Action object selected by
+                     this action mapping.
+
+     prefix          Prefix used to match request parameter names to ActionForm
+                     property names, if any. Optional if "name" is specified,
+                     else not allowed.
+
+     roles           Comma-delimited list of security role names that are allowed
+                     access to this ActionMapping object. Since Struts 1.1.
+
+     scope           The context ("request" or "session") that is used to
+                     access our ActionForm bean, if any.  Optional if "name" is
+                     specified, else not valid. [session]
+
+     suffix          Suffix used to match request parameter names to ActionForm
+                     bean property names, if any. Optional if "name" is
+                     specified, else not valid.
+
+     type            Fully qualified Java class name of the Action subclass
+                     [org.apache.struts.action.Action] that will process requests
+                     for this action mapping. Not valid if either the "forward"
+                     or "include" attribute is specified.  Exactly one of
+                     "forward", "include", or "type" must be specified.
+
+     unknown         Set to "true" if this object should be configured as the
+                     default action mapping for this module. If a request does not
+                     match another object, it will be passed to the ActionMapping
+                     object with unknown set to "true". Only one ActionMapping
+                     can be marked as "unknown" within a module.
+                     [false]
+
+     validate        Set to "true" if the validate method of the ActionForm bean
+                     should be called prior to calling the Action object for this
+                     action mapping, or set to "false" if you do not want the
+                     validate method called.
+                     [true]
+-->
+<!ELEMENT action (icon?, display-name?, description?, set-property*, exception*, forward*)>
+<!ATTLIST action         id             ID              #IMPLIED>
+<!ATTLIST action         attribute      %BeanName;      #IMPLIED>
+<!ATTLIST action         className      %ClassName;     #IMPLIED>
+<!ATTLIST action         forward        %RequestPath;   #IMPLIED>
+<!ATTLIST action         include        %RequestPath;   #IMPLIED>
+<!ATTLIST action         input          %RequestPath;   #IMPLIED>
+<!ATTLIST action         name           %BeanName;      #IMPLIED>
+<!ATTLIST action         parameter      CDATA           #IMPLIED>
+<!ATTLIST action         path           %RequestPath;   #REQUIRED>
+<!ATTLIST action         prefix         CDATA           #IMPLIED>
+<!ATTLIST action         roles          CDATA           #IMPLIED>
+<!ATTLIST action         scope          %RequestScope;  #IMPLIED>
+<!ATTLIST action         suffix         CDATA           #IMPLIED>
+<!ATTLIST action         type           %ClassName;     #IMPLIED>
+<!ATTLIST action         unknown        %Boolean;       #IMPLIED>
+<!ATTLIST action         validate       %Boolean;       #IMPLIED>
+
+
+<!-- The "controller" element describes the ControllerConfig bean
+     [org.apache.struts.config.ControllerConfig] that encapsulates
+     a module's runtime configuration. The following
+     attributes are defined:
+
+     bufferSize      The size of the input buffer used when processing
+                     file uploads.
+                     [4096]
+
+     className       Fully qualified Java class name of the
+                     ControllerConfig subclass for this controller object.
+                     If specified, the object must be a subclass of the
+                     default class.
+                     ["org.apache.struts.config.ControllerConfig"]
+
+     contentType     Default content type (and optional character encoding) to
+                     be set on each response. May be overridden by the Action,
+                     JSP, or other resource to which the request is forwarded.
+                     ["text/html"]
+
+     forwardPattern  Replacement pattern defining how the "path" attribute of a
+                     <forward> element is mapped to a context-relative URL when
+                     it starts with a slash (and when the contextRelative
+                     property is false). This value may consist of any
+                     combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the "path" attribute of the  selected
+                     "forward" element
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                     Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is "$M$P",
+                     which is consistent with the previous behavior of
+                     forwards.  Since Struts 1.1.  ["$M$P"]
+
+     inputForward    Set to "true" if you want the "input" attribute of
+                     <action> elements to be the name of a local or global
+                     ActionForward, which will then be used to calculate the
+                     ultimate URL. Set to "false" (the default) to treat the
+                     "input" parameter of <action> elements as a
+                     module-relative path to the resource
+                     to be used as the input form. Since Struts 1.1.
+                     [false]
+
+     locale          Set to "true" if you want a Locale object stored in the
+                     user's session if not already present.
+                     [true]
+
+     maxFileSize     The maximum size (in bytes) of a file to be accepted as a
+                     file upload.  Can be expressed as a number followed by a
+                     "K", "M", or "G", which are interpreted to mean kilobytes,
+                     megabytes, or gigabytes, respectively.
+                     ["250M"]
+
+     memFileSize     The maximum size (in bytes) of a file whose contents will
+                     be retained in memory after uploading. Files larger than
+                     this threshold will be written to some alternative storage
+                     medium, typically a hard disk. Can be expressed as a number
+                     followed by a "K", "M", or "G", which are interpreted to
+                     mean kilobytes, megabytes, or gigabytes, respectively.
+                     ["256K"]
+
+     multipartClass  The fully qualified Java class name of the multipart
+                     request handler class to be used with this module.
+                     ["org.apache.struts.upload.CommonsMultipartRequestHandler"]
+
+     nocache         Set to "true" if you want the controller to add HTTP
+                     headers for defeating caching to every response from
+                     this module.  [false]
+
+     pagePattern     Replacement pattern defining how the "page" attribute of
+                     custom tags using it is mapped to a context-relative URL
+                     of the corresponding resource.  This value may consist of
+                     any combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the value of the "page" attribute
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                              Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is
+                     "$M$P", which is consistent with previous hard coded
+                     behavior of URL evaluation for "page" attributes.
+                     ["$M$P"]
+
+     processorClass  The fully qualified Java class name of the
+                     RequestProcessor subclass to be used with this module.
+                     ["org.apache.struts.action.RequestProcessor"]
+
+     tempDir         Temporary working directory to use when processing
+                     file uploads.
+                     [{Directory provided by servlet container}]
+-->
+<!ELEMENT controller     (set-property*)>
+<!ATTLIST controller     id             ID              #IMPLIED>
+<!ATTLIST controller     bufferSize     %Integer;       #IMPLIED>
+<!ATTLIST controller     className      %ClassName;     #IMPLIED>
+<!ATTLIST controller     contentType    CDATA           #IMPLIED>
+<!ATTLIST controller     forwardPattern CDATA           #IMPLIED>
+<!ATTLIST controller     inputForward   %Boolean;       #IMPLIED>
+<!ATTLIST controller     locale         %Boolean;       #IMPLIED>
+<!ATTLIST controller     maxFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     memFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     multipartClass %ClassName;     #IMPLIED>
+<!ATTLIST controller     nocache        %Boolean;       #IMPLIED>
+<!ATTLIST controller     pagePattern    CDATA           #IMPLIED>
+<!ATTLIST controller     processorClass %ClassName;     #IMPLIED>
+<!ATTLIST controller     tempDir        CDATA           #IMPLIED>
+
+
+<!-- The "message-resources" element describes a MessageResources object with
+     message templates for this module. The following attributes are defined:
+
+     className       The configuration bean for this message resources object.
+                     If specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.MessageResourcesConfig"]
+
+     factory         Fully qualified Java class name of the
+                     MessageResourcesFactory subclass to use for this message
+                     resources object.
+                     ["org.apache.struts.util.PropertyMessageResourcesFactory"]
+
+     key             Servlet context attribute under which this message
+                     resources bundle will be stored. The default attribute is
+                     the value specified by the string constant at
+                     [Globals.MESSAGES_KEY]. The module prefix (if
+                     any) is appended to the key (${key}${prefix}).
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+                     NOTE: The module  prefix includes the leading
+                     slash, so the default message resource bundle for a module
+                     named "foo" is stored under
+                     "org.apache.struts.action.MESSAGE/foo".
+
+     null            Set to "true" if you want our message resources to return a
+                     null string for unknown message keys, or "false" to return a
+                     message with the bad key value.
+
+     parameter       Configuration parameter to be passed to the createResources
+                     method of our factory object.
+-->
+<!ELEMENT message-resources (set-property*)>
+<!ATTLIST message-resources id          ID              #IMPLIED>
+<!ATTLIST message-resources className   %ClassName;     #IMPLIED>
+<!ATTLIST message-resources factory     %ClassName;     #IMPLIED>
+<!ATTLIST message-resources key         %AttributeName; #IMPLIED>
+<!ATTLIST message-resources null        %Boolean;       #IMPLIED>
+<!ATTLIST message-resources parameter   CDATA           #REQUIRED>
+
+
+<!-- The "plug-in" element specifies the fully qualified class name of a
+     general-purpose application plug-in module that receives notification of
+     application startup and shutdown events. An instance of the specified class
+     is created for each element, and can be configured with nested <set-property>
+     elements. The following attributes are supported:
+
+     className       Fully qualified Java class name of the plug-in class; must
+                     implement [org.apache.struts.action.PlugIn].
+-->
+<!ELEMENT plug-in           (set-property*)>
+<!ATTLIST plug-in           id          ID              #IMPLIED>
+<!ATTLIST plug-in           className   %ClassName;     #REQUIRED>
+
+
+<!-- ========== Subordinate Elements ====================================== -->
+
+
+<!-- The "description" element contains descriptive (paragraph length) text
+     about the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT description    (#PCDATA)>
+<!ATTLIST description    id             ID              #IMPLIED>
+
+
+<!-- The "display-name" element contains a short (one line) description of
+     the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT display-name (#PCDATA)>
+<!ATTLIST display-name   id             ID              #IMPLIED>
+
+
+<!-- The "icon" element contains a small-icon and large-icon element which
+     specify the location, relative to the Struts configuration file, for small
+     and large images used to represent the surrounding element in GUI tools.
+-->
+<!ELEMENT icon           (small-icon?, large-icon?)>
+<!ATTLIST icon           id             ID              #IMPLIED>
+
+
+<!-- The "large-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a large (32x32 pixel)
+     icon image.
+-->
+<!ELEMENT large-icon     (%Location;)>
+<!ATTLIST large-icon     id             ID              #IMPLIED>
+
+
+<!-- The "set-property" element specifies the method name and initial value of
+     an additional JavaBean configuration property. When the object representing
+     the surrounding element is instantiated, the accessor for the indicated
+     property is called and passed the indicated value. The "set-property"
+     element is especially useful when a custom subclass is used with
+     <data-source>, <forward>, <action>, or <plug-in> elements. The subclass
+     can be passed whatever other properties may be required to configure the
+     object without changing how the struts-config is parsed.
+
+     property        Name of the JavaBeans property whose setter method
+                     will be called.
+
+     value           String representation of the value to which this
+                     property will be set, after suitable type conversion
+-->
+<!ELEMENT set-property   EMPTY>
+<!ATTLIST set-property   id             ID              #IMPLIED>
+<!ATTLIST set-property   property       %PropName;      #REQUIRED>
+<!ATTLIST set-property   value          CDATA           #REQUIRED>
+
+
+<!-- The "small-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a small (16x16 pixel)
+     icon image.
+-->
+<!ELEMENT small-icon     (%Location;)>
+<!ATTLIST small-icon     id             ID              #IMPLIED>
+
diff --git a/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_2.mdd b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_2.mdd
new file mode 100644
index 0000000..a7fd4b3
--- /dev/null
+++ b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_2.mdd
@@ -0,0 +1,247 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+<metaDD>
+	<meta-element>
+		<dtd-name>struts-config</dtd-name>
+		<bean-name>StrutsConfig</bean-name>
+		<meta-property>
+			<bean-name>DisplayName</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>Description</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>DataSources</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>FormBeans</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>GlobalExceptions</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>GlobalForwards</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>ActionMappings</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>Controller</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>MessageResources</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>PlugIn</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>display-name</dtd-name>
+		<bean-name>DisplayName</bean-name>
+		<wrapper-class>String</wrapper-class>
+	</meta-element>
+	<meta-element>
+		<dtd-name>description</dtd-name>
+		<bean-name>Description</bean-name>
+		<wrapper-class>String</wrapper-class>
+	</meta-element>
+	<meta-element>
+		<dtd-name>data-sources</dtd-name>
+		<bean-name>DataSources</bean-name>
+		<meta-property>
+			<bean-name>DataSource</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>form-beans</dtd-name>
+		<bean-name>FormBeans</bean-name>
+		<meta-property>
+			<bean-name>FormBean</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>global-exceptions</dtd-name>
+		<bean-name>GlobalExceptions</bean-name>
+		<meta-property>
+			<bean-name>StrutsException</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>global-forwards</dtd-name>
+		<bean-name>GlobalForwards</bean-name>
+		<meta-property>
+			<bean-name>Forward</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>action-mappings</dtd-name>
+		<bean-name>ActionMappings</bean-name>
+		<meta-property>
+			<bean-name>Action</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>controller</dtd-name>
+		<bean-name>Controller</bean-name>
+		<meta-property>
+			<bean-name>SetProperty</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>message-resources</dtd-name>
+		<bean-name>MessageResources</bean-name>
+		<meta-property>
+			<bean-name>SetProperty</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>plug-in</dtd-name>
+		<bean-name>PlugIn</bean-name>
+		<meta-property>
+			<bean-name>SetProperty</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>set-property</dtd-name>
+		<bean-name>SetProperty</bean-name>
+		<wrapper-class>Boolean</wrapper-class>
+	</meta-element>
+	<meta-element>
+		<dtd-name>EMPTY</dtd-name>
+		<bean-name>Empty</bean-name>
+		<wrapper-class>String</wrapper-class>
+	</meta-element>
+	<meta-element>
+		<dtd-name>action</dtd-name>
+		<bean-name>Action</bean-name>
+		<meta-property>
+			<bean-name>Icon</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>DisplayName</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>Description</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>SetProperty</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>StrutsException</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>Forward</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>icon</dtd-name>
+		<bean-name>Icon</bean-name>
+		<meta-property>
+			<bean-name>SmallIcon</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>LargeIcon</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>exception</dtd-name>
+		<bean-name>StrutsException</bean-name>
+		<meta-property>
+			<bean-name>Icon</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>DisplayName</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>Description</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>SetProperty</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>forward</dtd-name>
+		<bean-name>Forward</bean-name>
+		<meta-property>
+			<bean-name>Icon</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>DisplayName</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>Description</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>SetProperty</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>small-icon</dtd-name>
+		<bean-name>SmallIcon</bean-name>
+		<wrapper-class>String</wrapper-class>
+	</meta-element>
+	<meta-element>
+		<dtd-name>large-icon</dtd-name>
+		<bean-name>LargeIcon</bean-name>
+		<wrapper-class>String</wrapper-class>
+	</meta-element>
+	<meta-element>
+		<dtd-name>#PCDATA</dtd-name>
+		<bean-name>Pcdata</bean-name>
+		<wrapper-class>String</wrapper-class>
+	</meta-element>
+	<meta-element>
+		<dtd-name>form-bean</dtd-name>
+		<bean-name>FormBean</bean-name>
+		<meta-property>
+			<bean-name>Icon</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>DisplayName</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>Description</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>SetProperty</bean-name>
+		</meta-property>
+		<meta-property>
+			<bean-name>FormProperty</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>form-property</dtd-name>
+		<bean-name>FormProperty</bean-name>
+		<meta-property>
+			<bean-name>SetProperty</bean-name>
+		</meta-property>
+	</meta-element>
+	<meta-element>
+		<dtd-name>data-source</dtd-name>
+		<bean-name>DataSource</bean-name>
+		<meta-property>
+			<bean-name>SetProperty</bean-name>
+		</meta-property>
+	</meta-element>
+</metaDD>
diff --git a/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_3-custom.dtd b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_3-custom.dtd
new file mode 100644
index 0000000..85870de
--- /dev/null
+++ b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_3-custom.dtd
@@ -0,0 +1,682 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+         http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<!--
+     DTD for the Struts Application Configuration File
+
+     To support validation of your configuration file, include the following
+     DOCTYPE element at the beginning (after the "xml" declaration):
+
+     <!DOCTYPE struts-config PUBLIC
+       "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
+       "http://struts.apache.org/dtds/struts-config_1_3.dtd">
+
+     $Id: struts-config_1_3.dtd 481833 2006-12-03 17:32:52Z niallp $
+-->
+
+<!--
+
+This file is created by:
+- copy struts-config_1_3.dtd to struts-config_1_3-custom.dtd
+- inline the definitions from the "Defined Types" section:
+  Entity                Replacement
+  %AttributeName;       CDATA
+  %BeanName;            CDATA
+  %Boolean;             (true|false|yes|no)
+  %ClassName;           CDATA
+  %Integer;             CDATA
+  %Location;            #PCDATA
+  %PropName;            CDATA
+  %RequestPath;         CDATA
+  %RequestScope;        (request|session)
+
+- remove the complete contents from that section
+
+-->
+
+<!-- ========== Top Level Elements ======================================== -->
+
+
+<!-- The "struts-config" element is the root of the configuration file
+     hierarchy, and contains nested elements for all of the other
+     configuration settings.
+-->
+<!ELEMENT struts-config (display-name?, description?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)>
+<!ATTLIST struts-config  id             ID              #IMPLIED>
+
+<!-- The "form-beans" element describes the set of form bean descriptors for this
+     module. The following attributes are defined:
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionFormBean objects. If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "formBean" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT form-beans (form-bean*)>
+<!ATTLIST form-beans     id             ID              #IMPLIED>
+<!ATTLIST form-beans     type           CDATA     #IMPLIED>
+
+
+<!-- The "form-bean" element describes an ActionForm subclass
+     [org.apache.struts.action.ActionForm] that can be referenced by an "action"
+     element.
+
+
+The "form-bean" element describes a particular form bean, which is a
+     JavaBean that implements the org.apache.struts.action.ActionForm
+     class.  The following attributes are defined:
+
+     className       The configuration bean for this form bean object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormBeanConfig"]
+
+     extends         The name of the form bean that this bean will
+                     inherit configuration information from.
+
+     name            The unique identifier for this form bean. Referenced by the
+                     <action> element to specify which form bean to use with its
+                     request.
+                     
+     type            Fully qualified Java class name of the ActionForm subclass
+                     to use with this form bean.
+                     
+     enhanced        Reserved for future use.
+-->
+<!ELEMENT form-bean (icon?, display-name?, description?, set-property*, form-property*)>
+<!ATTLIST form-bean      id             ID              #IMPLIED>
+<!ATTLIST form-bean      className      CDATA     #IMPLIED>
+<!ATTLIST form-bean      enhanced       (true|false|yes|no)       #IMPLIED>
+<!ATTLIST form-bean      extends        CDATA      #IMPLIED>
+<!ATTLIST form-bean      name           CDATA      #REQUIRED>
+<!ATTLIST form-bean      type           CDATA     #IMPLIED>
+
+
+<!-- The "form-property" element describes a JavaBean property that can be used to
+     configure an instance of a DynaActionForm or a subclass thereof. This element
+     is only utilized when the "type" attribute of the enclosing "form-bean" element
+     is [org.apache.struts.action.DynaActionForm] or a subclass of DynaActionForm. If
+     a custom DynaActionForm subclass is used, then the "dynamic" attribute of the
+     enclosing <form-bean> element must be set to "true". Since Struts 1.1.
+
+     className       The configuration bean for this form property object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormPropertyConfig"]
+
+     initial         String representation of the initial value for this property.
+                     If not specified, primitives will be initialized to zero and
+                     objects initialized to the zero-argument instantiation of that
+                     object class.  For example, Strings will be initialized to ""
+
+     name            The name of the JavaBean property described by this element.
+
+     reset           The flag that indicates when this property should be reset 
+                     to its "initial" value when the form's "reset()" method is 
+                     called.  If this is set to "true", the property is always 
+                     reset when "reset()" is called.  This can also be set to 
+                     one or more HTTP methods, such as GET or POST. In such a 
+                     case, the property will be reset only when the HTTP method 
+                     used for the request being processed is included in this 
+                     attribute's value(s).  Multiple HTTP methods can be 
+                     specified by separating them with whitespace or commas.
+
+     size            The number of array elements to create if the value of the
+                     "type" attribute specifies an array, but there is no value
+                     specified for the "initial" attribute.
+
+     type            Fully qualified Java class name of the field underlying this
+                     property, optionally followed by "[]" to indicate that the
+                     field is indexed.
+-->
+<!ELEMENT form-property  (set-property*)>
+<!ATTLIST form-property  className      CDATA     #IMPLIED>
+<!ATTLIST form-property  initial        CDATA           #IMPLIED>
+<!ATTLIST form-property  name           CDATA      #REQUIRED>
+<!ATTLIST form-property  reset          (true|false|yes|no)       #IMPLIED>
+<!ATTLIST form-property  size           CDATA       #IMPLIED>
+<!ATTLIST form-property  type           CDATA     #REQUIRED>
+
+
+<!-- The "global-exceptions" element describes a set of exceptions that might be
+     thrown by an Action object. The handling of individual exception types is
+     configured through nested exception elements. An <action> element may
+     override a global exception handler by registering a local exception handler
+     for the same exception type. Since Struts 1.1.
+-->
+<!ELEMENT global-exceptions (exception*)>
+<!ATTLIST global-exceptions id          ID              #IMPLIED>
+
+
+<!-- The "exception" element registers an ExceptionHandler for an exception type.
+     The following attributes are defined:
+
+    bundle           Servlet context attribute for the message resources bundle
+                     associated with this handler. The default attribute is the
+                     value specified by the string constant declared at
+                     Globals.MESSAGES_KEY.
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+    className        The configuration bean for this ExceptionHandler object.
+                     If specified, className must be a subclass of the default
+                     configuration bean
+                     ["org.apache.struts.config.ExceptionConfig"]
+
+    extends          The name of the exception handler that this 
+                     will inherit configuration information from.
+
+    handler          Fully qualified Java class name for this exception handler.
+                     ["org.apache.struts.action.ExceptionHandler"]
+
+    key              The key to use with this handler's message resource bundle
+                     that will retrieve the error message template for this
+                     exception.
+
+    path             The module-relative URI to the resource that will complete
+                     the request/response if this exception occurs.
+
+    scope            The context ("request" or "session") that is used to access
+                     the ActionMessage object 
+                     [org.apache.struts.action.ActionMessage] for this 
+                     exception.
+
+    type             Fully qualified Java class name of the exception type to
+                     register with this handler.
+-->
+<!ELEMENT exception (icon?, display-name?, description?, set-property*)>
+<!ATTLIST exception      id             ID              #IMPLIED>
+<!ATTLIST exception      bundle         CDATA #IMPLIED>
+<!ATTLIST exception      className      CDATA     #IMPLIED>
+<!ATTLIST exception      extends        CDATA     #IMPLIED>
+<!ATTLIST exception      handler        CDATA     #IMPLIED>
+<!ATTLIST exception      key            CDATA           #IMPLIED>
+<!ATTLIST exception      path           CDATA   #IMPLIED>
+<!ATTLIST exception      scope          CDATA           #IMPLIED>
+<!ATTLIST exception      type           CDATA     #REQUIRED>
+
+
+<!-- The "global-forwards" element describes a set of ActionForward objects
+     [org.apache.struts.action.ActionForward] that are available to all Action
+     objects as a return value. The individual ActionForwards are configured
+     through nested <forward> elements. An <action> element may override a global
+     forward by defining a local <forward> of the same name.
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionForward objects.  If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "forward" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT global-forwards (forward*)>
+<!ATTLIST global-forwards id            ID              #IMPLIED>
+<!ATTLIST global-forwards type          CDATA     #IMPLIED>
+
+
+<!-- The "forward" element describes an ActionForward that is to be made
+     available to an Action as a return value. An ActionForward is referenced by
+     a logical name and encapsulates a URI. A "forward" element may be used to
+     describe both global and local ActionForwards. Global forwards are available
+     to all the Action objects in the module. Local forwards can be
+     nested within an <action> element and only available to an Action object
+     when it is invoked through that ActionMapping.
+
+     catalog         The name of a commons-chain catalog in which to look up
+                     a command to be executed as part of servicing this request.
+                     Only meaningful if "command" is also specified.
+
+     className       Fully qualified Java class name of ActionForward
+                     subclass to use for this object.
+                     ["org.apache.struts.action.ActionForward"]
+
+     command         The name of a commons-chain command which should be looked up
+                     and executed as part of servicing this request.
+
+     extends         The name of the forward configuration that this 
+                     will inherit configuration information from.
+
+     module          The module prefix to use with this path. This value should
+                     begin with a slash ("/").
+
+     name            The unique identifier for this forward. Referenced by the
+                     Action object at runtime to select - by its logical name -
+                     the resource that should complete the request/response.
+
+     path            The module-relative path to the resources that is 
+                     encapsulated by the logical name of this ActionForward.
+                     This value should begin with a slash ("/") character.
+
+     redirect        Set to "true" if a redirect instruction should be issued to
+                     the user-agent so that a new request is issued for this
+                     forward's resource. If true,  RequestDispatcher.Redirect is
+                     called. If "false", RequestDispatcher.forward is called instead.
+                     [false]
+-->
+<!ELEMENT forward (icon?, display-name?, description?, set-property*)>
+<!ATTLIST forward        id             ID              #IMPLIED>
+<!ATTLIST forward        catalog        CDATA           #IMPLIED>
+<!ATTLIST forward        className      CDATA     #IMPLIED>
+<!ATTLIST forward        command        CDATA           #IMPLIED>
+<!ATTLIST forward        extends        CDATA           #IMPLIED>
+<!ATTLIST forward        module         CDATA   #IMPLIED>
+<!ATTLIST forward        name           CDATA           #REQUIRED>
+<!ATTLIST forward        path           CDATA   #IMPLIED>
+<!ATTLIST forward        redirect       (true|false|yes|no)       #IMPLIED>
+
+
+<!-- The "action-mappings" element describes a set of ActionMapping objects
+     [org.apache.struts.action.ActionMapping] that are available to process
+     requests matching the url-pattern our ActionServlet registered with the
+     container. The individual ActionMappings are configured through nested
+     <action> elements. The following attributes are defined:
+
+     type           Fully qualified Java class to use when instantiating
+                    ActionMapping objects. If specified, the object must be a
+                    subclass of the default class type.
+
+                    WARNING:  For Struts 1.0, this value is ignored.  You
+                    can set the default implementation class name with the
+                    "mapping" initialization parameter to the Struts
+                    controller servlet.
+-->
+<!ELEMENT action-mappings (action*)>
+<!ATTLIST action-mappings id             ID              #IMPLIED>
+<!ATTLIST action-mappings type           CDATA     #IMPLIED>
+
+
+<!-- The "action" element describes an ActionMapping object that is to be used
+     to process a request for a specific module-relative URI. The following
+     attributes are defined:
+
+     attribute       Name of the request-scope or session-scope attribute that
+                     is used to access our ActionForm bean, if it is other than
+                     the bean's specified "name". Optional if "name" is specified,
+                     else not valid.
+
+     cancellable     Set to "true" if the Action can be cancelled. By default,
+                     when an Action is cancelled, validation is bypassed
+                     and the Action should not execute the business operation.
+                     If a request tries to cancel an Action when cancellable
+                    is not set, a "InvalidCancelException" is thrown.
+                     [false]
+
+     catalog         The name of a commons-chain catalog in which to look up
+                     a command to be executed as part of servicing this request.
+                     Only meaningful if "command" is also specified.
+
+     className       The fully qualified Java class name of the ActionMapping
+                     subclass to use for this action mapping object. Defaults to
+                     the type specified by the enclosing <action-mappings>
+                     element or to "org.apache.struts.action.ActionMapping" if
+                     not specified.
+                     ["org.apache.struts.action.ActionMapping"]
+
+     command         The name of a commons-chain command which should be looked up
+                     and executed as part of servicing this request.  
+
+     extends         The path of the action mapping configuration that this 
+                     will inherit configuration information from.
+
+     forward         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     include         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     input           Module-relative path of the action or other resource to
+                     which control should be returned if a validation error is
+                     encountered. Valid only when "name" is specified. Required
+                     if "name" is specified and the input bean returns
+                     validation errors. Optional if "name" is specified and the
+                     input bean does not return validation errors.
+
+     name            Name of the form bean, if any, that is associated with this
+                     action mapping.
+
+     parameter       General-purpose configuration parameter that can be used to
+                     pass extra information to the Action object selected by
+                     this action mapping.
+
+     path            The module-relative path of the submitted request, starting
+                     with a "/" character, and without the filename extension if
+                     extension mapping is used.
+
+                     NOTE:  Do *not* include a period in your path name,
+                     because it will look like a filename extension and
+                     cause your Action to not be located.
+
+     prefix          Prefix used to match request parameter names to ActionForm
+                     property names, if any. Optional if "name" is specified,
+                     else not allowed.
+
+     roles           Comma-delimited list of security role names that are allowed
+                     access to this ActionMapping object. Since Struts 1.1.
+
+     scope           The context ("request" or "session") that is used to
+                     access our ActionForm bean, if any.  Optional if "name" is
+                     specified, else not valid. [session]
+
+     suffix          Suffix used to match request parameter names to ActionForm
+                     bean property names, if any. Optional if "name" is
+                     specified, else not valid.
+
+     type            Fully qualified Java class name of the Action subclass
+                     [org.apache.struts.action.Action] that will process requests
+                     for this action mapping. Not valid if either the "forward"
+                     or "include" attribute is specified.  Exactly one of
+                     "forward", "include", or "type" must be specified.
+
+     unknown         Set to "true" if this object should be configured as the
+                     default action mapping for this module. If a request does not
+                     match another object, it will be passed to the ActionMapping
+                     object with unknown set to "true". Only one ActionMapping
+                     can be marked as "unknown" within a module.
+                     [false]
+
+     validate        Set to "true" if the validate method of the ActionForm bean
+                     should be called prior to calling the Action object for this
+                     action mapping, or set to "false" if you do not want the
+                     validate method called.
+                     [true]
+-->
+<!ELEMENT action (icon?, display-name?, description?, set-property*, exception*, forward*)>
+<!ATTLIST action         id             ID              #IMPLIED>
+<!ATTLIST action         attribute      CDATA      #IMPLIED>
+<!ATTLIST action         cancellable    (true|false|yes|no)       #IMPLIED>
+<!ATTLIST action         catalog        CDATA           #IMPLIED>
+<!ATTLIST action         className      CDATA     #IMPLIED>
+<!ATTLIST action         command        CDATA           #IMPLIED>
+<!ATTLIST action         extends        CDATA   #IMPLIED>
+<!ATTLIST action         forward        CDATA   #IMPLIED>
+<!ATTLIST action         include        CDATA   #IMPLIED>
+<!ATTLIST action         input          CDATA   #IMPLIED>
+<!ATTLIST action         name           CDATA      #IMPLIED>
+<!ATTLIST action         parameter      CDATA           #IMPLIED>
+<!ATTLIST action         path           CDATA   #REQUIRED>
+<!ATTLIST action         prefix         CDATA           #IMPLIED>
+<!ATTLIST action         roles          CDATA           #IMPLIED>
+<!ATTLIST action         scope          (request|session)  #IMPLIED>
+<!ATTLIST action         suffix         CDATA           #IMPLIED>
+<!ATTLIST action         type           CDATA     #IMPLIED>
+<!ATTLIST action         unknown        (true|false|yes|no)       #IMPLIED>
+<!ATTLIST action         validate       (true|false|yes|no)       #IMPLIED>
+
+
+<!-- The "controller" element describes the ControllerConfig bean
+     [org.apache.struts.config.ControllerConfig] that encapsulates
+     a module's runtime configuration. The following
+     attributes are defined:
+
+     bufferSize      The size of the input buffer used when processing
+                     file uploads.
+                     [4096]
+
+     catalog         Name of the catalog to use when processing requests
+                     for this module.
+                     [struts]
+
+     className       Fully qualified Java class name of the
+                     ControllerConfig subclass for this controller object.
+                     If specified, the object must be a subclass of the
+                     default class.
+                     ["org.apache.struts.config.ControllerConfig"]
+
+     command         Name of the command to execute to process a request.
+                     [servlet-standard]
+
+     contentType     Default content type (and optional character encoding) to
+                     be set on each response. May be overridden by the Action,
+                     JSP, or other resource to which the request is forwarded.
+                     ["text/html"]
+
+     forwardPattern  Replacement pattern defining how the "path" attribute of a
+                     <forward> element is mapped to a context-relative URL when
+                     it starts with a slash (and when the contextRelative
+                     property is false). This value may consist of any
+                     combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the "path" attribute of the  selected
+                     "forward" element
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                     Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is "$M$P",
+                     which is consistent with the previous behavior of
+                     forwards.  Since Struts 1.1.  ["$M$P"]
+
+     inputForward    Set to "true" if you want the "input" attribute of
+                     <action> elements to be the name of a local or global
+                     ActionForward, which will then be used to calculate the
+                     ultimate URL. Set to "false" (the default) to treat the
+                     "input" parameter of <action> elements as a
+                     module-relative path to the resource
+                     to be used as the input form. Since Struts 1.1.
+                     [false]
+
+     locale          Set to "true" if you want a Locale object stored in the
+                     user's session if not already present.
+                     [true]
+
+     maxFileSize     The maximum size (in bytes) of a file to be accepted as a
+                     file upload.  Can be expressed as a number followed by a
+                     "K", "M", or "G", which are interpreted to mean kilobytes,
+                     megabytes, or gigabytes, respectively.
+                     ["250M"]
+
+     memFileSize     The maximum size (in bytes) of a file whose contents will
+                     be retained in memory after uploading. Files larger than
+                     this threshold will be written to some alternative storage
+                     medium, typically a hard disk. Can be expressed as a number
+                     followed by a "K", "M", or "G", which are interpreted to
+                     mean kilobytes, megabytes, or gigabytes, respectively.
+                     ["256K"]
+
+     multipartClass  The fully qualified Java class name of the multipart
+                     request handler class to be used with this module.
+                     ["org.apache.struts.upload.CommonsMultipartRequestHandler"]
+
+     nocache         Set to "true" if you want the controller to add HTTP
+                     headers for defeating caching to every response from
+                     this module.  [false]
+
+     pagePattern     Replacement pattern defining how the "page" attribute of
+                     custom tags using it is mapped to a context-relative URL
+                     of the corresponding resource.  This value may consist of
+                     any combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the value of the "page" attribute
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                              Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is
+                     "$M$P", which is consistent with previous hard coded
+                     behavior of URL evaluation for "page" attributes.
+                     ["$M$P"]
+
+     processorClass  The fully qualified Java class name of the
+                     RequestProcessor subclass to be used with this module.
+                     ["org.apache.struts.chain.ComposableRequestProcessor"]
+
+     tempDir         Temporary working directory to use when processing
+                     file uploads.
+                     [{Directory provided by servlet container}]
+
+-->
+<!ELEMENT controller     (set-property*)>
+<!ATTLIST controller     id             ID              #IMPLIED>
+<!ATTLIST controller     bufferSize     CDATA       #IMPLIED>
+<!ATTLIST controller     catalog        CDATA           #IMPLIED>
+<!ATTLIST controller     className      CDATA     #IMPLIED>
+<!ATTLIST controller     command        CDATA           #IMPLIED>
+<!ATTLIST controller     contentType    CDATA           #IMPLIED>
+<!ATTLIST controller     forwardPattern CDATA           #IMPLIED>
+<!ATTLIST controller     inputForward   (true|false|yes|no)       #IMPLIED>
+<!ATTLIST controller     locale         (true|false|yes|no)       #IMPLIED>
+<!ATTLIST controller     maxFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     memFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     multipartClass CDATA     #IMPLIED>
+<!ATTLIST controller     nocache        (true|false|yes|no)       #IMPLIED>
+<!ATTLIST controller     pagePattern    CDATA           #IMPLIED>
+<!ATTLIST controller     processorClass CDATA     #IMPLIED>
+<!ATTLIST controller     tempDir        CDATA           #IMPLIED>
+
+
+<!-- The "message-resources" element describes a MessageResources object with
+     message templates for this module. The following attributes are defined:
+
+     className       The configuration bean for this message resources object.
+                     If specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.MessageResourcesConfig"]
+
+     factory         Fully qualified Java class name of the
+                     MessageResourcesFactory subclass to use for this message
+                     resources object.
+                     ["org.apache.struts.util.PropertyMessageResourcesFactory"]
+
+     key             Servlet context attribute under which this message
+                     resources bundle will be stored. The default attribute is
+                     the value specified by the string constant at
+                     [Globals.MESSAGES_KEY]. The module prefix (if
+                     any) is appended to the key (${key}${prefix}).
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+                     NOTE: The module  prefix includes the leading
+                     slash, so the default message resource bundle for a module
+                     named "foo" is stored under
+                     "org.apache.struts.action.MESSAGE/foo".
+
+     null            Set to "true" if you want our message resources to return a
+                     null string for unknown message keys, or "false" to return a
+                     message with the bad key value.
+
+     parameter       Configuration parameter to be passed to the createResources
+                     method of our factory object.
+-->
+<!ELEMENT message-resources (set-property*)>
+<!ATTLIST message-resources id          ID              #IMPLIED>
+<!ATTLIST message-resources className   CDATA     #IMPLIED>
+<!ATTLIST message-resources factory     CDATA     #IMPLIED>
+<!ATTLIST message-resources key         CDATA #IMPLIED>
+<!ATTLIST message-resources null        (true|false|yes|no)       #IMPLIED>
+<!ATTLIST message-resources parameter   CDATA           #REQUIRED>
+
+
+<!-- The "plug-in" element specifies the fully qualified class name of a
+     general-purpose application plug-in module that receives notification of
+     application startup and shutdown events. An instance of the specified class
+     is created for each element, and can be configured with nested <set-property>
+     elements. The following attributes are supported:
+
+     className       Fully qualified Java class name of the plug-in class; must
+                     implement [org.apache.struts.action.PlugIn].
+-->
+<!ELEMENT plug-in           (set-property*)>
+<!ATTLIST plug-in           id          ID              #IMPLIED>
+<!ATTLIST plug-in           className   CDATA     #REQUIRED>
+
+
+<!-- ========== Subordinate Elements ====================================== -->
+
+
+<!-- The "description" element contains descriptive (paragraph length) text
+     about the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT description    (#PCDATA)>
+<!ATTLIST description    id             ID              #IMPLIED>
+
+
+<!-- The "display-name" element contains a short (one line) description of
+     the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT display-name (#PCDATA)>
+<!ATTLIST display-name   id             ID              #IMPLIED>
+
+
+<!-- The "icon" element contains a small-icon and large-icon element which
+     specify the location, relative to the Struts configuration file, for small
+     and large images used to represent the surrounding element in GUI tools.
+-->
+<!ELEMENT icon           (small-icon?, large-icon?)>
+<!ATTLIST icon           id             ID              #IMPLIED>
+
+
+<!-- The "large-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a large (32x32 pixel)
+     icon image.
+-->
+<!ELEMENT large-icon     (#PCDATA)>
+<!ATTLIST large-icon     id             ID              #IMPLIED>
+
+
+<!-- The "set-property" element specifies the method name and initial value of
+     an additional JavaBean configuration property. When the object representing
+     the surrounding element is instantiated, the accessor for the indicated
+     property is called and passed the indicated value. The "set-property"
+     element is especially useful when a custom subclass is used with
+     <forward>, <action>, or <plug-in> elements. The subclass
+     can be passed whatever other properties may be required to configure the
+     object without changing how the struts-config is parsed.
+
+    Since Struts 1.3, an alternate syntax is supported.  By using
+    the "key" attribute instead of the "property" attribute, you can set 
+    arbitrary string properties on the Config object which is populated
+    based on the containing element.   NOTE: the "key" attribute is NOT
+	supported for <set-property> inside a <plug-in> element.
+
+     property        Name of the JavaBeans property whose setter method
+                     will be called. Exactly one of
+                     "property" or "key" must be specified.
+
+     key             Where supported, the key which will be used to store
+                     the specified value in the given config object.  Exactly one of
+                     "property" or "key" must be specified.
+
+     value           String representation of the value to which this
+                     property will be set, after suitable type conversion
+
+-->
+<!ELEMENT set-property   EMPTY>
+<!ATTLIST set-property   id             ID              #IMPLIED>
+<!ATTLIST set-property   property       CDATA      #IMPLIED>
+<!ATTLIST set-property   key            CDATA           #IMPLIED>
+<!ATTLIST set-property   value          CDATA           #REQUIRED>
+
+
+<!-- The "small-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a small (16x16 pixel)
+     icon image.
+-->
+<!ELEMENT small-icon     (#PCDATA)>
+<!ATTLIST small-icon     id             ID              #IMPLIED>
+
diff --git a/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_3.dtd b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_3.dtd
new file mode 100644
index 0000000..a9aed16
--- /dev/null
+++ b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-config_1_3.dtd
@@ -0,0 +1,726 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+         http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<!--
+     DTD for the Struts Application Configuration File
+
+     To support validation of your configuration file, include the following
+     DOCTYPE element at the beginning (after the "xml" declaration):
+
+     <!DOCTYPE struts-config PUBLIC
+       "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
+       "http://struts.apache.org/dtds/struts-config_1_3.dtd">
+
+     $Id: struts-config_1_3.dtd 481833 2006-12-03 17:32:52Z niallp $
+-->
+
+
+<!-- ========== Defined Types ============================================= -->
+
+
+<!-- An "AttributeName" is the identifier of a page, request, session, or
+     application scope attribute.
+-->
+<!ENTITY % AttributeName "CDATA">
+
+
+<!-- A "BeanName" is the identifier of a JavaBean, such as a form bean,
+     and also serves as the name of the corresponding scripting variable
+     and the name of the JSP attribute under which the bean is accessed.
+     Therefore, it must conform to the rules for a Java identifier.
+-->
+<!ENTITY % BeanName "CDATA">
+
+
+<!-- A "Boolean" is the string representation of a boolean (true or false)
+     variable.
+-->
+<!ENTITY % Boolean "(true|false|yes|no)">
+
+
+<!-- A "ClassName" is the fully qualified name of a Java class that is
+     instantiated to provide the functionality of the enclosing element.
+-->
+<!ENTITY % ClassName "CDATA">
+
+
+<!-- An "Integer" is a character string consisting solely of numeric digits,
+     optionally preceeded by a minus sign, that can be converted to a
+     32-bit integer.
+-->
+<!ENTITY % Integer "CDATA">
+
+
+<!-- A "Location" is a relative path, delimited by "/" characters, that
+     defines the location of a resource relative to the location of the
+     Struts configuration file itself.
+-->
+<!ENTITY % Location "#PCDATA">
+
+
+<!-- A "PropName" is the name of a JavaBeans property, and must begin with
+     a lower case letter and contain only characters that are legal in a
+     Java identifier.
+-->
+<!ENTITY % PropName "CDATA">
+
+
+<!-- A "RequestPath" is an module-relative URI path, beginning with a
+     slash, that identifies a mapped resource (such as a JSP page or a servlet)
+     within this web application.
+-->
+<!ENTITY % RequestPath "CDATA">
+
+
+<!-- The name of a JSP bean scope within which such a form bean may be
+     accessed.
+-->
+<!ENTITY % RequestScope "(request|session)">
+
+
+<!-- ========== Top Level Elements ======================================== -->
+
+
+<!-- The "struts-config" element is the root of the configuration file
+     hierarchy, and contains nested elements for all of the other
+     configuration settings.
+-->
+<!ELEMENT struts-config (display-name?, description?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)>
+<!ATTLIST struts-config  id             ID              #IMPLIED>
+
+<!-- The "form-beans" element describes the set of form bean descriptors for this
+     module. The following attributes are defined:
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionFormBean objects. If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "formBean" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT form-beans (form-bean*)>
+<!ATTLIST form-beans     id             ID              #IMPLIED>
+<!ATTLIST form-beans     type           %ClassName;     #IMPLIED>
+
+
+<!-- The "form-bean" element describes an ActionForm subclass
+     [org.apache.struts.action.ActionForm] that can be referenced by an "action"
+     element.
+
+
+The "form-bean" element describes a particular form bean, which is a
+     JavaBean that implements the org.apache.struts.action.ActionForm
+     class.  The following attributes are defined:
+
+     className       The configuration bean for this form bean object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormBeanConfig"]
+
+     extends         The name of the form bean that this bean will
+                     inherit configuration information from.
+
+     name            The unique identifier for this form bean. Referenced by the
+                     <action> element to specify which form bean to use with its
+                     request.
+                     
+     type            Fully qualified Java class name of the ActionForm subclass
+                     to use with this form bean.
+                     
+     enhanced        Reserved for future use.
+-->
+<!ELEMENT form-bean (icon?, display-name?, description?, set-property*, form-property*)>
+<!ATTLIST form-bean      id             ID              #IMPLIED>
+<!ATTLIST form-bean      className      %ClassName;     #IMPLIED>
+<!ATTLIST form-bean      enhanced       %Boolean;       #IMPLIED>
+<!ATTLIST form-bean      extends        %BeanName;      #IMPLIED>
+<!ATTLIST form-bean      name           %BeanName;      #REQUIRED>
+<!ATTLIST form-bean      type           %ClassName;     #IMPLIED>
+
+
+<!-- The "form-property" element describes a JavaBean property that can be used to
+     configure an instance of a DynaActionForm or a subclass thereof. This element
+     is only utilized when the "type" attribute of the enclosing "form-bean" element
+     is [org.apache.struts.action.DynaActionForm] or a subclass of DynaActionForm. If
+     a custom DynaActionForm subclass is used, then the "dynamic" attribute of the
+     enclosing <form-bean> element must be set to "true". Since Struts 1.1.
+
+     className       The configuration bean for this form property object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormPropertyConfig"]
+
+     initial         String representation of the initial value for this property.
+                     If not specified, primitives will be initialized to zero and
+                     objects initialized to the zero-argument instantiation of that
+                     object class.  For example, Strings will be initialized to ""
+
+     name            The name of the JavaBean property described by this element.
+
+     reset           The flag that indicates when this property should be reset 
+                     to its "initial" value when the form's "reset()" method is 
+                     called.  If this is set to "true", the property is always 
+                     reset when "reset()" is called.  This can also be set to 
+                     one or more HTTP methods, such as GET or POST. In such a 
+                     case, the property will be reset only when the HTTP method 
+                     used for the request being processed is included in this 
+                     attribute's value(s).  Multiple HTTP methods can be 
+                     specified by separating them with whitespace or commas.
+
+     size            The number of array elements to create if the value of the
+                     "type" attribute specifies an array, but there is no value
+                     specified for the "initial" attribute.
+
+     type            Fully qualified Java class name of the field underlying this
+                     property, optionally followed by "[]" to indicate that the
+                     field is indexed.
+-->
+<!ELEMENT form-property  (set-property*)>
+<!ATTLIST form-property  className      %ClassName;     #IMPLIED>
+<!ATTLIST form-property  initial        CDATA           #IMPLIED>
+<!ATTLIST form-property  name           %PropName;      #REQUIRED>
+<!ATTLIST form-property  reset          %Boolean;       #IMPLIED>
+<!ATTLIST form-property  size           %Integer;       #IMPLIED>
+<!ATTLIST form-property  type           %ClassName;     #REQUIRED>
+
+
+<!-- The "global-exceptions" element describes a set of exceptions that might be
+     thrown by an Action object. The handling of individual exception types is
+     configured through nested exception elements. An <action> element may
+     override a global exception handler by registering a local exception handler
+     for the same exception type. Since Struts 1.1.
+-->
+<!ELEMENT global-exceptions (exception*)>
+<!ATTLIST global-exceptions id          ID              #IMPLIED>
+
+
+<!-- The "exception" element registers an ExceptionHandler for an exception type.
+     The following attributes are defined:
+
+    bundle           Servlet context attribute for the message resources bundle
+                     associated with this handler. The default attribute is the
+                     value specified by the string constant declared at
+                     Globals.MESSAGES_KEY.
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+    className        The configuration bean for this ExceptionHandler object.
+                     If specified, className must be a subclass of the default
+                     configuration bean
+                     ["org.apache.struts.config.ExceptionConfig"]
+
+    extends          The name of the exception handler that this 
+                     will inherit configuration information from.
+
+    handler          Fully qualified Java class name for this exception handler.
+                     ["org.apache.struts.action.ExceptionHandler"]
+
+    key              The key to use with this handler's message resource bundle
+                     that will retrieve the error message template for this
+                     exception.
+
+    path             The module-relative URI to the resource that will complete
+                     the request/response if this exception occurs.
+
+    scope            The context ("request" or "session") that is used to access
+                     the ActionMessage object 
+                     [org.apache.struts.action.ActionMessage] for this 
+                     exception.
+
+    type             Fully qualified Java class name of the exception type to
+                     register with this handler.
+-->
+<!ELEMENT exception (icon?, display-name?, description?, set-property*)>
+<!ATTLIST exception      id             ID              #IMPLIED>
+<!ATTLIST exception      bundle         %AttributeName; #IMPLIED>
+<!ATTLIST exception      className      %ClassName;     #IMPLIED>
+<!ATTLIST exception      extends        %ClassName;     #IMPLIED>
+<!ATTLIST exception      handler        %ClassName;     #IMPLIED>
+<!ATTLIST exception      key            CDATA           #IMPLIED>
+<!ATTLIST exception      path           %RequestPath;   #IMPLIED>
+<!ATTLIST exception      scope          CDATA           #IMPLIED>
+<!ATTLIST exception      type           %ClassName;     #REQUIRED>
+
+
+<!-- The "global-forwards" element describes a set of ActionForward objects
+     [org.apache.struts.action.ActionForward] that are available to all Action
+     objects as a return value. The individual ActionForwards are configured
+     through nested <forward> elements. An <action> element may override a global
+     forward by defining a local <forward> of the same name.
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionForward objects.  If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "forward" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT global-forwards (forward*)>
+<!ATTLIST global-forwards id            ID              #IMPLIED>
+<!ATTLIST global-forwards type          %ClassName;     #IMPLIED>
+
+
+<!-- The "forward" element describes an ActionForward that is to be made
+     available to an Action as a return value. An ActionForward is referenced by
+     a logical name and encapsulates a URI. A "forward" element may be used to
+     describe both global and local ActionForwards. Global forwards are available
+     to all the Action objects in the module. Local forwards can be
+     nested within an <action> element and only available to an Action object
+     when it is invoked through that ActionMapping.
+
+     catalog         The name of a commons-chain catalog in which to look up
+                     a command to be executed as part of servicing this request.
+                     Only meaningful if "command" is also specified.
+
+     className       Fully qualified Java class name of ActionForward
+                     subclass to use for this object.
+                     ["org.apache.struts.action.ActionForward"]
+
+     command         The name of a commons-chain command which should be looked up
+                     and executed as part of servicing this request.
+
+     extends         The name of the forward configuration that this 
+                     will inherit configuration information from.
+
+     module          The module prefix to use with this path. This value should
+                     begin with a slash ("/").
+
+     name            The unique identifier for this forward. Referenced by the
+                     Action object at runtime to select - by its logical name -
+                     the resource that should complete the request/response.
+
+     path            The module-relative path to the resources that is 
+                     encapsulated by the logical name of this ActionForward.
+                     This value should begin with a slash ("/") character.
+
+     redirect        Set to "true" if a redirect instruction should be issued to
+                     the user-agent so that a new request is issued for this
+                     forward's resource. If true,  RequestDispatcher.Redirect is
+                     called. If "false", RequestDispatcher.forward is called instead.
+                     [false]
+-->
+<!ELEMENT forward (icon?, display-name?, description?, set-property*)>
+<!ATTLIST forward        id             ID              #IMPLIED>
+<!ATTLIST forward        catalog        CDATA           #IMPLIED>
+<!ATTLIST forward        className      %ClassName;     #IMPLIED>
+<!ATTLIST forward        command        CDATA           #IMPLIED>
+<!ATTLIST forward        extends        CDATA           #IMPLIED>
+<!ATTLIST forward        module         %RequestPath;   #IMPLIED>
+<!ATTLIST forward        name           CDATA           #REQUIRED>
+<!ATTLIST forward        path           %RequestPath;   #IMPLIED>
+<!ATTLIST forward        redirect       %Boolean;       #IMPLIED>
+
+
+<!-- The "action-mappings" element describes a set of ActionMapping objects
+     [org.apache.struts.action.ActionMapping] that are available to process
+     requests matching the url-pattern our ActionServlet registered with the
+     container. The individual ActionMappings are configured through nested
+     <action> elements. The following attributes are defined:
+
+     type           Fully qualified Java class to use when instantiating
+                    ActionMapping objects. If specified, the object must be a
+                    subclass of the default class type.
+
+                    WARNING:  For Struts 1.0, this value is ignored.  You
+                    can set the default implementation class name with the
+                    "mapping" initialization parameter to the Struts
+                    controller servlet.
+-->
+<!ELEMENT action-mappings (action*)>
+<!ATTLIST action-mappings id             ID              #IMPLIED>
+<!ATTLIST action-mappings type           %ClassName;     #IMPLIED>
+
+
+<!-- The "action" element describes an ActionMapping object that is to be used
+     to process a request for a specific module-relative URI. The following
+     attributes are defined:
+
+     attribute       Name of the request-scope or session-scope attribute that
+                     is used to access our ActionForm bean, if it is other than
+                     the bean's specified "name". Optional if "name" is specified,
+                     else not valid.
+
+     cancellable     Set to "true" if the Action can be cancelled. By default,
+                     when an Action is cancelled, validation is bypassed
+                     and the Action should not execute the business operation.
+                     If a request tries to cancel an Action when cancellable
+                    is not set, a "InvalidCancelException" is thrown.
+                     [false]
+
+     catalog         The name of a commons-chain catalog in which to look up
+                     a command to be executed as part of servicing this request.
+                     Only meaningful if "command" is also specified.
+
+     className       The fully qualified Java class name of the ActionMapping
+                     subclass to use for this action mapping object. Defaults to
+                     the type specified by the enclosing <action-mappings>
+                     element or to "org.apache.struts.action.ActionMapping" if
+                     not specified.
+                     ["org.apache.struts.action.ActionMapping"]
+
+     command         The name of a commons-chain command which should be looked up
+                     and executed as part of servicing this request.  
+
+     extends         The path of the action mapping configuration that this 
+                     will inherit configuration information from.
+
+     forward         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     include         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     input           Module-relative path of the action or other resource to
+                     which control should be returned if a validation error is
+                     encountered. Valid only when "name" is specified. Required
+                     if "name" is specified and the input bean returns
+                     validation errors. Optional if "name" is specified and the
+                     input bean does not return validation errors.
+
+     name            Name of the form bean, if any, that is associated with this
+                     action mapping.
+
+     parameter       General-purpose configuration parameter that can be used to
+                     pass extra information to the Action object selected by
+                     this action mapping.
+
+     path            The module-relative path of the submitted request, starting
+                     with a "/" character, and without the filename extension if
+                     extension mapping is used.
+
+                     NOTE:  Do *not* include a period in your path name,
+                     because it will look like a filename extension and
+                     cause your Action to not be located.
+
+     prefix          Prefix used to match request parameter names to ActionForm
+                     property names, if any. Optional if "name" is specified,
+                     else not allowed.
+
+     roles           Comma-delimited list of security role names that are allowed
+                     access to this ActionMapping object. Since Struts 1.1.
+
+     scope           The context ("request" or "session") that is used to
+                     access our ActionForm bean, if any.  Optional if "name" is
+                     specified, else not valid. [session]
+
+     suffix          Suffix used to match request parameter names to ActionForm
+                     bean property names, if any. Optional if "name" is
+                     specified, else not valid.
+
+     type            Fully qualified Java class name of the Action subclass
+                     [org.apache.struts.action.Action] that will process requests
+                     for this action mapping. Not valid if either the "forward"
+                     or "include" attribute is specified.  Exactly one of
+                     "forward", "include", or "type" must be specified.
+
+     unknown         Set to "true" if this object should be configured as the
+                     default action mapping for this module. If a request does not
+                     match another object, it will be passed to the ActionMapping
+                     object with unknown set to "true". Only one ActionMapping
+                     can be marked as "unknown" within a module.
+                     [false]
+
+     validate        Set to "true" if the validate method of the ActionForm bean
+                     should be called prior to calling the Action object for this
+                     action mapping, or set to "false" if you do not want the
+                     validate method called.
+                     [true]
+-->
+<!ELEMENT action (icon?, display-name?, description?, set-property*, exception*, forward*)>
+<!ATTLIST action         id             ID              #IMPLIED>
+<!ATTLIST action         attribute      %BeanName;      #IMPLIED>
+<!ATTLIST action         cancellable    %Boolean;       #IMPLIED>
+<!ATTLIST action         catalog        CDATA           #IMPLIED>
+<!ATTLIST action         className      %ClassName;     #IMPLIED>
+<!ATTLIST action         command        CDATA           #IMPLIED>
+<!ATTLIST action         extends        %RequestPath;   #IMPLIED>
+<!ATTLIST action         forward        %RequestPath;   #IMPLIED>
+<!ATTLIST action         include        %RequestPath;   #IMPLIED>
+<!ATTLIST action         input          %RequestPath;   #IMPLIED>
+<!ATTLIST action         name           %BeanName;      #IMPLIED>
+<!ATTLIST action         parameter      CDATA           #IMPLIED>
+<!ATTLIST action         path           %RequestPath;   #REQUIRED>
+<!ATTLIST action         prefix         CDATA           #IMPLIED>
+<!ATTLIST action         roles          CDATA           #IMPLIED>
+<!ATTLIST action         scope          %RequestScope;  #IMPLIED>
+<!ATTLIST action         suffix         CDATA           #IMPLIED>
+<!ATTLIST action         type           %ClassName;     #IMPLIED>
+<!ATTLIST action         unknown        %Boolean;       #IMPLIED>
+<!ATTLIST action         validate       %Boolean;       #IMPLIED>
+
+
+<!-- The "controller" element describes the ControllerConfig bean
+     [org.apache.struts.config.ControllerConfig] that encapsulates
+     a module's runtime configuration. The following
+     attributes are defined:
+
+     bufferSize      The size of the input buffer used when processing
+                     file uploads.
+                     [4096]
+
+     catalog         Name of the catalog to use when processing requests
+                     for this module.
+                     [struts]
+
+     className       Fully qualified Java class name of the
+                     ControllerConfig subclass for this controller object.
+                     If specified, the object must be a subclass of the
+                     default class.
+                     ["org.apache.struts.config.ControllerConfig"]
+
+     command         Name of the command to execute to process a request.
+                     [servlet-standard]
+
+     contentType     Default content type (and optional character encoding) to
+                     be set on each response. May be overridden by the Action,
+                     JSP, or other resource to which the request is forwarded.
+                     ["text/html"]
+
+     forwardPattern  Replacement pattern defining how the "path" attribute of a
+                     <forward> element is mapped to a context-relative URL when
+                     it starts with a slash (and when the contextRelative
+                     property is false). This value may consist of any
+                     combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the "path" attribute of the  selected
+                     "forward" element
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                     Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is "$M$P",
+                     which is consistent with the previous behavior of
+                     forwards.  Since Struts 1.1.  ["$M$P"]
+
+     inputForward    Set to "true" if you want the "input" attribute of
+                     <action> elements to be the name of a local or global
+                     ActionForward, which will then be used to calculate the
+                     ultimate URL. Set to "false" (the default) to treat the
+                     "input" parameter of <action> elements as a
+                     module-relative path to the resource
+                     to be used as the input form. Since Struts 1.1.
+                     [false]
+
+     locale          Set to "true" if you want a Locale object stored in the
+                     user's session if not already present.
+                     [true]
+
+     maxFileSize     The maximum size (in bytes) of a file to be accepted as a
+                     file upload.  Can be expressed as a number followed by a
+                     "K", "M", or "G", which are interpreted to mean kilobytes,
+                     megabytes, or gigabytes, respectively.
+                     ["250M"]
+
+     memFileSize     The maximum size (in bytes) of a file whose contents will
+                     be retained in memory after uploading. Files larger than
+                     this threshold will be written to some alternative storage
+                     medium, typically a hard disk. Can be expressed as a number
+                     followed by a "K", "M", or "G", which are interpreted to
+                     mean kilobytes, megabytes, or gigabytes, respectively.
+                     ["256K"]
+
+     multipartClass  The fully qualified Java class name of the multipart
+                     request handler class to be used with this module.
+                     ["org.apache.struts.upload.CommonsMultipartRequestHandler"]
+
+     nocache         Set to "true" if you want the controller to add HTTP
+                     headers for defeating caching to every response from
+                     this module.  [false]
+
+     pagePattern     Replacement pattern defining how the "page" attribute of
+                     custom tags using it is mapped to a context-relative URL
+                     of the corresponding resource.  This value may consist of
+                     any combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the value of the "page" attribute
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                              Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is
+                     "$M$P", which is consistent with previous hard coded
+                     behavior of URL evaluation for "page" attributes.
+                     ["$M$P"]
+
+     processorClass  The fully qualified Java class name of the
+                     RequestProcessor subclass to be used with this module.
+                     ["org.apache.struts.chain.ComposableRequestProcessor"]
+
+     tempDir         Temporary working directory to use when processing
+                     file uploads.
+                     [{Directory provided by servlet container}]
+
+-->
+<!ELEMENT controller     (set-property*)>
+<!ATTLIST controller     id             ID              #IMPLIED>
+<!ATTLIST controller     bufferSize     %Integer;       #IMPLIED>
+<!ATTLIST controller     catalog        CDATA           #IMPLIED>
+<!ATTLIST controller     className      %ClassName;     #IMPLIED>
+<!ATTLIST controller     command        CDATA           #IMPLIED>
+<!ATTLIST controller     contentType    CDATA           #IMPLIED>
+<!ATTLIST controller     forwardPattern CDATA           #IMPLIED>
+<!ATTLIST controller     inputForward   %Boolean;       #IMPLIED>
+<!ATTLIST controller     locale         %Boolean;       #IMPLIED>
+<!ATTLIST controller     maxFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     memFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     multipartClass %ClassName;     #IMPLIED>
+<!ATTLIST controller     nocache        %Boolean;       #IMPLIED>
+<!ATTLIST controller     pagePattern    CDATA           #IMPLIED>
+<!ATTLIST controller     processorClass %ClassName;     #IMPLIED>
+<!ATTLIST controller     tempDir        CDATA           #IMPLIED>
+
+
+<!-- The "message-resources" element describes a MessageResources object with
+     message templates for this module. The following attributes are defined:
+
+     className       The configuration bean for this message resources object.
+                     If specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.MessageResourcesConfig"]
+
+     factory         Fully qualified Java class name of the
+                     MessageResourcesFactory subclass to use for this message
+                     resources object.
+                     ["org.apache.struts.util.PropertyMessageResourcesFactory"]
+
+     key             Servlet context attribute under which this message
+                     resources bundle will be stored. The default attribute is
+                     the value specified by the string constant at
+                     [Globals.MESSAGES_KEY]. The module prefix (if
+                     any) is appended to the key (${key}${prefix}).
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+                     NOTE: The module  prefix includes the leading
+                     slash, so the default message resource bundle for a module
+                     named "foo" is stored under
+                     "org.apache.struts.action.MESSAGE/foo".
+
+     null            Set to "true" if you want our message resources to return a
+                     null string for unknown message keys, or "false" to return a
+                     message with the bad key value.
+
+     parameter       Configuration parameter to be passed to the createResources
+                     method of our factory object.
+-->
+<!ELEMENT message-resources (set-property*)>
+<!ATTLIST message-resources id          ID              #IMPLIED>
+<!ATTLIST message-resources className   %ClassName;     #IMPLIED>
+<!ATTLIST message-resources factory     %ClassName;     #IMPLIED>
+<!ATTLIST message-resources key         %AttributeName; #IMPLIED>
+<!ATTLIST message-resources null        %Boolean;       #IMPLIED>
+<!ATTLIST message-resources parameter   CDATA           #REQUIRED>
+
+
+<!-- The "plug-in" element specifies the fully qualified class name of a
+     general-purpose application plug-in module that receives notification of
+     application startup and shutdown events. An instance of the specified class
+     is created for each element, and can be configured with nested <set-property>
+     elements. The following attributes are supported:
+
+     className       Fully qualified Java class name of the plug-in class; must
+                     implement [org.apache.struts.action.PlugIn].
+-->
+<!ELEMENT plug-in           (set-property*)>
+<!ATTLIST plug-in           id          ID              #IMPLIED>
+<!ATTLIST plug-in           className   %ClassName;     #REQUIRED>
+
+
+<!-- ========== Subordinate Elements ====================================== -->
+
+
+<!-- The "description" element contains descriptive (paragraph length) text
+     about the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT description    (#PCDATA)>
+<!ATTLIST description    id             ID              #IMPLIED>
+
+
+<!-- The "display-name" element contains a short (one line) description of
+     the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT display-name (#PCDATA)>
+<!ATTLIST display-name   id             ID              #IMPLIED>
+
+
+<!-- The "icon" element contains a small-icon and large-icon element which
+     specify the location, relative to the Struts configuration file, for small
+     and large images used to represent the surrounding element in GUI tools.
+-->
+<!ELEMENT icon           (small-icon?, large-icon?)>
+<!ATTLIST icon           id             ID              #IMPLIED>
+
+
+<!-- The "large-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a large (32x32 pixel)
+     icon image.
+-->
+<!ELEMENT large-icon     (%Location;)>
+<!ATTLIST large-icon     id             ID              #IMPLIED>
+
+
+<!-- The "set-property" element specifies the method name and initial value of
+     an additional JavaBean configuration property. When the object representing
+     the surrounding element is instantiated, the accessor for the indicated
+     property is called and passed the indicated value. The "set-property"
+     element is especially useful when a custom subclass is used with
+     <forward>, <action>, or <plug-in> elements. The subclass
+     can be passed whatever other properties may be required to configure the
+     object without changing how the struts-config is parsed.
+
+    Since Struts 1.3, an alternate syntax is supported.  By using
+    the "key" attribute instead of the "property" attribute, you can set 
+    arbitrary string properties on the Config object which is populated
+    based on the containing element.   NOTE: the "key" attribute is NOT
+	supported for <set-property> inside a <plug-in> element.
+
+     property        Name of the JavaBeans property whose setter method
+                     will be called. Exactly one of
+                     "property" or "key" must be specified.
+
+     key             Where supported, the key which will be used to store
+                     the specified value in the given config object.  Exactly one of
+                     "property" or "key" must be specified.
+
+     value           String representation of the value to which this
+                     property will be set, after suitable type conversion
+
+-->
+<!ELEMENT set-property   EMPTY>
+<!ATTLIST set-property   id             ID              #IMPLIED>
+<!ATTLIST set-property   property       %PropName;      #IMPLIED>
+<!ATTLIST set-property   key            CDATA           #IMPLIED>
+<!ATTLIST set-property   value          CDATA           #REQUIRED>
+
+
+<!-- The "small-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a small (16x16 pixel)
+     icon image.
+-->
+<!ELEMENT small-icon     (%Location;)>
+<!ATTLIST small-icon     id             ID              #IMPLIED>
+
diff --git a/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-html.tld b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-html.tld
new file mode 100644
index 0000000..e6ae871
--- /dev/null
+++ b/enterprise/web.struts/src/org/netbeans/modules/web/struts/resources/struts-html.tld
@@ -0,0 +1,9283 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    $Id: struts-html.tld 684305 2008-08-09 17:43:00Z niallp $
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+   
+         http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!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
+             <code>&lt;html:image&gt;</code> 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>dir</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The direction for weak/neutral text for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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>lang</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The language code for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</dd></dl>
+                ]]>
+            </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>dir</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The direction for weak/neutral text for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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>lang</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The language code for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</dd></dl>
+                ]]>
+            </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>dir</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The direction for weak/neutral text for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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>lang</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The language code for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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.  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>dir</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The direction for weak/neutral text for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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>lang</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The language code for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</dd></dl>
+                ]]>
+            </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>
+        <!-- autocomplete is a non-standard and not supported, uncomment to enable -->
+        <!--
+        <attribute>
+            <name>autocomplete</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+        </attribute>
+         -->
+        <attribute>
+            <name>dir</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The direction for weak/neutral text for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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>lang</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The language code for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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>
+        <body-content>JSP</body-content>
+        <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>dir</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The direction for weak/neutral text for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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>lang</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The language code for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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 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>dir</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The direction for weak/neutral text for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</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>lang</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The language code for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</dd></dl>
+                ]]>
+            </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>module</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                   <p>Prefix name of a <code>Module</code> that
+                   the <code>page</code> or <code>pageKey</code>
+                   attributes relate to.</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>dir</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The direction for weak/neutral text for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</dd></dl>
+                ]]>
+            </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>lang</name>
+            <required>false</required>
+            <rtexprvalue>true</rtexprvalue>
+            <description>
+                <![CDATA[
+                <p>The language code for this element.</p>
+                <dl><dt><b>Since:</b></dt>
+                <dd>Struts 1.3.6</dd></dl>
+                ]]>
+            </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>
... 16468 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists