You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2024/03/28 11:14:51 UTC

(tomcat) branch main updated (7d19b0f92c -> 6ae057c994)

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

markt pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


    from 7d19b0f92c Update CXF
     new 236e403177 Add the Jakarta EE 11 schema and required license file updates
     new f599ac7269 Add Jakarta EE 11  schema to the digester
     new 43b88dbf18 Fix tabs and spaces
     new 2f5fa34566 Add/update tests for the Jakarta EE 11 schema
     new 6ae057c994 Update to use Jakarta 11 Schemas

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 LICENSE                                            |   6 +
 conf/web.xml                                       |   4 +-
 .../{jakartaee_10.xsd => jakartaee_11.xsd}         | 583 ++++++++++++++++++++-
 .../servlet/resources/{jsp_3_1.xsd => jsp_4_0.xsd} |  10 +-
 .../resources/{web-app_6_0.xsd => web-app_6_1.xsd} |  10 +-
 .../{web-common_6_0.xsd => web-common_6_1.xsd}     |  20 +-
 .../{web-fragment_6_0.xsd => web-fragment_6_1.xsd} |  10 +-
 ...aglibrary_3_0.xsd => web-jsptaglibrary_4_0.xsd} |  46 +-
 .../jasper/resources/LocalStrings.properties       |   8 +-
 .../jasper/resources/LocalStrings_cs.properties    |   8 +-
 .../jasper/resources/LocalStrings_de.properties    |   8 +-
 .../jasper/resources/LocalStrings_es.properties    |   8 +-
 .../jasper/resources/LocalStrings_fr.properties    |   8 +-
 .../jasper/resources/LocalStrings_ja.properties    |   8 +-
 .../jasper/resources/LocalStrings_ko.properties    |   8 +-
 .../jasper/resources/LocalStrings_pt_BR.properties |   8 +-
 .../jasper/resources/LocalStrings_ru.properties    |   4 +-
 .../jasper/resources/LocalStrings_zh_CN.properties |   8 +-
 .../tomcat/util/descriptor/DigesterFactory.java    |   8 +
 .../tomcat/util/descriptor/XmlIdentifiers.java     |   6 +
 .../apache/tomcat/util/descriptor/web/WebXml.java  |   7 +
 res/META-INF/jasper-el.jar/web-fragment.xml        |   4 +-
 res/META-INF/jasper.jar/web-fragment.xml           |   4 +-
 res/META-INF/servlet-api.jar.license               |   6 +
 res/META-INF/tomcat-websocket.jar/web-fragment.xml |   4 +-
 res/install-win/INSTALLLICENSE                     |   6 +
 res/maven/tomcat-servlet-api.pom                   |  10 +-
 res/rat/rat-excludes.txt                           |   6 +
 .../servlet/resources/TestSchemaValidation.java    |  17 +-
 test/org/apache/jasper/TestJspC.java               |   8 +
 test/org/apache/jasper/compiler/TestJspConfig.java |  17 +
 test/org/apache/jasper/compiler/TestValidator.java |  26 +
 .../jasper/servlet/TestJspCServletContext.java     |  12 +-
 test/{tld => webapp-6.1/WEB-INF}/tags11.tld        |   0
 test/{tld => webapp-6.1/WEB-INF}/tags12.tld        |   0
 test/{tld => webapp-6.1/WEB-INF}/tags20.tld        |   0
 test/{tld => webapp-6.1/WEB-INF}/tags21.tld        |   0
 test/{webapp-5.0 => webapp-6.1}/WEB-INF/tags30.tld |   0
 test/{webapp-6.0 => webapp-6.1}/WEB-INF/tags31.tld |   0
 .../tags21.tld => webapp-6.1/WEB-INF/tags40.tld}   |   8 +-
 test/{webapp-6.0 => webapp-6.1}/WEB-INF/web.xml    |  10 +-
 test/{webapp-2.5 => webapp-6.1}/el-as-literal.jsp  |   0
 test/{webapp-6.0 => webapp-6.1}/tld-versions.jsp   |   2 +
 test/webapp/WEB-INF/web.xml                        |   4 +-
 webapps/ROOT/WEB-INF/web.xml                       |   4 +-
 webapps/docs/WEB-INF/web.xml                       |   4 +-
 webapps/docs/appdev/sample/web/WEB-INF/web.xml     |   4 +-
 webapps/docs/appdev/web.xml.txt                    |   4 +-
 webapps/docs/changelog.xml                         |   4 +
 webapps/docs/jndi-datasource-examples-howto.xml    |   4 +-
 webapps/examples/WEB-INF/web.xml                   |   4 +-
 webapps/host-manager/WEB-INF/web.xml               |   4 +-
 webapps/manager/WEB-INF/web.xml                    |   4 +-
 53 files changed, 837 insertions(+), 129 deletions(-)
 copy java/jakarta/servlet/resources/{jakartaee_10.xsd => jakartaee_11.xsd} (82%)
 copy java/jakarta/servlet/resources/{jsp_3_1.xsd => jsp_4_0.xsd} (98%)
 copy java/jakarta/servlet/resources/{web-app_6_0.xsd => web-app_6_1.xsd} (98%)
 copy java/jakarta/servlet/resources/{web-common_6_0.xsd => web-common_6_1.xsd} (99%)
 copy java/jakarta/servlet/resources/{web-fragment_6_0.xsd => web-fragment_6_1.xsd} (98%)
 copy java/jakarta/servlet/resources/{web-jsptaglibrary_3_0.xsd => web-jsptaglibrary_4_0.xsd} (96%)
 copy test/{tld => webapp-6.1/WEB-INF}/tags11.tld (100%)
 copy test/{tld => webapp-6.1/WEB-INF}/tags12.tld (100%)
 copy test/{tld => webapp-6.1/WEB-INF}/tags20.tld (100%)
 copy test/{tld => webapp-6.1/WEB-INF}/tags21.tld (100%)
 copy test/{webapp-5.0 => webapp-6.1}/WEB-INF/tags30.tld (100%)
 copy test/{webapp-6.0 => webapp-6.1}/WEB-INF/tags31.tld (100%)
 copy test/{webapp-2.3/WEB-INF/tags21.tld => webapp-6.1/WEB-INF/tags40.tld} (88%)
 copy test/{webapp-6.0 => webapp-6.1}/WEB-INF/web.xml (90%)
 copy test/{webapp-2.5 => webapp-6.1}/el-as-literal.jsp (100%)
 copy test/{webapp-6.0 => webapp-6.1}/tld-versions.jsp (92%)


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


(tomcat) 01/05: Add the Jakarta EE 11 schema and required license file updates

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 236e403177eab95f410fd4bfb34b939abe8d9bc2
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Mar 27 18:01:56 2024 +0000

    Add the Jakarta EE 11 schema and required license file updates
---
 LICENSE                                            |    6 +
 java/jakarta/servlet/resources/jakartaee_11.xsd    | 3648 ++++++++++++++++++++
 java/jakarta/servlet/resources/jsp_4_0.xsd         |  378 ++
 java/jakarta/servlet/resources/web-app_6_1.xsd     |  342 ++
 java/jakarta/servlet/resources/web-common_6_1.xsd  | 1507 ++++++++
 .../jakarta/servlet/resources/web-fragment_6_1.xsd |  316 ++
 .../servlet/resources/web-jsptaglibrary_4_0.xsd    | 1109 ++++++
 res/META-INF/servlet-api.jar.license               |    6 +
 res/install-win/INSTALLLICENSE                     |    6 +
 res/maven/tomcat-servlet-api.pom                   |   10 +-
 res/rat/rat-excludes.txt                           |    6 +
 11 files changed, 7332 insertions(+), 2 deletions(-)

diff --git a/LICENSE b/LICENSE
index 4c3277f252..1aae1dc918 100644
--- a/LICENSE
+++ b/LICENSE
@@ -214,18 +214,24 @@ For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component and the
 following Jakarta EE Schemas:
 - jakartaee_9.xsd
 - jakartaee_10.xsd
+- jakartaee_11.xsd
 - jakarta_web-services_2_0.xsd
 - jakarta_web-services_client_2_0.xsd
 - jsp_3_0.xsd
 - jsp_3_1.xsd
+- jsp_4_0.xsd
 - web-app_5_0.xsd
 - web-app_6_0.xsd
+- web-app_6_1.xsd
 - web-commonn_5_0.xsd
 - web-commonn_6_0.xsd
+- web-commonn_6_1.xsd
 - web-fragment_5_0.xsd
 - web-fragment_6_0.xsd
+- web-fragment_6_1.xsd
 - web-jsptaglibrary_3_0.xsd
 - web-jsptaglibrary_3_1.xsd
+- web-jsptaglibrary_4_0.xsd
 
 Eclipse Public License - v 2.0
 
diff --git a/java/jakarta/servlet/resources/jakartaee_11.xsd b/java/jakarta/servlet/resources/jakartaee_11.xsd
new file mode 100644
index 0000000000..78409a0194
--- /dev/null
+++ b/java/jakarta/servlet/resources/jakartaee_11.xsd
@@ -0,0 +1,3648 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="11">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following definitions that appear in the common
+      shareable schema(s) of Jakarta EE deployment descriptors should be
+      interpreted with respect to the context they are included:
+      
+      Deployment Component may indicate one of the following:
+      Jakarta EE application;
+      application client;
+      web application;
+      enterprise bean;
+      resource adapter; 
+      
+      Deployment File may indicate one of the following:
+      ear file;
+      war file;
+      jar file;
+      rar file;
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
+              schemaLocation="https://www.w3.org/2001/xml.xsd"/>
+
+  <xsd:include schemaLocation="jakartaee_web_services_client_2_0.xsd"/>
+
+  <xsd:group name="descriptionGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained description related
+        elements consistent across Jakarta EE deployment descriptors.
+        
+        All elements may occur multiple times with different languages,
+        to support localization of the content.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="display-name"
+                   type="jakartaee:display-nameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="icon"
+                   type="jakartaee:iconType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="jndiEnvironmentRefsGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained JNDI environment
+        reference elements consistent across Jakarta EE deployment descriptors.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="env-entry"
+                   type="jakartaee:env-entryType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref"
+                   type="jakartaee:ejb-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-local-ref"
+                   type="jakartaee:ejb-local-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:group ref="jakartaee:service-refGroup"/>
+      <xsd:element name="resource-ref"
+                   type="jakartaee:resource-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref"
+                   type="jakartaee:resource-env-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref"
+                   type="jakartaee:message-destination-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref"
+                   type="jakartaee:persistence-context-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref"
+                   type="jakartaee:persistence-unit-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="post-construct"
+                   type="jakartaee:lifecycle-callbackType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="pre-destroy"
+                   type="jakartaee:lifecycle-callbackType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="data-source"
+                   type="jakartaee:data-sourceType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="jms-connection-factory"
+                   type="jakartaee:jms-connection-factoryType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="jms-destination"
+                   type="jakartaee:jms-destinationType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="mail-session"
+                   type="jakartaee:mail-sessionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="connection-factory"
+                   type="jakartaee:connection-factory-resourceType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="administered-object"
+                   type="jakartaee:administered-objectType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="context-service"
+                   type="jakartaee:context-serviceType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="managed-executor"
+                   type="jakartaee:managed-executorType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="managed-scheduled-executor"
+                   type="jakartaee:managed-scheduled-executorType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="managed-thread-factory"
+                   type="jakartaee:managed-thread-factoryType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="resourceGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to most
+        JNDI resource elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:resourceBaseGroup"/>
+      <xsd:element name="lookup-name"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The JNDI name to be looked up to resolve a resource reference.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:group>
+
+  <xsd:group name="resourceBaseGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to all the
+        JNDI resource elements. It does not include the lookup-name
+        element, that is only applicable to some resource elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="mapped-name"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A product specific name that this resource should be
+            mapped to.  The name of this resource, as defined by the
+            resource's name element or defaulted, is a name that is
+            local to the application component using the resource.
+            (It's a name in the JNDI java:comp/env namespace.)  Many
+            application servers provide a way to map these local
+            names to names of resources known to the application
+            server.  This mapped name is often a global JNDI name,
+            but may be a name of any form.
+            
+            Application servers are not required to support any
+            particular form or type of mapped name, nor the ability
+            to use mapped names.  The mapped name is
+            product-dependent and often installation-dependent.  No
+            use of a mapped name is portable.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="injection-target"
+                   type="jakartaee:injection-targetType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="administered-objectType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of an administered object.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this administered object.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            administered object being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The administered object's interface type.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The administered object's class name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Property of the administered object property.  This may be a 
+            vendor-specific property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="connection-factory-resourceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Connector Connection Factory resource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this resource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            resource being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The fully qualified class name of the connection factory 
+            interface. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transaction-support"
+                   type="jakartaee:transaction-supportType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The level of transaction support the connection factory 
+            needs to support. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource property.  This may be a vendor-specific
+            property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="context-serviceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a ContextService.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this ContextService.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JNDI name of the ContextService instance being defined.
+            The JNDI name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="qualifier"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A ContextService injection point annotated with these qualifier annotations
+            injects a bean that is produced by this context-service element.
+            Applications can define their own Producers for ContextService injection points 
+            as long as the qualifier annotations on the producer do not conflict with the 
+            non-empty qualifier list of a context-service.
+            
+            You can specify a single qualifier element with no value to indicate an
+            empty list of qualifier annotation classes.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="cleared"
+                   type="jakartaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Types of context to clear whenever a thread runs a
+            contextual task or action. The thread's previous context
+            is restored afterward. Context types that are defined by
+            the Jakarta EE Concurrency specification include:
+            Application, Security, Transaction,
+            and Remaining, which means all available thread context
+            types that are not specified elsewhere. You can also specify
+            vendor-specific context types. Absent other configuration,
+            cleared context defaults to Transaction. You can specify
+            a single cleared element with no value to indicate an
+            empty list of context types to clear. If neither
+            propagated nor unchanged specify (or default to) Remaining,
+            then Remaining is automatically appended to the list of
+            cleared context types.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="propagated"
+                   type="jakartaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Types of context to capture from the requesting thread
+            and propagate to a thread that runs a contextual task
+            or action. The captured context is re-established
+            when threads run the contextual task or action,
+            with the respective thread's previous context being
+            restored afterward. Context types that are defined by
+            the Jakarta EE Concurrency specification include:
+            Application, Security,
+            and Remaining, which means all available thread context
+            types that are not specified elsewhere. You can also specify
+            vendor-specific context types. Absent other configuration,
+            propagated context defaults to Remaining. You can specify
+            a single propagated element with no value to indicate that
+            no context types should be propagated.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="unchanged"
+                   type="jakartaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Types of context that are left alone when a thread runs a
+            contextual task or action. Context types that are defined
+            by the Jakarta EE Concurrency specification include:
+            Application, Security, Transaction,
+            and Remaining, which means all available thread context
+            types that are not specified elsewhere. You can also specify
+            vendor-specific context types. Absent other configuration,
+            unchanged context defaults to empty. You can specify
+            a single unchanged element with no value to indicate that
+            no context types should be left unchanged.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Vendor-specific property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="data-sourceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a DataSource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this DataSource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            data source being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            DataSource, XADataSource or ConnectionPoolDataSource
+            implementation class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="server-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Database server name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-number"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Port number where a server is listening for requests.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="database-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Name of a database on a server.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="url"
+                   type="jakartaee:jdbc-urlType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            A JDBC URL. If the <code>url</code> property is specified
+            along with other standard <code>DataSource</code> properties
+            such as <code>serverName</code>, <code>databaseName</code>
+            and <code>portNumber</code>, the more specific properties will
+            take precedence and <code>url</code> will be ignored.
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            User name to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JDBC DataSource property.  This may be a vendor-specific
+            property or a less commonly used DataSource property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="login-timeout"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Sets the maximum time in seconds that this data source
+            will wait while attempting to connect to a database.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transactional"
+                   type="jakartaee:xsdBooleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Set to false if connections should not participate in
+            transactions.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="isolation-level"
+                   type="jakartaee:isolation-levelType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Isolation level for connections.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="initial-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Number of connections that should be created when a
+            connection pool is initialized.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-idle-time"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The number of seconds that a physical connection should
+            remain unused in the pool before the connection is
+            closed for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-statements"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The total number of statements that a connection pool
+            should keep open.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="descriptionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The description type is used by a description element to
+        provide text describing the parent element.  The elements
+        that use this type should include any information that the
+        Deployment Component's Deployment File file producer wants
+        to provide to the consumer of the Deployment Component's
+        Deployment File (i.e., to the Deployer). Typically, the
+        tools used by such a Deployment File consumer will display
+        the description when processing the parent element that
+        contains the description.
+        
+        The lang attribute defines the language that the
+        description is provided in. The default value is "en" (English). 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:xsdStringType">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="dewey-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines a dewey decimal that is used
+        to describe versions of documents. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\.?[0-9]+(\.[0-9]+)*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="display-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The display-name type contains a short name that is intended
+        to be displayed by tools. It is used by display-name
+        elements.  The display name need not be unique.
+        
+        Example: 
+        
+        ...
+        <display-name xml:lang="en">
+        Employee Self Service
+        </display-name>
+        
+        The value of the xml:lang attribute is "en" (English) by default. 
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:string">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The ejb-linkType is used by ejb-link
+        elements in the ejb-ref or ejb-local-ref elements to specify
+        that an enterprise bean reference is linked to enterprise bean.
+        
+        The value of the ejb-link element must be the ejb-name of an
+        enterprise bean in the same ejb-jar file or in another ejb-jar
+        file in the same Jakarta EE application unit. 
+        
+        Alternatively, the name in the ejb-link element may be
+        composed of a path name specifying the ejb-jar containing the
+        referenced enterprise bean with the ejb-name of the target
+        bean appended and separated from the path name by "#".  The
+        path name is relative to the Deployment File containing
+        Deployment Component that is referencing the enterprise
+        bean.  This allows multiple enterprise beans with the same
+        ejb-name to be uniquely identified.
+        
+        Examples:
+        
+        <ejb-link>EmployeeRecord</ejb-link>
+        
+        <ejb-link>../products/product.jar#ProductEJB</ejb-link>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-local-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-local-refType is used by ejb-local-ref elements for
+        the declaration of a reference to an enterprise bean's local
+        home or to the local business interface of a 3.0 bean.
+        The declaration consists of:
+        
+        - an optional description
+        - the enterprise bean's reference name used in the code of the 
+        Deployment Component that's referencing the enterprise bean.
+        - the optional expected type of the referenced enterprise bean
+        - the optional expected local interface of the referenced 
+        enterprise bean or the local business interface of the 
+        referenced enterprise bean.
+        - the optional expected local home interface of the referenced 
+        enterprise bean. Not applicable if this ejb-local-ref refers
+        to the local business interface of a 3.0 bean.
+        - optional ejb-link information, used to specify the 
+        referenced enterprise bean
+        - optional elements to define injection of the named enterprise  
+        bean into a component field or property.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name"
+                   type="jakartaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type"
+                   type="jakartaee:ejb-ref-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="local-home"
+                   type="jakartaee:local-homeType"
+                   minOccurs="0"/>
+      <xsd:element name="local"
+                   type="jakartaee:localType"
+                   minOccurs="0"/>
+      <xsd:element name="ejb-link"
+                   type="jakartaee:ejb-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The ejb-ref-name element contains the name of an enterprise bean reference. 
+        The enterprise bean reference is an entry in the Deployment Component's 
+        environment and is relative to the java:comp/env context.  The name must 
+        be unique within the Deployment Component.
+        
+        It is recommended that name is prefixed with "ejb/".
+        
+        Example:
+        
+        <ejb-ref-name>ejb/Payroll</ejb-ref-name>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:jndi-nameType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-refType is used by ejb-ref elements for the
+        declaration of a reference to an enterprise bean's home or
+        to the remote business interface of a 3.0 bean.  
+        The declaration consists of:
+        
+        - an optional description
+        - the enterprise bean's reference name used in the code of
+        the Deployment Component that's referencing the enterprise
+        bean. 
+        - the optional expected type of the referenced enterprise bean
+        - the optional remote interface of the referenced enterprise bean
+        or the remote business interface of the referenced enterprise 
+        bean
+        - the optional expected home interface of the referenced 
+        enterprise bean.  Not applicable if this ejb-ref
+        refers to the remote business interface of a 3.0 bean.
+        - optional ejb-link information, used to specify the
+        referenced enterprise bean
+        - optional elements to define injection of the named enterprise
+        bean into a component field or property
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name"
+                   type="jakartaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type"
+                   type="jakartaee:ejb-ref-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="home"
+                   type="jakartaee:homeType"
+                   minOccurs="0"/>
+      <xsd:element name="remote"
+                   type="jakartaee:remoteType"
+                   minOccurs="0"/>
+      <xsd:element name="ejb-link"
+                   type="jakartaee:ejb-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-ref-typeType contains the expected type of the
+        referenced enterprise bean.
+        
+        The ejb-ref-type designates a value
+        that must be one of the following:
+        
+        Entity
+        Session
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Entity"/>
+        <xsd:enumeration value="Session"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="emptyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is used to designate an empty
+        element when used. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="env-entryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The env-entryType is used to declare an application's
+        environment entry. The declaration consists of an optional
+        description, the name of the environment entry, a type
+        (optional if the value is injected, otherwise required), and
+        an optional value.
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        If a value is not specified and injection is requested,
+        no injection will occur and no entry of the specified name
+        will be created.  This allows an initial value to be
+        specified in the source code without being incorrectly
+        changed when no override has been specified.
+        
+        If a value is not specified and no injection is requested,
+        a value must be supplied during deployment. 
+        
+        This type is used by env-entry elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="env-entry-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The env-entry-name element contains the name of a
+            Deployment Component's environment entry.  The name
+            is a JNDI name relative to the java:comp/env
+            context.  The name must be unique within a 
+            Deployment Component. The uniqueness
+            constraints must be defined within the declared
+            context.
+            
+            Example:
+            
+            <env-entry-name>minAmount</env-entry-name>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry-type"
+                   type="jakartaee:env-entry-type-valuesType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The env-entry-type element contains the Java language
+            type of the environment entry.  If an injection target
+            is specified for the environment entry, the type may
+            be omitted, or must match the type of the injection
+            target.  If no injection target is specified, the type
+            is required.
+            
+            Example:
+            
+            <env-entry-type>java.lang.Integer</env-entry-type>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry-value"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The env-entry-value designates the value of a
+            Deployment Component's environment entry. The value
+            must be a String that is valid for the
+            constructor of the specified type that takes a
+            single String parameter, or for java.lang.Character,
+            a single character.
+            
+            Example:
+            
+            <env-entry-value>100.00</env-entry-value>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="env-entry-type-valuesType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        This type contains the fully-qualified Java type of the
+        environment entry value that is expected by the
+        application's code.
+        
+        The following are the legal values of env-entry-type-valuesType:
+        
+        java.lang.Boolean
+        java.lang.Byte
+        java.lang.Character
+        java.lang.String
+        java.lang.Short
+        java.lang.Integer
+        java.lang.Long
+        java.lang.Float
+        java.lang.Double
+        		  java.lang.Class
+        		  any enumeration type (i.e. a subclass of java.lang.Enum)
+        
+        Examples:
+        
+        <env-entry-type>java.lang.Boolean</env-entry-type>
+        <env-entry-type>java.lang.Class</env-entry-type>
+        <env-entry-type>com.example.Color</env-entry-type>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="fully-qualified-classType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate the name of a
+        Java class or interface.  The name is in the form of a
+        "binary name", as defined in the JLS.  This is the form
+        of name used in Class.forName().  Tools that need the
+        canonical name (the name used in source code) will need
+        to convert this binary name to the canonical name.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="generic-booleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines four different values which can designate
+        boolean values. This includes values yes and no which are 
+        not designated by xsd:boolean
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="true"/>
+        <xsd:enumeration value="false"/>
+        <xsd:enumeration value="yes"/>
+        <xsd:enumeration value="no"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="iconType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The icon type contains small-icon and large-icon elements
+        that specify the file names for small and large GIF, JPEG,
+        or PNG icon images used to represent the parent element in a
+        GUI tool. 
+        
+        The xml:lang attribute defines the language that the
+        icon file names are provided in. Its value is "en" (English)
+        by default. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="small-icon"
+                   type="jakartaee:pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The small-icon element contains the name of a file
+            containing a small (16 x 16) icon image. The file
+            name is a relative path within the Deployment
+            Component's Deployment File.
+            
+            The image may be in the GIF, JPEG, or PNG format.
+            The icon can be used by tools.
+            
+            Example:
+            
+            <small-icon>employee-service-icon16x16.jpg</small-icon>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="large-icon"
+                   type="jakartaee:pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            The large-icon element contains the name of a file
+            containing a large
+            (32 x 32) icon image. The file name is a relative 
+            path within the Deployment Component's Deployment
+            File.
+            
+            The image may be in the GIF, JPEG, or PNG format.
+            The icon can be used by tools.
+            
+            Example:
+            
+            <large-icon>employee-service-icon32x32.jpg</large-icon>
+            
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="injection-targetType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        An injection target specifies a class and a name within
+        that class into which a resource should be injected.
+        
+        The injection target class specifies the fully qualified
+        class name that is the target of the injection.  The
+        Jakarta EE specifications describe which classes can be an
+        injection target.
+        
+        The injection target name specifies the target within
+        the specified class.  The target is first looked for as a
+        JavaBeans property name.  If not found, the target is
+        looked for as a field name.
+        
+        The specified resource will be injected into the target
+        during initialization of the class by either calling the
+        set method for the target property or by setting a value
+        into the named field.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="injection-target-class"
+                   type="jakartaee:fully-qualified-classType"/>
+      <xsd:element name="injection-target-name"
+                   type="jakartaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:simpleType name="isolation-levelType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        	The following transaction isolation levels are allowed
+        	(see documentation for the java.sql.Connection interface):
+        TRANSACTION_READ_UNCOMMITTED
+        TRANSACTION_READ_COMMITTED
+        TRANSACTION_REPEATABLE_READ
+        TRANSACTION_SERIALIZABLE
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="TRANSACTION_READ_UNCOMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_READ_COMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_REPEATABLE_READ"/>
+      <xsd:enumeration value="TRANSACTION_SERIALIZABLE"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="java-identifierType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The java-identifierType defines a Java identifier.
+        The users of this type should further verify that 
+        the content does not contain Java reserved keywords.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="($|_|\p{L})(\p{L}|\p{Nd}|_|$)*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="java-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a generic type that designates a Java primitive
+        type or a fully qualified name of a Java interface/type,
+        or an array of such types.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="[^\p{Z}]*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jdbc-urlType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The jdbc-urlType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 9.3 of the
+        JDBC Specification where the format is:
+        
+        jdbc:<subprotocol>:<subname>
+        
+        Example:
+        
+        <url>jdbc:mysql://localhost:3307/testdb</url>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="jdbc:(.*):(.*)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jms-connection-factoryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Messaging Connection Factory.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Messaging Connection Factory.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            messaging connection factory being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Fully-qualified name of the messaging connection factory
+            interface.  Permitted values are jakarta.jms.ConnectionFactory,
+            jakarta.jms.QueueConnectionFactory, or 
+            jakarta.jms.TopicConnectionFactory.  If not specified,
+            jakarta.jms.ConnectionFactory will be used.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Fully-qualified name of the messaging connection factory 
+            implementation class.  Ignored if a resource adapter  
+            is used.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.  If not specified, the application
+            server will define the default behavior, which may or may
+            not involve the use of a resource adapter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            User name to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password to use for connection authentication.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="client-id"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Client id to use for connection.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Messaging Connection Factory property.  This may be a vendor-specific
+            property or a less commonly used ConnectionFactory property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transactional"
+                   type="jakartaee:xsdBooleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Set to false if connections should not participate in
+            transactions.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jms-destinationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Messaging Destination.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Messaging Destination.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            messaging destination being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Fully-qualified name of the messaging destination interface.
+            Permitted values are jakarta.jms.Queue and jakarta.jms.Topic
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Fully-qualified name of the messaging destination implementation
+            class.  Ignored if a resource adapter is used unless the
+            resource adapter defines more than one destination implementation
+            class for the specified interface.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.  If not specified, the application
+            server will define the default behavior, which may or may
+            not involve the use of a resource adapter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="destination-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Name of the queue or topic.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Messaging Destination property.  This may be a vendor-specific
+            property or a less commonly used Destination property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jndi-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jndi-nameType type designates a JNDI name in the
+        Deployment Component's environment and is relative to the
+        java:comp/env context.  A JNDI name must be unique within the
+        Deployment Component.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The homeType defines the fully-qualified name of
+        an enterprise bean's home interface. 
+        
+        Example:
+        
+        <home>com.aardvark.payroll.PayrollHome</home>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="lifecycle-callbackType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The lifecycle-callback type specifies a method on a
+        class to be called when a lifecycle event occurs.
+        Note that each class may have only one lifecycle callback
+        method for any given event and that the method may not
+        be overloaded.
+        
+        If the lifefycle-callback-class element is missing then
+        the class defining the callback is assumed to be the
+        component class in scope at the place in the descriptor
+        in which the callback definition appears.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="lifecycle-callback-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0"/>
+      <xsd:element name="lifecycle-callback-method"
+                   type="jakartaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="listenerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The listenerType indicates the deployment properties for a web
+        application listener bean.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="listener-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The listener-class element declares a class in the
+            application must be registered as a web
+            application listener bean. The value is the fully
+            qualified classname of the listener class.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="localType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The localType defines the fully-qualified name of an
+        enterprise bean's local interface.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="local-homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The local-homeType defines the fully-qualified
+        name of an enterprise bean's local home interface.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mail-sessionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Mail Session resource.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Mail Session resource.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            Mail Session resource being defined.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="store-protocol"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Storage protocol.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="store-protocol-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Service provider store protocol implementation class
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transport-protocol"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Transport protocol.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transport-protocol-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Service provider transport protocol implementation class
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="host"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server host name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server user name.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="from"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Email address to indicate the message sender.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server property.  This may be a vendor-specific
+            property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="managed-executorType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a ManagedExecutorService.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this ManagedExecutorService.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JNDI name of the ManagedExecutorService instance being defined.
+            The JNDI name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="context-service-ref"
+                   type="jakartaee:jndi-nameType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Refers to the name of a ContextServiceDefinition or
+            context-service deployment descriptor element,
+            which determines how context is applied to tasks and actions
+            that run on this executor.
+            The name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            In the absence of a configured value,
+            java:comp/DefaultContextService is used.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="qualifier"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A ManagedExecutorService injection point annotated with these qualifier annotations
+            injects a bean that is produced by this managed-executor element.
+            Applications can define their own Producers for ManagedExecutorService injection points 
+            as long as the qualifier annotations on the producer do not conflict with the 
+            non-empty qualifier list of a managed-executor.
+            
+            You can specify a single qualifier element with no value to indicate an
+            empty list of qualifier annotation classes.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-async"
+                   type="jakartaee:xsdPositiveIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Upper bound on contextual tasks and actions that this executor
+            will simultaneously execute asynchronously. This constraint does
+            not apply to tasks and actions that the executor runs inline,
+            such as when a thread requests CompletableFuture.join and the
+            action runs inline if it has not yet started.
+            The default is unbounded, although still subject to
+            resource constraints of the system.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="hung-task-threshold"
+                   type="jakartaee:xsdPositiveIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The amount of time in milliseconds that a task or action
+            can execute before it is considered hung.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="virtual"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Indicates whether this executor is requested to
+            create virtual threads for tasks that do not run inline.
+            When true, the executor can create
+            virtual threads if it is capable of doing so
+            and if the request is not overridden by vendor-specific
+            configuration that restricts the use of virtual threads.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Vendor-specific property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="managed-scheduled-executorType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a ManagedScheduledExecutorService.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this ManagedScheduledExecutorService.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JNDI name of the ManagedScheduledExecutorService instance
+            being defined.
+            The JNDI name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="context-service-ref"
+                   type="jakartaee:jndi-nameType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Refers to the name of a ContextServiceDefinition or
+            context-service deployment descriptor element,
+            which determines how context is applied to tasks and actions
+            that run on this executor.
+            The name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            In the absence of a configured value,
+            java:comp/DefaultContextService is used.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="qualifier"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A ManagedScheduledExecutorService injection point annotated with these qualifier annotations
+            injects a bean that is produced by this managed-scheduled-executor element.
+            Applications can define their own Producers for ManagedScheduledExecutorService injection points 
+            as long as the qualifier annotations on the producer do not conflict with the 
+            non-empty qualifier list of a managed-scheduled-executor.
+            
+            You can specify a single qualifier element with no value to indicate an
+            empty list of qualifier annotation classes.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-async"
+                   type="jakartaee:xsdPositiveIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Upper bound on contextual tasks and actions that this executor
+            will simultaneously execute asynchronously. This constraint does
+            not apply to tasks and actions that the executor runs inline,
+            such as when a thread requests CompletableFuture.join and the
+            action runs inline if it has not yet started. This constraint also
+            does not apply to tasks that are scheduled via the schedule methods.
+            The default is unbounded, although still subject to
+            resource constraints of the system.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="hung-task-threshold"
+                   type="jakartaee:xsdPositiveIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The amount of time in milliseconds that a task or action
+            can execute before it is considered hung.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="virtual"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Indicates whether this executor is requested to
+            create virtual threads for tasks that do not run inline.
+            When true, the executor can create
+            virtual threads if it is capable of doing so
+            and if the request is not overridden by vendor-specific
+            configuration that restricts the use of virtual threads.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Vendor-specific property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="managed-thread-factoryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a ManagedThreadFactory.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this ManagedThreadFactory.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JNDI name of the ManagedThreadFactory instance being defined.
+            The JNDI name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="context-service-ref"
+                   type="jakartaee:jndi-nameType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Refers to the name of a ContextServiceDefinition or
+            context-service deployment descriptor element,
+            which determines how context is applied to threads
+            from this thread factory.
+            The name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            In the absence of a configured value,
+            java:comp/DefaultContextService is used.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="qualifier"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A ManagedThreadFactory injection point annotated with these qualifier annotations
+            injects a bean that is produced by this managed-thread-factory element.
+            Applications can define their own Producers for ManagedThreadFactory injection points 
+            as long as the qualifier annotations on the producer do not conflict with the 
+            non-empty qualifier list of a managed-thread-factory.
+            
+            You can specify a single qualifier element with no value to indicate an
+            empty list of qualifier annotation classes.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="priority"
+                   type="jakartaee:priorityType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Priority for threads created by this thread factory.
+            The default is 5 (java.lang.Thread.NORM_PRIORITY).
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="virtual"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Indicates whether this executor is requested to
+            create virtual threads for tasks that do not run inline.
+            When true, the executor can create
+            virtual threads if it is capable of doing so
+            and if the request is not overridden by vendor-specific
+            configuration that restricts the use of virtual threads.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Vendor-specific property.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="param-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is a general type that can be used to declare
+        parameter/value lists.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="param-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-name element contains the name of a
+            parameter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="param-value"
+                   type="jakartaee:xsdStringType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-value element contains the value of a
+            parameter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate either a relative
+        path or an absolute path starting with a "/".
+        
+        In elements that specify a pathname to a file within the
+        same Deployment File, relative filenames (i.e., those not
+        starting with "/") are considered relative to the root of
+        the Deployment File's namespace.  Absolute filenames (i.e.,
+        those starting with "/") also specify names in the root of
+        the Deployment File's namespace.  In general, relative names
+        are preferred.  The exception is .war files where absolute
+        names are preferred for consistency with the Servlet API.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The persistence-context-ref element contains a declaration
+        of Deployment Component's reference to a persistence context
+        associated within a Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the persistence context reference name
+        - an optional persistence unit name.  If not specified,
+        the default persistence unit is assumed.
+        - an optional specification as to whether
+        the persistence context type is Transaction or
+        Extended.  If not specified, Transaction is assumed.
+        - an optional specification as to whether
+        the persistence context synchronization with the current
+        transaction is Synchronized or Unsynchronized. If not
+        specified, Synchronized is assumed.
+        - an optional list of persistence properties
+        - optional injection targets
+        
+        Examples:
+        
+        <persistence-context-ref>
+        <persistence-context-ref-name>myPersistenceContext
+        </persistence-context-ref-name>
+        </persistence-context-ref>
+        
+        <persistence-context-ref>
+        <persistence-context-ref-name>myPersistenceContext
+        </persistence-context-ref-name>
+        <persistence-unit-name>PersistenceUnit1
+        </persistence-unit-name>
+        <persistence-context-type>Extended</persistence-context-type>
+        </persistence-context-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-context-ref-name element specifies
+            the name of a persistence context reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Jakarta EE application.
+            
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-context-type"
+                   type="jakartaee:persistence-context-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="persistence-context-synchronization"
+                   type="jakartaee:persistence-context-synchronizationType"
+                   minOccurs="0"/>
+      <xsd:element name="persistence-property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Used to specify properties for the container or persistence
+            provider.  Vendor-specific properties may be included in
+            the set of properties.  Properties that are not recognized
+            by a vendor must be ignored.  Entries that make use of the 
+            namespace jakarta.persistence and its subnamespaces must not
+            be used for vendor-specific properties.  The namespace
+            jakarta.persistence is reserved for use by the specification.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="jakartaee:resourceBaseGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-synchronizationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The persistence-context-synchronizationType specifies 
+        whether a container-managed persistence context is automatically
+        synchronized with the current transaction.
+        
+        The value of the persistence-context-synchronization element 
+        must be one of the following:
+        Synchronized
+        Unsynchronized
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Synchronized"/>
+        <xsd:enumeration value="Unsynchronized"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The persistence-context-typeType specifies the transactional
+        nature of a persistence context reference.  
+        
+        The value of the persistence-context-type element must be
+        one of the following:
+        Transaction
+        Extended
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Transaction"/>
+        <xsd:enumeration value="Extended"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="priorityType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Specifies a thread priority value in the range of
+        1 (java.lang.Thread.MIN_PRIORITY) to 10 (java.lang.Thread.MAX_PRIORITY).
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:xsdPositiveIntegerType">
+        <xsd:maxInclusive value="10"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="propertyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Specifies a name/value pair.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:xsdStringType">
+      </xsd:element>
+      <xsd:element name="value"
+                   type="jakartaee:xsdStringType">
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-unit-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The persistence-unit-ref element contains a declaration
+        of Deployment Component's reference to a persistence unit
+        associated within a Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the persistence unit reference name
+        - an optional persistence unit name.  If not specified,
+        the default persistence unit is assumed.
+        - optional injection targets
+        
+        Examples:
+        
+        <persistence-unit-ref>
+        <persistence-unit-ref-name>myPersistenceUnit
+        </persistence-unit-ref-name>
+        </persistence-unit-ref>
+        
+        <persistence-unit-ref>
+        <persistence-unit-ref-name>myPersistenceUnit
+        </persistence-unit-ref-name>
+        <persistence-unit-name>PersistenceUnit1
+        </persistence-unit-name>
+        </persistence-unit-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-unit-ref-name element specifies
+            the name of a persistence unit reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Jakarta EE application.
+            
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="jakartaee:resourceBaseGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="remoteType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The remote element contains the fully-qualified name
+        of the enterprise bean's remote interface.
+        
+        Example:
+        
+        <remote>com.wombat.empl.EmployeeService</remote>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="resource-env-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The resource-env-refType is used to define
+        resource-env-ref elements.  It contains a declaration of a
+        Deployment Component's reference to an administered object
+        associated with a resource in the Deployment Component's
+        environment.  It consists of an optional description, the
+        resource environment reference name, and an optional
+        indication of the resource environment reference type
+        expected by the Deployment Component code.
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        The resource environment type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Example:
+        
+        <resource-env-ref>
+        <resource-env-ref-name>jms/StockQueue
+        </resource-env-ref-name>
+        <resource-env-ref-type>jakarta.jms.Queue
+        </resource-env-ref-type>
+        </resource-env-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-name element specifies the name
+            of a resource environment reference; its value is
+            the environment entry name used in
+            the Deployment Component code.  The name is a JNDI 
+            name relative to the java:comp/env context and must 
+            be unique within a Deployment Component.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-env-ref-type"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-type element specifies the type
+            of a resource environment reference.  It is the
+            fully qualified name of a Java language class or
+            interface.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="resource-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The resource-refType contains a declaration of a
+        Deployment Component's reference to an external resource. It
+        consists of an optional description, the resource manager
+        connection factory reference name, an optional indication of
+        the resource manager connection factory type expected by the
+        Deployment Component code, an optional type of authentication
+        (Application or Container), and an optional specification of
+        the shareability of connections obtained from the resource
+        (Shareable or Unshareable).
+        
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+        
+        The connection factory type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Example:
+        
+        <resource-ref>
+        <res-ref-name>jdbc/EmployeeAppDB</res-ref-name>
+        <res-type>javax.sql.DataSource</res-type>
+        <res-auth>Container</res-auth>
+        <res-sharing-scope>Shareable</res-sharing-scope>
+        </resource-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="res-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-ref-name element specifies the name of a
+            resource manager connection factory reference.
+            The name is a JNDI name relative to the
+            java:comp/env context.  
+            The name must be unique within a Deployment File. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="res-type"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-type element specifies the type of the data
+            source. The type is specified by the fully qualified
+            Java language class or interface
+            expected to be implemented by the data source.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="res-auth"
+                   type="jakartaee:res-authType"
+                   minOccurs="0"/>
+      <xsd:element name="res-sharing-scope"
+                   type="jakartaee:res-sharing-scopeType"
+                   minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="res-authType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-authType specifies whether the Deployment Component
+        code signs on programmatically to the resource manager, or
+        whether the Container will sign on to the resource manager
+        on behalf of the Deployment Component. In the latter case,
+        the Container uses information that is supplied by the
+        Deployer.
+        
+        The value must be one of the two following:
+        
+        Application
+        Container
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Application"/>
+        <xsd:enumeration value="Container"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="res-sharing-scopeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-sharing-scope type specifies whether connections
+        obtained through the given resource manager connection
+        factory reference can be shared. The value, if specified,
+        must be one of the two following:
+        
+        Shareable
+        Unshareable
+        
+        The default value is Shareable.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Shareable"/>
+        <xsd:enumeration value="Unshareable"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="run-asType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The run-asType specifies the run-as identity to be
+        used for the execution of a component. It contains an 
+        optional description, and the name of a security role.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="jakartaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="role-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The role-nameType designates the name of a security role.
+        
+        The name must conform to the lexical rules for a token.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-roleType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The security-roleType contains the definition of a security
+        role. The definition consists of an optional description of
+        the security role, and the security role name.
+        
+        Example:
+        
+        <security-role>
+        <description>
+        This role includes all employees who are authorized
+        to access the employee service application.
+        </description>
+        <role-name>employee</role-name>
+        </security-role>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="jakartaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-role-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The security-role-refType contains the declaration of a
+        security role reference in a component's or a
+        Deployment Component's code. The declaration consists of an
+        optional description, the security role name used in the
+        code, and an optional link to a security role. If the
+        security role is not specified, the Deployer must choose an
+        appropriate security role.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="jakartaee:role-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The value of the role-name element must be the String used
+            as the parameter to the 
+            EJBContext.isCallerInRole(String roleName) method or the
+            HttpServletRequest.isUserInRole(String role) method.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="role-link"
+                   type="jakartaee:role-nameType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The role-link element is a reference to a defined
+            security role. The role-link element must contain
+            the name of one of the security roles defined in the
+            security-role elements.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdQNameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:QName.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:QName">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdBooleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:boolean.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:boolean">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdNMTOKENType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:NMTOKEN.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:NMTOKEN">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdAnyURIType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:anyURI.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:anyURI">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:integer.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:integer">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdPositiveIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:positiveInteger.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:positiveInteger">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdNonNegativeIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:nonNegativeInteger.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:nonNegativeInteger">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="xsdStringType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:string.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="string">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a special string datatype that is defined by Jakarta EE as
+        a base type for defining collapsed strings. When schemas
+        require trailing/leading space elimination as well as
+        collapsing the existing whitespace, this base type may be
+        used.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:token">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="true-falseType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This simple type designates a boolean with only two
+        permissible values
+        
+        - true
+        - false
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:xsdBooleanType">
+        <xsd:pattern value="(true|false)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="url-patternType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The url-patternType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 11.2 of the
+        Servlet API Specification. This pattern is assumed to be in
+        URL-decoded form and must not contain CR(#xD) or LF(#xA).
+        If it contains those characters, the container must inform
+        the developer with a descriptive error message.
+        The container must preserve all characters including whitespaces.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destinationType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The message-destinationType specifies a message
+        destination. The logical destination described by this
+        element is mapped to a physical destination by the Deployer.
+        
+        The message destination element contains: 
+        
+        - an optional description
+        - an optional display-name
+        - an optional icon
+        - a message destination name which must be unique
+        among message destination names within the same 
+        Deployment File. 
+        - an optional mapped name
+        - an optional lookup name
+        
+        Example: 
+        
+        <message-destination>
+        <message-destination-name>CorporateStocks
+        </message-destination-name>
+        </message-destination>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="message-destination-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-name element specifies a
+            name for a message destination.  This name must be
+            unique among the names of message destinations
+            within the Deployment File.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="mapped-name"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A product specific name that this message destination
+            should be mapped to.  Each message-destination-ref
+            element that references this message destination will
+            define a name in the namespace of the referencing
+            component or in one of the other predefined namespaces. 
+            Many application servers provide a way to map these
+            local names to names of resources known to the
+            application server.  This mapped name is often a global
+            JNDI name, but may be a name of any form.  Each of the
+            local names should be mapped to this same global name.
+            
+            Application servers are not required to support any
+            particular form or type of mapped name, nor the ability
+            to use mapped names.  The mapped name is
+            product-dependent and often installation-dependent.  No
+            use of a mapped name is portable.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="lookup-name"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The JNDI name to be looked up to resolve the message destination.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The message-destination-ref element contains a declaration
+        of Deployment Component's reference to a message destination
+        associated with a resource in Deployment Component's
+        environment. It consists of:
+        
+        - an optional description
+        - the message destination reference name
+        - an optional message destination type
+        - an optional specification as to whether
+        the destination is used for 
+        consuming or producing messages, or both.
+        if not specified, "both" is assumed.
+        - an optional link to the message destination
+        - optional injection targets
+        
+        The message destination type must be supplied unless an
+        injection target is specified, in which case the type
+        of the target is used.  If both are specified, the type
+        must be assignment compatible with the type of the injection
+        target.
+        
+        Examples:
+        
+        <message-destination-ref>
+        <message-destination-ref-name>jms/StockQueue
+        </message-destination-ref-name>
+        <message-destination-type>jakarta.jms.Queue
+        </message-destination-type>
+        <message-destination-usage>Consumes
+        </message-destination-usage>
+        <message-destination-link>CorporateStocks
+        </message-destination-link>
+        </message-destination-ref>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-ref-name element specifies
+            the name of a message destination reference; its
+            value is the environment entry name used in
+            Deployment Component code.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="message-destination-type"
+                   type="jakartaee:message-destination-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="message-destination-usage"
+                   type="jakartaee:message-destination-usageType"
+                   minOccurs="0"/>
+      <xsd:element name="message-destination-link"
+                   type="jakartaee:message-destination-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-usageType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-usageType specifies the use of the
+        message destination indicated by the reference.  The value
+        indicates whether messages are consumed from the message
+        destination, produced for the destination, or both.  The
+        Assembler makes use of this information in linking producers
+        of a destination with its consumers.
+        
+        The value of the message-destination-usage element must be
+        one of the following:
+        Consumes
+        Produces
+        ConsumesProduces
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Consumes"/>
+        <xsd:enumeration value="Produces"/>
+        <xsd:enumeration value="ConsumesProduces"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        The message-destination-typeType specifies the type of
+        the destination. The type is specified by the Java interface
+        expected to be implemented by the destination.
+        
+        Example: 
+        
+        <message-destination-type>jakarta.jms.Queue
+        </message-destination-type>
+        
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-linkType is used to link a message
+        destination reference or message-driven bean to a message
+        destination.
+        
+        The Assembler sets the value to reflect the flow of messages
+        between producers and consumers in the application.
+        
+        The value must be the message-destination-name of a message
+        destination in the same Deployment File or in another
+        Deployment File in the same Jakarta EE application unit.
+        
+        Alternatively, the value may be composed of a path name
+        specifying a Deployment File containing the referenced
+        message destination with the message-destination-name of the
+        destination appended and separated from the path name by
+        "#". The path name is relative to the Deployment File
+        containing Deployment Component that is referencing the
+        message destination.  This allows multiple message
+        destinations with the same name to be uniquely identified.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="transaction-supportType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The transaction-supportType specifies the level of
+        transaction support provided by the resource adapter. It is
+        used by transaction-support elements.
+        
+        The value must be one of the following:
+        
+        NoTransaction
+        LocalTransaction
+        XATransaction
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="NoTransaction"/>
+        <xsd:enumeration value="LocalTransaction"/>
+        <xsd:enumeration value="XATransaction"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/java/jakarta/servlet/resources/jsp_4_0.xsd b/java/jakarta/servlet/resources/jsp_4_0.xsd
new file mode 100644
index 0000000000..ef4460b30a
--- /dev/null
+++ b/java/jakarta/servlet/resources/jsp_4_0.xsd
@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="4.0">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      This is the XML Schema for the JSP 4.0 deployment descriptor
+      types.  The JSP 4.0 schema contains all the special
+      structures and datatypes that are necessary to use JSP files
+      from a web application. 
+      
+      The contents of this schema is used by the web-common_6_1.xsd 
+      file to define JSP specific content. 
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="jakartaee_11.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jsp-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jsp-configType is used to provide global configuration
+        information for the JSP files in a web application. It has
+        two subelements, taglib and jsp-property-group.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="taglib"
+                   type="jakartaee:taglibType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="jsp-property-group"
+                   type="jakartaee:jsp-property-groupType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jsp-fileType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jsp-file element contains the full path to a JSP file
+        within the web application beginning with a `/'.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:pathType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jsp-property-groupType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jsp-property-groupType is used to group a number of
+        files so they can be given global property information.
+        All files so described are deemed to be JSP files.  The
+        following additional properties can be described:
+        
+        - Control whether EL is ignored.
+        - Control whether scripting elements are invalid.
+        - Indicate pageEncoding information.
+        - Indicate that a resource is a JSP document (XML).
+        - Prelude and Coda automatic includes.
+        - Control whether the character sequence #{ is allowed
+        when used as a String literal.
+        - Control whether template text containing only
+        whitespaces must be removed from the response output.
+        - Indicate the default contentType information.
+        - Indicate the default buffering model for JspWriter
+        - Control whether error should be raised for the use of
+        undeclared namespaces in a JSP page.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="url-pattern"
+                   type="jakartaee:url-patternType"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="el-ignored"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Can be used to easily set the isELIgnored
+            property of a group of JSP pages.  By default, the
+            EL evaluation is enabled for Web Applications using
+            a Servlet 2.4 or greater web.xml, and disabled
+            otherwise.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="error-on-el-not-found"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Can be used to easily set the errorOnELNotFound
+            property of a group of JSP pages. By default, this
+            property is false.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="page-encoding"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The valid values of page-encoding are those of the
+            pageEncoding page directive.  It is a
+            translation-time error to name different encodings
+            in the pageEncoding attribute of the page directive
+            of a JSP page and in a JSP configuration element
+            matching the page.  It is also a translation-time
+            error to name different encodings in the prolog
+            or text declaration of a document in XML syntax and
+            in a JSP configuration element matching the document.
+            It is legal to name the same encoding through
+            mulitple mechanisms.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="scripting-invalid"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Can be used to easily disable scripting in a
+            group of JSP pages.  By default, scripting is
+            enabled.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="is-xml"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            If true, denotes that the group of resources
+            that match the URL pattern are JSP documents,
+            and thus must be interpreted as XML documents.
+            If false, the resources are assumed to not
+            be JSP documents, unless there is another
+            property group that indicates otherwise.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="include-prelude"
+                   type="jakartaee:pathType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The include-prelude element is a context-relative
+            path that must correspond to an element in the
+            Web Application.  When the element is present,
+            the given path will be automatically included (as
+            in an include directive) at the beginning of each
+            JSP page in this jsp-property-group.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="include-coda"
+                   type="jakartaee:pathType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The include-coda element is a context-relative
+            path that must correspond to an element in the
+            Web Application.  When the element is present,
+            the given path will be automatically included (as
+            in an include directive) at the end of each
+            JSP page in this jsp-property-group.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="deferred-syntax-allowed-as-literal"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The character sequence #{ is reserved for EL expressions.
+            Consequently, a translation error occurs if the #{
+            character sequence is used as a String literal, unless
+            this element is enabled (true). Disabled (false) by
+            default.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="trim-directive-whitespaces"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Indicates that template text containing only whitespaces
+            must be removed from the response output. It has no
+            effect on JSP documents (XML syntax). Disabled (false)
+            by default.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-content-type"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The valid values of default-content-type are those of the
+            contentType page directive.  It specifies the default
+            response contentType if the page directive does not include
+            a contentType attribute.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="buffer"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The valid values of buffer are those of the
+            buffer page directive.  It specifies if buffering should be
+            used for the output to response, and if so, the size of the
+            buffer to use.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="error-on-undeclared-namespace"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The default behavior when a tag with unknown namespace is used
+            in a JSP page (regular syntax) is to silently ignore it.  If
+            set to true, then an error must be raised during the translation
+            time when an undeclared tag is used in a JSP page.  Disabled
+            (false) by default.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="taglibType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The taglibType defines the syntax for declaring in
+        the deployment descriptor that a tag library is
+        available to the application.  This can be done
+        to override implicit map entries from TLD files and
+        from the container.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="taglib-uri"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A taglib-uri element describes a URI identifying a
+            tag library used in the web application.  The body
+            of the taglib-uri element may be either an
+            absolute URI specification, or a relative URI.
+            There should be no entries in web.xml with the
+            same taglib-uri value.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="taglib-location"
+                   type="jakartaee:pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            the taglib-location element contains the location
+            (as a resource relative to the root of the web
+            application) where to find the Tag Library
+            Description file for the tag library.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/java/jakarta/servlet/resources/web-app_6_1.xsd b/java/jakarta/servlet/resources/web-app_6_1.xsd
new file mode 100644
index 0000000000..5b8861d4e1
--- /dev/null
+++ b/java/jakarta/servlet/resources/web-app_6_1.xsd
@@ -0,0 +1,342 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="6.1">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the XML Schema for the Servlet 6.1 deployment descriptor.
+      The deployment descriptor must be named "WEB-INF/web.xml" in the
+      web application's war file.  All Servlet deployment descriptors
+      must indicate the web application schema by using the Jakarta EE
+      namespace:
+      
+      https://jakarta.ee/xml/ns/jakartaee
+      
+      and by indicating the version of the schema by
+      using the version element as shown below:
+      
+      <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="..."
+      version="6.1">
+      ...
+      </web-app>
+      
+      The instance documents may indicate the published version of
+      the schema using the xsi:schemaLocation attribute for Jakarta EE
+      namespace with the following location:
+      
+      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="web-common_6_1.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="web-app"
+               type="jakartaee:web-appType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The web-app element is the root of the deployment
+        descriptor for a web application.  Note that the sub-elements
+        of this element can be in the arbitrary order. Because of
+        that, the multiplicity of the elements of distributable,
+        session-config, welcome-file-list, jsp-config, login-config,
+        and locale-encoding-mapping-list was changed from "?" to "*"
+        in this schema.  However, the deployment descriptor instance
+        file must not contain multiple elements of session-config,
+        jsp-config, and login-config. When there are multiple elements of
+        welcome-file-list or locale-encoding-mapping-list, the container
+        must concatenate the element contents.  The multiple occurence
+        of the element distributable is redundant and the container
+        treats that case exactly in the same way when there is only
+        one distributable.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:unique name="web-common-servlet-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The servlet element contains the name of a servlet.
+          The name must be unique within the web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:servlet"/>
+      <xsd:field xpath="jakartaee:servlet-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-filter-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The filter element contains the name of a filter.
+          The name must be unique within the web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:filter"/>
+      <xsd:field xpath="jakartaee:filter-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-ejb-local-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-local-ref-name element contains the name of an 
+          enterprise bean reference. The enterprise 
+          bean reference is an entry in the web
+          application's environment and is relative to the
+          java:comp/env context.  The name must be unique within
+          the web application.
+          
+          It is recommended that name is prefixed with "ejb/".
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-local-ref"/>
+      <xsd:field xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-ejb-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-ref-name element contains the name of an 
+          enterprise bean reference. The enterprise bean 
+          reference is an entry in the web application's environment 
+          and is relative to the java:comp/env context.  
+          The name must be unique within the web application.
+          
+          It is recommended that name is prefixed with "ejb/".
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-ref"/>
+      <xsd:field xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-resource-env-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The resource-env-ref-name element specifies the name of
+          a resource environment reference; its value is the
+          environment entry name used in the web application code.
+          The name is a JNDI name relative to the java:comp/env
+          context and must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-env-ref"/>
+      <xsd:field xpath="jakartaee:resource-env-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-message-destination-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The message-destination-ref-name element specifies the name of
+          a message destination reference; its value is the
+          environment entry name used in the web application code.
+          The name is a JNDI name relative to the java:comp/env
+          context and must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:message-destination-ref"/>
+      <xsd:field xpath="jakartaee:message-destination-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-res-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The res-ref-name element specifies the name of a
+          resource manager connection factory reference.  The name
+          is a JNDI name relative to the java:comp/env context.
+          The name must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-ref"/>
+      <xsd:field xpath="jakartaee:res-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-env-entry-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The env-entry-name element contains the name of a web
+          application's environment entry.  The name is a JNDI
+          name relative to the java:comp/env context.  The name
+          must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:env-entry"/>
+      <xsd:field xpath="jakartaee:env-entry-name"/>
+    </xsd:unique>
+    <xsd:key name="web-common-role-name-key">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          A role-name-key is specified to allow the references
+          from the security-role-refs.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:security-role"/>
+      <xsd:field xpath="jakartaee:role-name"/>
+    </xsd:key>
+    <xsd:keyref name="web-common-role-name-references"
+                refer="jakartaee:web-common-role-name-key">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The keyref indicates the references from
+          security-role-ref to a specified role-name.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:servlet/jakartaee:security-role-ref"/>
+      <xsd:field xpath="jakartaee:role-link"/>
+    </xsd:keyref>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="web-appType">
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="module-name"
+                   type="jakartaee:string"
+                   minOccurs="0"/>
+      <xsd:group ref="jakartaee:web-commonType"/>
+      <xsd:element name="default-context-path"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When specified, this element provides a default context path
+            of the web application. An empty value for this element must cause
+            the web application to be deployed at the root for the container.
+            Otherwise, the default context path must start with
+            a "/" character but not end with a "/" character.
+            Servlet containers may provide vendor specific configuration
+            options that allows specifying a value that overrides the value
+            specified here.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="request-character-encoding"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When specified, this element provides a default request
+            character encoding of the web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="response-character-encoding"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When specified, this element provides a default response
+            character encoding of the web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="deny-uncovered-http-methods"
+                   type="jakartaee:emptyType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When specified, this element causes uncovered http methods
+            to be denied. For every url-pattern that is the target of a
+            security-constrant, this element causes all HTTP methods that
+            are NOT covered (by a security constraint) at the url-pattern
+            to be denied.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="absolute-ordering"
+                   type="jakartaee:absoluteOrderingType"/>
+    </xsd:choice>
+    <xsd:attributeGroup ref="jakartaee:web-common-attributes"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="absoluteOrderingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Please see section 8.2.2 of the specification for details.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="others"
+                   type="jakartaee:ordering-othersType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/java/jakarta/servlet/resources/web-common_6_1.xsd b/java/jakarta/servlet/resources/web-common_6_1.xsd
new file mode 100644
index 0000000000..de8ecef014
--- /dev/null
+++ b/java/jakarta/servlet/resources/web-common_6_1.xsd
@@ -0,0 +1,1507 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="6.1">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the common XML Schema for the Servlet 6.1 deployment descriptor.
+      This file is in turn used by web.xml and web-fragment.xml
+      web application's war file.  All Servlet deployment descriptors
+      must indicate the web common schema by using the Jakarta EE
+      namespace:
+      
+      https://jakarta.ee/xml/ns/jakartaee
+      
+      and by indicating the version of the schema by
+      using the version element as shown below:
+      
+      <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="..."
+      version="6.1">
+      ...
+      </web-app>
+      
+      The instance documents may indicate the published version of
+      the schema using the xsi:schemaLocation attribute for Jakarta EE
+      namespace with the following location:
+      
+      https://jakarta.ee/xml/ns/jakartaee/web-common_6_1.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="jakartaee_11.xsd"/>
+
+  <xsd:include schemaLocation="jsp_4_0.xsd"/>
+
+  <xsd:group name="web-commonType">
+    <xsd:choice>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="distributable"
+                   type="jakartaee:emptyType"/>
+      <xsd:element name="context-param"
+                   type="jakartaee:param-valueType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The context-param element contains the declaration
+            of a web application's servlet context
+            initialization parameters.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="filter"
+                   type="jakartaee:filterType"/>
+      <xsd:element name="filter-mapping"
+                   type="jakartaee:filter-mappingType"/>
+      <xsd:element name="listener"
+                   type="jakartaee:listenerType"/>
+      <xsd:element name="servlet"
+                   type="jakartaee:servletType"/>
+      <xsd:element name="servlet-mapping"
+                   type="jakartaee:servlet-mappingType"/>
+      <xsd:element name="session-config"
+                   type="jakartaee:session-configType"/>
+      <xsd:element name="mime-mapping"
+                   type="jakartaee:mime-mappingType"/>
+      <xsd:element name="welcome-file-list"
+                   type="jakartaee:welcome-file-listType"/>
+      <xsd:element name="error-page"
+                   type="jakartaee:error-pageType"/>
+      <xsd:element name="jsp-config"
+                   type="jakartaee:jsp-configType"/>
+      <xsd:element name="security-constraint"
+                   type="jakartaee:security-constraintType"/>
+      <xsd:element name="login-config"
+                   type="jakartaee:login-configType"/>
+      <xsd:element name="security-role"
+                   type="jakartaee:security-roleType"/>
+      <xsd:group ref="jakartaee:jndiEnvironmentRefsGroup"/>
+      <xsd:element name="message-destination"
+                   type="jakartaee:message-destinationType"/>
+      <xsd:element name="locale-encoding-mapping-list"
+                   type="jakartaee:locale-encoding-mapping-listType"/>
+    </xsd:choice>
+  </xsd:group>
+
+  <xsd:attributeGroup name="web-common-attributes">
+    <xsd:attribute name="version"
+                   type="jakartaee:web-app-versionType"
+                   use="required"/>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+    <xsd:attribute name="metadata-complete"
+                   type="xsd:boolean">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The metadata-complete attribute defines whether this
+          deployment descriptor and other related deployment
+          descriptors for this module (e.g., web service
+          descriptors) are complete, or whether the class
+          files available to this module and packaged with
+          this application should be examined for annotations
+          that specify deployment information.
+          
+          If metadata-complete is set to "true", the deployment
+          tool must ignore any annotations that specify deployment
+          information, which might be present in the class files
+          of the application.
+          
+          If metadata-complete is not specified or is set to
+          "false", the deployment tool must examine the class
+          files of the application for annotations, as
+          specified by the specifications.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:attributeGroup>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="attribute-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is a general type that can be used to declare
+        attribute/value lists.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="attribute-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The attribute-name element contains the name of an
+            attribute.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute-value"
+                   type="jakartaee:xsdStringType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The attribute-value element contains the value of a
+            attribute.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="auth-constraintType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The auth-constraintType indicates the user roles that
+        should be permitted access to this resource
+        collection. The role-name used here must either correspond
+        to the role-name of one of the security-role elements
+        defined for this web application, or be the specially
+        reserved role-name "*" that is a compact syntax for
+        indicating all roles in the web application. If both "*"
+        and rolenames appear, the container interprets this as all
+        roles.  If no roles are defined, no user is allowed access
+        to the portion of the web application described by the
+        containing security-constraint.  The container matches
+        role names case sensitively when determining access.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="jakartaee:role-nameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="auth-methodType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The auth-methodType is used to configure the authentication
+        mechanism for the web application. As a prerequisite to
+        gaining access to any web resources which are protected by
+        an authorization constraint, a user must have authenticated
+        using the configured mechanism. Legal values are "BASIC",
+        "DIGEST", "FORM", "CLIENT-CERT", or a vendor-specific
+        authentication scheme.
+        
+        Used in: login-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="dispatcherType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The dispatcher has five legal values: FORWARD, REQUEST,
+        INCLUDE, ASYNC, and ERROR.
+        
+        A value of FORWARD means the Filter will be applied under
+        RequestDispatcher.forward() calls.
+        A value of REQUEST means the Filter will be applied under
+        ordinary client calls to the path or servlet.
+        A value of INCLUDE means the Filter will be applied under
+        RequestDispatcher.include() calls.
+        A value of ASYNC means the Filter will be applied under
+        calls dispatched from an AsyncContext.
+        A value of ERROR means the Filter will be applied under the
+        error page mechanism.
+        
+        The absence of any dispatcher elements in a filter-mapping
+        indicates a default of applying filters only under ordinary
+        client calls to the path or servlet.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="FORWARD"/>
+        <xsd:enumeration value="INCLUDE"/>
+        <xsd:enumeration value="REQUEST"/>
+        <xsd:enumeration value="ASYNC"/>
+        <xsd:enumeration value="ERROR"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="error-codeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The error-code contains an HTTP error code, ex: 404
+        
+        Used in: error-page
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:xsdPositiveIntegerType">
+        <xsd:pattern value="\d{3}"/>
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="error-pageType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The error-pageType contains a mapping between an error code
+        or exception type to the path of a resource in the web
+        application.
+        
+        Error-page declarations using the exception-type element in
+        the deployment descriptor must be unique up to the class name of
+        the exception-type. Similarly, error-page declarations using the
+        error-code element must be unique in the deployment descriptor
+        up to the status code.
+        
+        If an error-page element in the deployment descriptor does not
+        contain an exception-type or an error-code element, the error
+        page is a default error page.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="1">
+        <xsd:element name="error-code"
+                     type="jakartaee:error-codeType"/>
+        <xsd:element name="exception-type"
+                     type="jakartaee:fully-qualified-classType">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              The exception-type contains a fully qualified class
+              name of a Java exception type.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+      <xsd:element name="location"
+                   type="jakartaee:war-pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The location element contains the location of the
+            resource in the web application relative to the root of
+            the web application. The value of the location must have
+            a leading `/'.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="filterType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The filterType is used to declare a filter in the web
+        application. The filter is mapped to either a servlet or a
+        URL pattern in the filter-mapping element, using the
+        filter-name value to reference. Filters can access the
+        initialization parameters declared in the deployment
+        descriptor at runtime via the FilterConfig interface.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="filter-name"
+                   type="jakartaee:filter-nameType"/>
+      <xsd:element name="filter-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The fully qualified classname of the filter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="async-supported"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0"/>
+      <xsd:element name="init-param"
+                   type="jakartaee:param-valueType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The init-param element contains a name/value pair as
+            an initialization param of a servlet filter
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="filter-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Declaration of the filter mappings in this web
+        application is done by using filter-mappingType.
+        The container uses the filter-mapping
+        declarations to decide which filters to apply to a request,
+        and in what order. The container matches the request URI to
+        a Servlet in the normal way. To determine which filters to
+        apply it matches filter-mapping declarations either on
+        servlet-name, or on url-pattern for each filter-mapping
+        element, depending on which style is used. The order in
+        which filters are invoked is the order in which
+        filter-mapping declarations that match a request URI for a
+        servlet appear in the list of filter-mapping elements.The
+        filter-name value must be the value of the filter-name
+        sub-elements of one of the filter declarations in the
+        deployment descriptor.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="filter-name"
+                   type="jakartaee:filter-nameType"/>
+      <xsd:choice minOccurs="1"
+                  maxOccurs="unbounded">
+        <xsd:element name="url-pattern"
+                     type="jakartaee:url-patternType"/>
+        <xsd:element name="servlet-name"
+                     type="jakartaee:servlet-nameType"/>
+      </xsd:choice>
+      <xsd:element name="dispatcher"
+                   type="jakartaee:dispatcherType"
+                   minOccurs="0"
+                   maxOccurs="5"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="nonEmptyStringType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines a string which contains at least one
+        character.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:minLength value="1"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="filter-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The logical name of the filter is declare
+        by using filter-nameType. This name is used to map the
+        filter.  Each filter name is unique within the web
+        application.
+        
+        Used in: filter, filter-mapping
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="form-login-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The form-login-configType specifies the login and error
+        pages that should be used in form based login. If form based
+        authentication is not used, these elements are ignored.
+        
+        Used in: login-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="form-login-page"
+                   type="jakartaee:war-pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The form-login-page element defines the location in the web
+            app where the page that can be used for login can be
+            found.  The path begins with a leading / and is interpreted
+            relative to the root of the WAR.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="form-error-page"
+                   type="jakartaee:war-pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The form-error-page element defines the location in
+            the web app where the error page that is displayed
+            when login is not successful can be found.
+            The path begins with a leading / and is interpreted
+            relative to the root of the WAR.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="http-methodType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        A HTTP method type as defined in HTTP 1.1 section 2.2.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="[!-~-[\(\)&#60;&#62;@,;:&#34;/\[\]?=\{\}\\\p{Z}]]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="load-on-startupType">
+    <xsd:union memberTypes="jakartaee:null-charType xsd:integer"/>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="null-charType">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value=""/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="login-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The login-configType is used to configure the authentication
+        method that should be used, the realm name that should be
+        used for this application, and the attributes that are
+        needed by the form login mechanism.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="auth-method"
+                   type="jakartaee:auth-methodType"
+                   minOccurs="0"/>
+      <xsd:element name="realm-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The realm name element specifies the realm name to
+            use in HTTP Basic authorization.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="form-login-config"
+                   type="jakartaee:form-login-configType"
+                   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mime-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The mime-mappingType defines a mapping between an extension
+        and a mime type.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The extension element contains a string describing an
+          extension. example: "txt"
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:element name="extension"
+                   type="jakartaee:string"/>
+      <xsd:element name="mime-type"
+                   type="jakartaee:mime-typeType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mime-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The mime-typeType is used to indicate a defined mime type.
+        
+        Example:
+        "text/plain"
+        
+        Used in: mime-mapping
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="[^\p{Cc}^\s]+/[^\p{Cc}^\s]+"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-constraintType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The security-constraintType is used to associate
+        security constraints with one or more web resource
+        collections
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="display-name"
+                   type="jakartaee:display-nameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="web-resource-collection"
+                   type="jakartaee:web-resource-collectionType"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="auth-constraint"
+                   type="jakartaee:auth-constraintType"
+                   minOccurs="0"/>
+      <xsd:element name="user-data-constraint"
+                   type="jakartaee:user-data-constraintType"
+                   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="servletType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The servletType is used to declare a servlet.
+        It contains the declarative data of a
+        servlet. If a jsp-file is specified and the load-on-startup
+        element is present, then the JSP should be precompiled and
+        loaded.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="servlet-name"
+                   type="jakartaee:servlet-nameType"/>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="1">
+        <xsd:element name="servlet-class"
+                     type="jakartaee:fully-qualified-classType">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              The servlet-class element contains the fully
+              qualified class name of the servlet.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="jsp-file"
+                     type="jakartaee:jsp-fileType"/>
+      </xsd:choice>
+      <xsd:element name="init-param"
+                   type="jakartaee:param-valueType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="load-on-startup"
+                   type="jakartaee:load-on-startupType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The load-on-startup element indicates that this
+            servlet should be loaded (instantiated and have
+            its init() called) on the startup of the web
+            application. The optional contents of these
+            element must be an integer indicating the order in
+            which the servlet should be loaded. If the value
+            is a negative integer, or the element is not
+            present, the container is free to load the servlet
+            whenever it chooses. If the value is a positive
+            integer or 0, the container must load and
+            initialize the servlet as the application is
+            deployed. The container must guarantee that
+            servlets marked with lower integers are loaded
+            before servlets marked with higher integers. The
+            container may choose the order of loading of
+            servlets with the same load-on-start-up value.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="enabled"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0"/>
+      <xsd:element name="async-supported"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0"/>
+      <xsd:element name="run-as"
+                   type="jakartaee:run-asType"
+                   minOccurs="0"/>
+      <xsd:element name="security-role-ref"
+                   type="jakartaee:security-role-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="multipart-config"
+                   type="jakartaee:multipart-configType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="servlet-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The servlet-mappingType defines a mapping between a
+        servlet and a url pattern.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="servlet-name"
+                   type="jakartaee:servlet-nameType"/>
+      <xsd:element name="url-pattern"
+                   type="jakartaee:url-patternType"
+                   minOccurs="1"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="servlet-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The servlet-name element contains the canonical name of the
+        servlet. Each servlet name is unique within the web
+        application.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="session-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The session-configType defines the session parameters
+        for this web application.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="session-timeout"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The session-timeout element defines the default
+            session timeout interval for all sessions created
+            in this web application. The specified timeout
+            must be expressed in a whole number of minutes.
+            If the timeout is 0 or less, the container ensures
+            the default behaviour of sessions is never to time
+            out. If this element is not specified, the container
+            must set its default timeout period.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="cookie-config"
+                   type="jakartaee:cookie-configType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The cookie-config element defines the configuration of the
+            session tracking cookies created by this web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="tracking-mode"
+                   type="jakartaee:tracking-modeType"
+                   minOccurs="0"
+                   maxOccurs="3">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The tracking-mode element defines the tracking modes
+            for sessions created by this web application
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The cookie-configType defines the configuration for the
+        session tracking cookies of this web application.
+        
+        Used in: session-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:cookie-nameType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name that will be assigned to any session tracking
+            cookies created by this web application.
+            The default is JSESSIONID
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="domain"
+                   type="jakartaee:cookie-domainType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The domain name that will be assigned to any session tracking
+            cookies created by this web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="path"
+                   type="jakartaee:cookie-pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The path that will be assigned to any session tracking
+            cookies created by this web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="comment"
+                   type="jakartaee:cookie-commentType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The comment that will be assigned to any session tracking
+            cookies created by this web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="http-only"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Specifies whether any session tracking cookies created
+            by this web application will be marked as HttpOnly
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="secure"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Specifies whether any session tracking cookies created
+            by this web application will be marked as secure.
+            When true, all session tracking cookies must be marked
+            as secure independent of the nature of the request that
+            initiated the corresponding session.
+            When false, the session cookie should only be marked secure
+            if the request that initiated the session was secure.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-age"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The lifetime (in seconds) that will be assigned to any
+            session tracking cookies created by this web application.
+            Default is -1
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute"
+                   type="jakartaee:attribute-valueType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The attribute-param element contains a name/value pair to
+            be added as an attribute to every session cookie.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The name that will be assigned to any session tracking
+        cookies created by this web application.
+        The default is JSESSIONID
+        
+        Used in: cookie-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-domainType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The domain name that will be assigned to any session tracking
+        cookies created by this web application.
+        
+        Used in: cookie-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The path that will be assigned to any session tracking
+        cookies created by this web application.
+        
+        Used in: cookie-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-commentType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The comment that will be assigned to any session tracking
+        cookies created by this web application.
+        
+        Used in: cookie-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tracking-modeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The tracking modes for sessions created by this web
+        application
+        
+        Used in: session-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="COOKIE"/>
+        <xsd:enumeration value="URL"/>
+        <xsd:enumeration value="SSL"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="transport-guaranteeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The transport-guaranteeType specifies that the communication
+        between client and server should be NONE, INTEGRAL, or
+        CONFIDENTIAL. NONE means that the application does not
+        require any transport guarantees. A value of INTEGRAL means
+        that the application requires that the data sent between the
+        client and server be sent in such a way that it can't be
+        changed in transit. CONFIDENTIAL means that the application
+        requires that the data be transmitted in a fashion that
+        prevents other entities from observing the contents of the
+        transmission. In most cases, the presence of the INTEGRAL or
+        CONFIDENTIAL flag will indicate that the use of SSL is
+        required.
+        
+        Used in: user-data-constraint
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="NONE"/>
+        <xsd:enumeration value="INTEGRAL"/>
+        <xsd:enumeration value="CONFIDENTIAL"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="user-data-constraintType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The user-data-constraintType is used to indicate how
+        data communicated between the client and container should be
+        protected.
+        
+        Used in: security-constraint
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="transport-guarantee"
+                   type="jakartaee:transport-guaranteeType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="war-pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate a path starting
+        with a "/" and interpreted relative to the root of a WAR
+        file.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="/.*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="web-app-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type contains the recognized versions of
+        web-application supported. It is used to designate the
+        version of the web application.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="6.1"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="web-resource-collectionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The web-resource-collectionType is used to identify the
+        resources and HTTP methods on those resources to which a
+        security constraint applies. If no HTTP methods are specified,
+        then the security constraint applies to all HTTP methods.
+        If HTTP methods are specified by http-method-omission
+        elements, the security constraint applies to all methods
+        except those identified in the collection.
+        http-method-omission and http-method elements are never
+        mixed in the same collection.
+        
+        Used in: security-constraint
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="web-resource-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The web-resource-name contains the name of this web
+            resource collection.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="url-pattern"
+                   type="jakartaee:url-patternType"
+                   maxOccurs="unbounded"/>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="1">
+        <xsd:element name="http-method"
+                     type="jakartaee:http-methodType"
+                     minOccurs="1"
+                     maxOccurs="unbounded">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              Each http-method names an HTTP method to which the
+              constraint applies.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="http-method-omission"
+                     type="jakartaee:http-methodType"
+                     minOccurs="1"
+                     maxOccurs="unbounded">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              Each http-method-omission names an HTTP method to
+              which the constraint does not apply.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="welcome-file-listType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The welcome-file-list contains an ordered list of welcome
+        files elements.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="welcome-file"
+                   type="xsd:string"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The welcome-file element contains file name to use
+            as a default welcome file, such as index.html
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="localeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The localeType defines valid locale defined by ISO-639-1
+        and ISO-3166.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[a-z]{2}(_|-)?([\p{L}\-\p{Nd}]{2})?"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="encodingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The encodingType defines IANA character sets.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[^\s]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="locale-encoding-mapping-listType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The locale-encoding-mapping-list contains one or more
+        locale-encoding-mapping(s).
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="locale-encoding-mapping"
+                   type="jakartaee:locale-encoding-mappingType"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="locale-encoding-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The locale-encoding-mapping contains locale name and
+        encoding name. The locale name must be either "Language-code",
+        such as "ja", defined by ISO-639 or "Language-code_Country-code",
+        such as "ja_JP".  "Country code" is defined by ISO-3166.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="locale"
+                   type="jakartaee:localeType"/>
+      <xsd:element name="encoding"
+                   type="jakartaee:encodingType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ordering-othersType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This element indicates that the ordering sub-element in which
+        it was placed should take special action regarding the ordering
+        of this application resource relative to other application
+        configuration resources.
+        See section 8.2.2 of the specification for details.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="multipart-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This element specifies configuration information related to the
+        handling of multipart/form-data requests.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="location"
+                   type="jakartaee:string"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The directory location where uploaded files will be stored
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-file-size"
+                   type="xsd:long"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The maximum size limit of uploaded files in bytes
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-request-size"
+                   type="xsd:long"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The maximum size limit of multipart/form-data requests in bytes
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="file-size-threshold"
+                   type="xsd:integer"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The size threshold (in bytes) after which an uploaded file will be
+            written to disk
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/java/jakarta/servlet/resources/web-fragment_6_1.xsd b/java/jakarta/servlet/resources/web-fragment_6_1.xsd
new file mode 100644
index 0000000000..633b1d69f2
--- /dev/null
+++ b/java/jakarta/servlet/resources/web-fragment_6_1.xsd
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="6.1">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the XML Schema for the Servlet 6.1 deployment descriptor.
+      The deployment descriptor must be named "META-INF/web-fragment.xml"
+      in the web fragment's jar file.  All Servlet deployment descriptors
+      must indicate the web application schema by using the Jakarta EE
+      namespace:
+      
+      https://jakarta.ee/xml/ns/jakartaee
+      
+      and by indicating the version of the schema by
+      using the version element as shown below:
+      
+      <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="..."
+      version="6.1">
+      ...
+      </web-fragment>
+      
+      The instance documents may indicate the published version of
+      the schema using the xsi:schemaLocation attribute for Jakarta EE
+      namespace with the following location:
+      
+      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="web-common_6_1.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="web-fragment"
+               type="jakartaee:web-fragmentType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The web-fragment element is the root of the deployment
+        descriptor for a web fragment.  Note that the sub-elements
+        of this element can be in the arbitrary order. Because of
+        that, the multiplicity of the elements of distributable,
+        session-config, welcome-file-list, jsp-config, login-config,
+        and locale-encoding-mapping-list was changed from "?" to "*"
+        in this schema.  However, the deployment descriptor instance
+        file must not contain multiple elements of session-config,
+        jsp-config, and login-config. When there are multiple elements of
+        welcome-file-list or locale-encoding-mapping-list, the container
+        must concatenate the element contents.  The multiple occurence
+        of the element distributable is redundant and the container
+        treats that case exactly in the same way when there is only
+        one distributable.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:unique name="web-common-servlet-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The servlet element contains the name of a servlet.
+          The name must be unique within the web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:servlet"/>
+      <xsd:field xpath="jakartaee:servlet-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-filter-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The filter element contains the name of a filter.
+          The name must be unique within the web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:filter"/>
+      <xsd:field xpath="jakartaee:filter-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-ejb-local-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-local-ref-name element contains the name of an 
+          enterprise bean reference. The enterprise bean reference
+          is an entry in the web application's environment and is relative
+          to the java:comp/env context.  The name must be unique within
+          the web application.
+          
+          It is recommended that name is prefixed with "ejb/".
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-local-ref"/>
+      <xsd:field xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-ejb-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-ref-name element contains the name of an  
+          enterprise bean reference. The enterprise bean reference 
+          is an entry in the web application's environment and is relative 
+          to the java:comp/env context.  The name must be unique within
+          the web application.
+          
+          It is recommended that name is prefixed with "ejb/".
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-ref"/>
+      <xsd:field xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-resource-env-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The resource-env-ref-name element specifies the name of
+          a resource environment reference; its value is the
+          environment entry name used in the web application code.
+          The name is a JNDI name relative to the java:comp/env
+          context and must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-env-ref"/>
+      <xsd:field xpath="jakartaee:resource-env-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-message-destination-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The message-destination-ref-name element specifies the name of
+          a message destination reference; its value is the
+          environment entry name used in the web application code.
+          The name is a JNDI name relative to the java:comp/env
+          context and must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:message-destination-ref"/>
+      <xsd:field xpath="jakartaee:message-destination-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-res-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The res-ref-name element specifies the name of a
+          resource manager connection factory reference.  The name
+          is a JNDI name relative to the java:comp/env context.
+          The name must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-ref"/>
+      <xsd:field xpath="jakartaee:res-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-env-entry-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The env-entry-name element contains the name of a web
+          application's environment entry.  The name is a JNDI
+          name relative to the java:comp/env context.  The name
+          must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:env-entry"/>
+      <xsd:field xpath="jakartaee:env-entry-name"/>
+    </xsd:unique>
+    <xsd:key name="web-common-role-name-key">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          A role-name-key is specified to allow the references
+          from the security-role-refs.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:security-role"/>
+      <xsd:field xpath="jakartaee:role-name"/>
+    </xsd:key>
+    <xsd:keyref name="web-common-role-name-references"
+                refer="jakartaee:web-common-role-name-key">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The keyref indicates the references from
+          security-role-ref to a specified role-name.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:servlet/jakartaee:security-role-ref"/>
+      <xsd:field xpath="jakartaee:role-link"/>
+    </xsd:keyref>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="web-fragmentType">
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"/>
+      <xsd:group ref="jakartaee:web-commonType"/>
+      <xsd:element name="ordering"
+                   type="jakartaee:orderingType"/>
+    </xsd:choice>
+    <xsd:attributeGroup ref="jakartaee:web-common-attributes"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="orderingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Please see section 8.2.2 of the specification for details.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="after"
+                   type="jakartaee:ordering-orderingType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+      <xsd:element name="before"
+                   type="jakartaee:ordering-orderingType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ordering-orderingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This element contains a sequence of "name" elements, each of
+        which
+        refers to an application configuration resource by the "name"
+        declared on its web.xml fragment.  This element can also contain
+        a single "others" element which specifies that this document
+        comes
+        before or after other documents within the application.
+        See section 8.2.2 of the specification for details.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="others"
+                   type="jakartaee:ordering-othersType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/java/jakarta/servlet/resources/web-jsptaglibrary_4_0.xsd b/java/jakarta/servlet/resources/web-jsptaglibrary_4_0.xsd
new file mode 100644
index 0000000000..4c210ddd4f
--- /dev/null
+++ b/java/jakarta/servlet/resources/web-jsptaglibrary_4_0.xsd
@@ -0,0 +1,1109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="4.0">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      This Source Code may also be made available under the following Secondary
+      Licenses when the conditions for such availability set forth in the
+      Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the XML Schema for the JSP Taglibrary 
+      descriptor.  All Taglibrary descriptors must 
+      indicate the tag library schema by using the Taglibrary 
+      namespace: 
+      
+      https://jakarta.ee/xml/ns/jakartaee 
+      
+      and by indicating the version of the schema by 
+      using the version element as shown below: 
+      
+      <taglib xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="..."
+      version="4.0">
+      ...
+      </taglib>
+      
+      The instance documents may indicate the published 
+      version of the schema using xsi:schemaLocation attribute 
+      for Jakarta EE namespace with the following location: 
+      
+      https://jakarta.ee/xml/ns/jakartaee/web-jsptaglibrary_4_0.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="jakartaee_11.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="taglib"
+               type="jakartaee:tldTaglibType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The taglib tag is the document root.
+        The definition of taglib is provided
+        by the tldTaglibType. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:unique name="tag-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The taglib element contains, among other things, tag and 
+          tag-file elements.
+          The name subelements of these elements must each be unique.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:tag|jakartaee:tag-file"/>
+      <xsd:field xpath="jakartaee:name"/>
+    </xsd:unique>
+    <xsd:unique name="function-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The taglib element contains function elements.
+          The name subelements of these elements must each be unique.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:function"/>
+      <xsd:field xpath="jakartaee:name"/>
+    </xsd:unique>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="body-contentType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Specifies the type of body that is valid for a tag.
+        This value is used by the JSP container to validate 
+        that a tag invocation has the correct body syntax and 
+        by page composition tools to assist the page author 
+        in providing a valid tag body.
+        		    
+        There are currently four values specified:
+        
+        tagdependent    The body of the tag is interpreted by the tag
+        		implementation itself, and is most likely 
+        		in a different "language", e.g embedded SQL 
+        		statements.
+        
+        JSP             The body of the tag contains nested JSP 
+        		syntax.
+        
+        empty           The body must be empty
+        
+        scriptless      The body accepts only template text, EL 
+        		Expressions, and JSP action elements.  No 
+        		scripting elements are allowed.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="tagdependent"/>
+        <xsd:enumeration value="JSP"/>
+        <xsd:enumeration value="empty"/>
+        <xsd:enumeration value="scriptless"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tld-canonical-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines the canonical name of a tag or attribute being
+        defined.
+        
+        The name must conform to the lexical rules for an NMTOKEN.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:xsdNMTOKENType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="validatorType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        A validator that can be used to validate
+        the conformance of a JSP page to using this tag library is
+        defined by a validatorType.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="validator-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines the TagLibraryValidator class that can be used
+            to validate the conformance of a JSP page to using this
+            tag library.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="init-param"
+                   type="jakartaee:param-valueType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The init-param element contains a name/value pair as an
+            initialization param. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tagType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The tag defines a unique tag in this tag library.  It has one
+        attribute, id.
+        
+        The tag element may have several subelements defining:
+        
+        description       Optional tag-specific information
+        
+        display-name      A short name that is intended to be 
+        		  displayed by tools
+        
+        icon              Optional icon element that can be used 
+        		  by tools
+        
+        name              The unique action name
+        
+        tag-class         The tag handler class implementing
+        		  jakarta.servlet.jsp.tagext.JspTag
+        
+        tei-class         An optional subclass of
+        		  jakarta.servlet.jsp.tagext.TagExtraInfo
+        
+        body-content      The body content type
+        
+        variable          Optional scripting variable information
+        
+        attribute         All attributes of this action that are
+        		  evaluated prior to invocation.
+        
+        dynamic-attributes Whether this tag supports additional 
+        		   attributes with dynamic names.  If 
+        		   true, the tag-class must implement the 
+        		   jakarta.servlet.jsp.tagext.DynamicAttributes
+        		   interface.  Defaults to false.
+        
+        example           Optional informal description of an 
+        		  example of a use of this tag
+        
+        tag-extension     Zero or more extensions that provide extra
+        		  information about this tag, for tool 
+        		  consumption
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="name"
+                   type="jakartaee:tld-canonical-nameType"/>
+      <xsd:element name="tag-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines the subclass of jakarta.servlet.jsp.tagext.JspTag
+            that implements the request time semantics for 
+            this tag. (required)
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="tei-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines the subclass of jakarta.servlet.jsp.tagext.TagExtraInfo
+            for this tag. (optional)
+            
+            If this is not given, the class is not consulted at
+            translation time.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="body-content"
+                   type="jakartaee:body-contentType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Specifies the format for the body of this tag.
+            The default in JSP 1.2 was "JSP" but because this 
+            is an invalid setting for simple tag handlers, there 
+            is no longer a default in JSP 2.0.  A reasonable 
+            default for simple tag handlers is "scriptless" if 
+            the tag can have a body.  
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="variable"
+                   type="jakartaee:variableType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="attribute"
+                   type="jakartaee:tld-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="dynamic-attributes"
+                   type="jakartaee:generic-booleanType"
+                   minOccurs="0"/>
+      <xsd:element name="example"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The example element contains an informal description
+            of an example of the use of a tag.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="tag-extension"
+                   type="jakartaee:tld-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Tag extensions are for tool use only and must not affect
+            the behavior of a container.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tagFileType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines an action in this tag library that is implemented
+        as a .tag file.
+        
+        The tag-file element has two required subelements:
+        
+        description       Optional tag-specific information
+        
+        display-name      A short name that is intended to be 
+        		  displayed by tools
+        
+        icon              Optional icon element that can be used 
+        		  by tools
+        
+        name              The unique action name
+        
+        path              Where to find the .tag file implementing this
+        		  action, relative to the root of the web
+        		  application or the root of the JAR file for a
+        		  tag library packaged in a JAR.  This must
+        		  begin with /WEB-INF/tags if the .tag file
+        		  resides in the WAR, or /META-INF/tags if the
+        		  .tag file resides in a JAR.
+        
+        example           Optional informal description of an 
+        		  example of a use of this tag
+        
+        tag-extension     Zero or more extensions that provide extra
+        		  information about this tag, for tool 
+        		  consumption
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="name"
+                   type="jakartaee:tld-canonical-nameType"/>
+      <xsd:element name="path"
+                   type="jakartaee:pathType"/>
+      <xsd:element name="example"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The example element contains an informal description
+            of an example of the use of a tag.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="tag-extension"
+                   type="jakartaee:tld-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Tag extensions are for tool use only and must not affect
+            the behavior of a container.  
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="functionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The function element is used to provide information on each
+        function in the tag library that is to be exposed to the EL.
+        
+        The function element may have several subelements defining:
+        
+        description         Optional tag-specific information
+        
+        display-name        A short name that is intended to be 
+        		    displayed by tools
+        
+        icon                Optional icon element that can be used 
+        		    by tools
+        
+        name                A unique name for this function
+        
+        function-class      Provides the name of the Java class that 
+        		    implements the function
+        
+        function-signature  Provides the signature, as in the Java 
+        		    Language Specification, of the Java 
+        		    method that is to be used to implement 
+        		    the function.
+        
+        example             Optional informal description of an 
+        		    example of a use of this function
+        
+        function-extension  Zero or more extensions that provide extra
+        		    information about this function, for tool 
+        		    consumption
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="name"
+                   type="jakartaee:tld-canonical-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A unique name for this function.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="function-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Provides the fully-qualified class name of the Java
+            class containing the static method that implements 
+            the function.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="function-signature"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Provides the signature, of the static Java method that is
+            to be used to implement the function.  The syntax of the
+            function-signature element is as follows:
+            
+            	FunctionSignature ::= ReturnType S MethodName S?
+            			      '(' S? Parameters? S? ')'
+            
+            ReturnType        ::= Type
+            
+            	MethodName        ::= Identifier
+            
+            	Parameters        ::=   Parameter
+            			      | ( Parameter S? ',' S? Parameters )
+            
+            Parameter         ::= Type
+            
+            	Where:
+            
+            	    * Type is a basic type or a fully qualified
+            	      Java class name (including package name),
+            	      as per the 'Type' production in the Java 
+            	      Language Specification, Second Edition, 
+            	      Chapter 18.
+            
+            * Identifier is a Java identifier, as per
+            	      the 'Identifier' production in the Java 
+            	      Language Specification, Second
+            	      Edition, Chapter 18.
+            
+            Example: 
+            
+            java.lang.String nickName( java.lang.String, int )
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="example"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The example element contains an informal description
+            of an example of the use of this function.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="function-extension"
+                   type="jakartaee:tld-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Function extensions are for tool use only and must not 
+            affect the behavior of a container.  
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tldTaglibType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The taglib tag is the document root, it defines:
+        
+        description     a simple string describing the "use" of this
+        		taglib, should be user discernable
+        
+        display-name    the display-name element contains a 
+        		short name that is intended to be displayed 
+        		by tools
+        
+        icon            optional icon that can be used by tools
+        
+        tlib-version    the version of the tag library implementation 
+        
+        short-name      a simple default short name that could be 
+        		used by a JSP authoring tool to create 
+        		names with a mnemonic value; for example, 
+        		the it may be used as the prefered prefix 
+        		value in taglib directives
+        
+        uri             a uri uniquely identifying this taglib
+        
+        validator       optional TagLibraryValidator information
+        
+        listener        optional event listener specification
+        
+        tag             tags in this tag library
+        
+        tag-file        tag files in this tag library
+        
+        function        zero or more EL functions defined in this 
+        		tag library
+        
+        taglib-extension zero or more extensions that provide extra
+        		information about this taglib, for tool 
+        		consumption
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="tlib-version"
+                   type="jakartaee:dewey-versionType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Describes this version (number) of the taglibrary.
+            It is described as a dewey decimal. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="short-name"
+                   type="jakartaee:tld-canonical-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines a simple default name that could be used by
+            a JSP authoring tool to create names with a 
+            mnemonicvalue; for example, it may be used as the 
+            preferred prefix value in taglib directives.  Do 
+            not use white space, and do not start with digits 
+            or underscore. 
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="uri"
+                   type="jakartaee:xsdAnyURIType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines a public URI that uniquely identifies this
+            version of the taglibrary.  Leave it empty if it
+            does not apply.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="validator"
+                   type="jakartaee:validatorType"
+                   minOccurs="0">
+      </xsd:element>
+      <xsd:element name="listener"
+                   type="jakartaee:listenerType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+      </xsd:element>
+      <xsd:element name="tag"
+                   type="jakartaee:tagType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="tag-file"
+                   type="jakartaee:tagFileType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="function"
+                   type="jakartaee:functionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="taglib-extension"
+                   type="jakartaee:tld-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Taglib extensions are for tool use only and must not 
+            affect the behavior of a container.  
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="version"
+                   type="jakartaee:dewey-versionType"
+                   fixed="4.0"
+                   use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          Describes the JSP version (number) this taglibrary
+          requires in order to function (dewey decimal)
+          
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="variableType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The variableType provides information on the scripting
+        variables defined by using this tag.  It is a (translation 
+        time) error for a tag that has one or more variable 
+        subelements to have a TagExtraInfo class that returns a 
+        non-null value from a call to getVariableInfo().
+        
+        The subelements of variableType are of the form:
+        
+        description              Optional description of this 
+        			 variable
+        
+        name-given               The variable name as a constant
+        
+        name-from-attribute      The name of an attribute whose 
+        			 (translation time) value will 
+        			 give the name of the
+        			 variable.  One of name-given or
+        			 name-from-attribute is required.
+        
+        variable-class           Name of the class of the variable.
+        			 java.lang.String is default.
+        
+        declare                  Whether the variable is declared 
+        			 or not.  True is the default.
+        
+        scope                    The scope of the scripting varaible
+        			 defined.  NESTED is default.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:choice>
+        <xsd:element name="name-given"
+                     type="jakartaee:java-identifierType">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              The name for the scripting variable.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="name-from-attribute"
+                     type="jakartaee:java-identifierType">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              The name of an attribute whose
+              (translation-time) value will give the name of 
+              the variable.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+      <xsd:element name="variable-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The optional name of the class for the scripting
+            variable.  The default is java.lang.String.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="declare"
+                   type="jakartaee:generic-booleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Whether the scripting variable is to be defined
+            or not.  See TagExtraInfo for details.  This 
+            element is optional and "true" is the default.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="scope"
+                   type="jakartaee:variable-scopeType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The element is optional and "NESTED" is the default.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="variable-scopeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines scope of the scripting variable.  See
+        TagExtraInfo for details.  The allowed values are, 
+        "NESTED", "AT_BEGIN" and "AT_END".
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="NESTED"/>
+        <xsd:enumeration value="AT_BEGIN"/>
+        <xsd:enumeration value="AT_END"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tld-attributeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The attribute element defines an attribute for the nesting
+        tag.  The attribute element may have several subelements 
+        defining: 
+        
+        description     a description of the attribute
+        
+        name            the name of the attribute 
+        
+        required        whether the attribute is required or 
+        		optional 
+        
+        rtexprvalue     whether the attribute is a runtime attribute 
+        
+        type            the type of the attributes 
+        
+        fragment        whether this attribute is a fragment
+        
+        deferred-value  present if this attribute is to be parsed as a
+        jakarta.el.ValueExpression
+        
+        deferred-method present if this attribute is to be parsed as a
+        jakarta.el.MethodExpression
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"/>
+      <xsd:element name="required"
+                   type="jakartaee:generic-booleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Defines if the nesting attribute is required or
+            optional.
+            
+            If not present then the default is "false", i.e 
+            the attribute is optional.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:choice>
+        <xsd:sequence>
+          <xsd:sequence minOccurs="0">
+            <xsd:element name="rtexprvalue"
+                         type="jakartaee:generic-booleanType">
+              <xsd:annotation>
+                <xsd:documentation>
+
+                  	  Defines if the nesting attribute can have scriptlet
+                  	  expressions as a value, i.e the value of the
+                  	  attribute may be dynamically calculated at request
+                  	  time, as opposed to a static value determined at
+                  	  translation time.
+                  	  If not present then the default is "false", i.e the
+                  	  attribute has a static value
+                  
+                </xsd:documentation>
+              </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="type"
+                         type="jakartaee:fully-qualified-classType"
+                         minOccurs="0">
+              <xsd:annotation>
+                <xsd:documentation>
+
+                  	  Defines the Java type of the attributes value.  
+                  If this element is omitted, the expected type is 
+                  assumed to be "java.lang.Object".  
+                  
+                </xsd:documentation>
+              </xsd:annotation>
+            </xsd:element>
+          </xsd:sequence>
+          <xsd:choice>
+            <xsd:element name="deferred-value"
+                         type="jakartaee:tld-deferred-valueType"
+                         minOccurs="0">
+              <xsd:annotation>
+                <xsd:documentation>
+
+                  Present if the value for this attribute is to be 
+                  passed to the tag handler as a 
+                  jakarta.el.ValueExpression. This allows for deferred 
+                  evaluation of EL expressions. An optional subelement 
+                  will contain the expected type that the value will 
+                  be coerced to after evaluation of the expression.
+                  The type defaults to Object if one is not provided.
+                  
+                </xsd:documentation>
+              </xsd:annotation>
+            </xsd:element>
+            <xsd:element name="deferred-method"
+                         type="jakartaee:tld-deferred-methodType"
+                         minOccurs="0">
+              <xsd:annotation>
+                <xsd:documentation>
+
+                  Present if the value for this attribute is to be 
+                  passed to the tag handler as a 
+                  jakarta.el.MethodExpression. This allows for deferred 
+                  evaluation of an EL expression that identifies a 
+                  method to be invoked on an Object. An optional 
+                  subelement will contain the expected method
+                  signature. The signature defaults to "void method()" 
+                  if one is not provided.
+                  
+                </xsd:documentation>
+              </xsd:annotation>
+            </xsd:element>
+          </xsd:choice>
+        </xsd:sequence>
+        <xsd:element name="fragment"
+                     type="jakartaee:generic-booleanType"
+                     minOccurs="0">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              "true" if this attribute is of type
+              jakarta.servlet.jsp.tagext.JspFragment, representing dynamic
+              content that can be re-evaluated as many times 
+              as needed by the tag handler.  If omitted or "false",
+              the default is still type="java.lang.String"
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tld-deferred-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines information about how to provide the value for a
+        tag handler attribute that accepts a jakarta.el.ValueExpression.
+        
+        The deferred-value element has one optional subelement:
+        
+        type            the expected type of the attribute
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="type"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The fully-qualified name of the Java type that is the 
+            expected type for this deferred expression.  If this 
+            element is omitted, the expected type is assumed to be 
+            "java.lang.Object".
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tld-deferred-methodType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Defines information about how to provide the value for a
+        tag handler attribute that accepts a jakarta.el.MethodExpression.
+        
+        The deferred-method element has one optional subelement:
+        
+        method-signature  Provides the signature, as in the Java
+        Language Specifies, that is expected for 
+        the method being identified by the 
+        expression.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="method-signature"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Provides the expected signature of the method identified 
+            by the jakarta.el.MethodExpression.
+            
+            This disambiguates overloaded methods and ensures that 
+            the return value is of the expected type.
+            
+            The syntax of the method-signature element is identical 
+            to that of the function-signature element.  See the 
+            documentation for function-signature for more details.
+            
+            The name of the method is for documentation purposes only 
+            and is ignored by the JSP container.
+            
+            Example:
+            
+            boolean validate(java.lang.String)
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tld-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The tld-extensionType is used to indicate
+        extensions to a specific TLD element.
+        
+        It is used by elements to designate an extension block
+        that is targeted to a specific extension designated by
+        a set of extension elements that are declared by a
+        namespace. The namespace identifies the extension to
+        the tool that processes the extension.
+        
+        The type of the extension-element is abstract. Therefore,
+        a concrete type must be specified by the TLD using
+        xsi:type attribute for each extension-element. 
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="extension-element"
+                   type="jakartaee:extensibleType"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="namespace"
+                   use="required"
+                   type="xsd:anyURI"/>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="extensibleType"
+                   abstract="true">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The extensibleType is an abstract base type that is used to
+        define the type of extension-elements. Instance documents
+        must substitute a known type to define the extension by
+        using xsi:type attribute to define the actual type of
+        extension-elements.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/res/META-INF/servlet-api.jar.license b/res/META-INF/servlet-api.jar.license
index 2b4876a151..937a8d8ee3 100644
--- a/res/META-INF/servlet-api.jar.license
+++ b/res/META-INF/servlet-api.jar.license
@@ -566,18 +566,24 @@ COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
 For the following Jakarta EE Schemas:
 - jakartaee_9.xsd
 - jakartaee_10.xsd
+- jakartaee_11.xsd
 - jakarta_web-services_2_0.xsd
 - jakarta_web-services_client_2_0.xsd
 - jsp_3_0.xsd
 - jsp_3_1.xsd
+- jsp_4_0.xsd
 - web-app_5_0.xsd
 - web-app_6_0.xsd
+- web-app_6_1.xsd
 - web-commonn_5_0.xsd
 - web-commonn_6_0.xsd
+- web-commonn_6_1.xsd
 - web-fragment_5_0.xsd
 - web-fragment_6_0.xsd
+- web-fragment_6_1.xsd
 - web-jsptaglibrary_3_0.xsd
 - web-jsptaglibrary_3_1.xsd
+- web-jsptaglibrary_4_0.xsd
 
 Eclipse Public License - v 2.0
 
diff --git a/res/install-win/INSTALLLICENSE b/res/install-win/INSTALLLICENSE
index 4c3277f252..1aae1dc918 100644
--- a/res/install-win/INSTALLLICENSE
+++ b/res/install-win/INSTALLLICENSE
@@ -214,18 +214,24 @@ For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component and the
 following Jakarta EE Schemas:
 - jakartaee_9.xsd
 - jakartaee_10.xsd
+- jakartaee_11.xsd
 - jakarta_web-services_2_0.xsd
 - jakarta_web-services_client_2_0.xsd
 - jsp_3_0.xsd
 - jsp_3_1.xsd
+- jsp_4_0.xsd
 - web-app_5_0.xsd
 - web-app_6_0.xsd
+- web-app_6_1.xsd
 - web-commonn_5_0.xsd
 - web-commonn_6_0.xsd
+- web-commonn_6_1.xsd
 - web-fragment_5_0.xsd
 - web-fragment_6_0.xsd
+- web-fragment_6_1.xsd
 - web-jsptaglibrary_3_0.xsd
 - web-jsptaglibrary_3_1.xsd
+- web-jsptaglibrary_4_0.xsd
 
 Eclipse Public License - v 2.0
 
diff --git a/res/maven/tomcat-servlet-api.pom b/res/maven/tomcat-servlet-api.pom
index 67d11b27b2..46054cfa4c 100644
--- a/res/maven/tomcat-servlet-api.pom
+++ b/res/maven/tomcat-servlet-api.pom
@@ -64,18 +64,24 @@
         to which the CDDL version 1.0 applies and
         jakartaee_9.xsd
         jakartaee_10.xsd
+        jakartaee_11.xsd
         jakarta_web-services_2_0.xsd
         jakarta_web-services_client_2_0.xsd
         jsp_3_0.xsd
         jsp_3_1.xsd
+        jsp_4_0.xsd
         web-app_5_0.xsd
         web-app_6_0.xsd
-        web-commonn_5_0.xsd
-        web-commonn_6_0.xsd
+        web-app_6_1.xsd
+        web-common_5_0.xsd
+        web-common_6_0.xsd
+        web-common_6_1.xsd
         web-fragment_5_0.xsd
         web-fragment_6_0.xsd
+        web-fragment_6_1.xsd
         web-jsptaglibrary_3_0.xsd
         web-jsptaglibrary_3_1.xsd
+        web-jsptaglibrary_4_0.xsd
         to which the EPLv2 applies.
       </comments>
     </license>
diff --git a/res/rat/rat-excludes.txt b/res/rat/rat-excludes.txt
index 369f4016fd..c185941722 100644
--- a/res/rat/rat-excludes.txt
+++ b/res/rat/rat-excludes.txt
@@ -138,6 +138,7 @@ java/jakarta/servlet/resources/javaee_7.xsd
 java/jakarta/servlet/resources/javaee_8.xsd
 java/jakarta/servlet/resources/jakartaee_9.xsd
 java/jakarta/servlet/resources/jakartaee_10.xsd
+java/jakarta/servlet/resources/jakartaee_11.xsd
 java/jakarta/servlet/resources/javaee_web_services_1_2.xsd
 java/jakarta/servlet/resources/javaee_web_services_1_3.xsd
 java/jakarta/servlet/resources/javaee_web_services_1_4.xsd
@@ -150,23 +151,28 @@ java/jakarta/servlet/resources/jsp_2_2.xsd
 java/jakarta/servlet/resources/jsp_2_3.xsd
 java/jakarta/servlet/resources/jsp_3_0.xsd
 java/jakarta/servlet/resources/jsp_3_1.xsd
+java/jakarta/servlet/resources/jsp_4_0.xsd
 java/jakarta/servlet/resources/web-app_3_0.xsd
 java/jakarta/servlet/resources/web-app_3_1.xsd
 java/jakarta/servlet/resources/web-app_4_0.xsd
 java/jakarta/servlet/resources/web-app_5_0.xsd
 java/jakarta/servlet/resources/web-app_6_0.xsd
+java/jakarta/servlet/resources/web-app_6_1.xsd
 java/jakarta/servlet/resources/web-common_3_0.xsd
 java/jakarta/servlet/resources/web-common_3_1.xsd
 java/jakarta/servlet/resources/web-common_4_0.xsd
 java/jakarta/servlet/resources/web-common_5_0.xsd
 java/jakarta/servlet/resources/web-common_6_0.xsd
+java/jakarta/servlet/resources/web-common_6_1.xsd
 java/jakarta/servlet/resources/web-fragment_3_0.xsd
 java/jakarta/servlet/resources/web-fragment_3_1.xsd
 java/jakarta/servlet/resources/web-fragment_4_0.xsd
 java/jakarta/servlet/resources/web-fragment_5_0.xsd
 java/jakarta/servlet/resources/web-fragment_6_0.xsd
+java/jakarta/servlet/resources/web-fragment_6_1.xsd
 java/jakarta/servlet/resources/web-jsptaglibrary_3_0.xsd
 java/jakarta/servlet/resources/web-jsptaglibrary_3_1.xsd
+java/jakarta/servlet/resources/web-jsptaglibrary_4_0.xsd
 output/classes/jakarta/servlet/resources/javaee_5.xsd
 output/classes/jakarta/servlet/resources/javaee_6.xsd
 output/classes/jakarta/servlet/resources/javaee_7.xsd


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


(tomcat) 02/05: Add Jakarta EE 11 schema to the digester

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit f599ac7269349bdcb1458b80b72fc8bcff50e2f3
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Mar 27 18:04:11 2024 +0000

    Add Jakarta EE 11  schema to the digester
---
 java/org/apache/tomcat/util/descriptor/DigesterFactory.java | 8 ++++++++
 java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java  | 6 ++++++
 java/org/apache/tomcat/util/descriptor/web/WebXml.java      | 3 +++
 3 files changed, 17 insertions(+)

diff --git a/java/org/apache/tomcat/util/descriptor/DigesterFactory.java b/java/org/apache/tomcat/util/descriptor/DigesterFactory.java
index 823b4fee9f..4d67ec2ac9 100644
--- a/java/org/apache/tomcat/util/descriptor/DigesterFactory.java
+++ b/java/org/apache/tomcat/util/descriptor/DigesterFactory.java
@@ -145,6 +145,14 @@ public class DigesterFactory {
         addSelf(systemIds, "jakartaee_web_services_2_0.xsd");
         addSelf(systemIds, "jakartaee_web_services_client_2_0.xsd");
 
+        // from JakartaEE 11
+        add(systemIds, XmlIdentifiers.WEB_61_XSD, locationFor("web-app_6_1.xsd"));
+        add(systemIds, XmlIdentifiers.WEB_FRAGMENT_61_XSD, locationFor("web-fragment_6_1.xsd"));
+        add(systemIds, XmlIdentifiers.TLD_40_XSD, locationFor("web-jsptaglibrary_4_0.xsd"));
+        addSelf(systemIds, "web-common_6_1.xsd");
+        addSelf(systemIds, "jakartaee_11.xsd");
+        addSelf(systemIds, "jsp_4_0.xsd");
+
         SERVLET_API_PUBLIC_IDS = Collections.unmodifiableMap(publicIds);
         SERVLET_API_SYSTEM_IDS = Collections.unmodifiableMap(systemIds);
     }
diff --git a/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java b/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java
index 1f492a7b27..6335417b10 100644
--- a/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java
+++ b/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java
@@ -91,6 +91,12 @@ public final class XmlIdentifiers {
     public static final String WEB_FRAGMENT_60_XSD = JAKARTAEE_10_NS + "/web-fragment_6_0.xsd";
     public static final String TLD_31_XSD = JAKARTAEE_10_NS + "/web-jsptaglibrary_3_1.xsd";
 
+    // from Jakarta EE 11
+    public static final String JAKARTAEE_11_NS = JAKARTAEE_10_NS;
+    public static final String WEB_61_XSD = JAKARTAEE_11_NS + "/web-app_6_1.xsd";
+    public static final String WEB_FRAGMENT_61_XSD = JAKARTAEE_11_NS + "/web-fragment_6_1.xsd";
+    public static final String TLD_40_XSD = JAKARTAEE_11_NS + "/web-jsptaglibrary_4_0.xsd";
+
     private XmlIdentifiers() {
     }
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/descriptor/web/WebXml.java b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
index 94c883623c..47f45ced36 100644
--- a/java/org/apache/tomcat/util/descriptor/web/WebXml.java
+++ b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
@@ -766,6 +766,9 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
             } else if ("6.0".equals(version)) {
                 javaeeNamespace = XmlIdentifiers.JAKARTAEE_10_NS;
                 webXmlSchemaLocation = XmlIdentifiers.WEB_60_XSD;
+            } else if ("6.1".equals(version)) {
+                javaeeNamespace = XmlIdentifiers.JAKARTAEE_11_NS;
+                webXmlSchemaLocation = XmlIdentifiers.WEB_61_XSD;
             }
             sb.append("<web-app xmlns=\"");
             sb.append(javaeeNamespace);


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


(tomcat) 05/05: Update to use Jakarta 11 Schemas

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 6ae057c994f9be026e9edc4a1a75784e98997ea1
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Mar 28 11:09:17 2024 +0000

    Update to use Jakarta 11 Schemas
---
 conf/web.xml                                                   | 4 ++--
 java/org/apache/jasper/resources/LocalStrings.properties       | 8 ++++----
 java/org/apache/jasper/resources/LocalStrings_cs.properties    | 8 ++++----
 java/org/apache/jasper/resources/LocalStrings_de.properties    | 8 ++++----
 java/org/apache/jasper/resources/LocalStrings_es.properties    | 8 ++++----
 java/org/apache/jasper/resources/LocalStrings_fr.properties    | 8 ++++----
 java/org/apache/jasper/resources/LocalStrings_ja.properties    | 8 ++++----
 java/org/apache/jasper/resources/LocalStrings_ko.properties    | 8 ++++----
 java/org/apache/jasper/resources/LocalStrings_pt_BR.properties | 8 ++++----
 java/org/apache/jasper/resources/LocalStrings_ru.properties    | 4 ++--
 java/org/apache/jasper/resources/LocalStrings_zh_CN.properties | 8 ++++----
 res/META-INF/jasper-el.jar/web-fragment.xml                    | 4 ++--
 res/META-INF/jasper.jar/web-fragment.xml                       | 4 ++--
 res/META-INF/tomcat-websocket.jar/web-fragment.xml             | 4 ++--
 webapps/ROOT/WEB-INF/web.xml                                   | 4 ++--
 webapps/docs/WEB-INF/web.xml                                   | 4 ++--
 webapps/docs/appdev/sample/web/WEB-INF/web.xml                 | 4 ++--
 webapps/docs/appdev/web.xml.txt                                | 4 ++--
 webapps/docs/changelog.xml                                     | 4 ++++
 webapps/docs/jndi-datasource-examples-howto.xml                | 4 ++--
 webapps/examples/WEB-INF/web.xml                               | 4 ++--
 webapps/host-manager/WEB-INF/web.xml                           | 4 ++--
 webapps/manager/WEB-INF/web.xml                                | 4 ++--
 23 files changed, 66 insertions(+), 62 deletions(-)

diff --git a/conf/web.xml b/conf/web.xml
index 788f411d48..aa2292c336 100644
--- a/conf/web.xml
+++ b/conf/web.xml
@@ -18,8 +18,8 @@
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0">
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1">
 
   <!-- ======================== Introduction ============================== -->
   <!-- This document defines default values for *all* web applications      -->
diff --git a/java/org/apache/jasper/resources/LocalStrings.properties b/java/org/apache/jasper/resources/LocalStrings.properties
index 67f4b9e405..8fec3e4fa9 100644
--- a/java/org/apache/jasper/resources/LocalStrings.properties
+++ b/java/org/apache/jasper/resources/LocalStrings.properties
@@ -375,8 +375,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
@@ -403,8 +403,8 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"\n\
-\         version="6.0"\n\
+\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"\n\
+\         version="6.1"\n\
 \         metadata-complete="false">\n\
 <!--\n\
 Automatically created by Apache Tomcat JspC.\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_cs.properties b/java/org/apache/jasper/resources/LocalStrings_cs.properties
index cfc53c63d4..576cb008dc 100644
--- a/java/org/apache/jasper/resources/LocalStrings_cs.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_cs.properties
@@ -69,8 +69,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
@@ -90,8 +90,8 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"\n\
-\         version="6.0"\n\
+\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"\n\
+\         version="6.1"\n\
 \         metadata-complete="false">\n\
 <!--\n\
 Automaticky vytvořeno pomocí Apache Tomcat JspC.\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_de.properties b/java/org/apache/jasper/resources/LocalStrings_de.properties
index 1d5f23bcf9..0018c388d1 100644
--- a/java/org/apache/jasper/resources/LocalStrings_de.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_de.properties
@@ -82,8 +82,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
@@ -103,8 +103,8 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"\n\
-\         version="6.0"\n\
+\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"\n\
+\         version="6.1"\n\
 \         metadata-complete="false">\n\
 <!--\n\
 Automatisch erstellt durch Apache Tomcat JspC.\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_es.properties b/java/org/apache/jasper/resources/LocalStrings_es.properties
index 0235b22a0d..aeefac328e 100644
--- a/java/org/apache/jasper/resources/LocalStrings_es.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_es.properties
@@ -295,8 +295,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
@@ -318,8 +318,8 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"\n\
-\         version="6.0"\n\
+\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"\n\
+\         version="6.1"\n\
 \         metadata-complete="false">\n\
 <!--\n\
 Creado automaticamente mediante Apache Tomcat JspC.\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_fr.properties b/java/org/apache/jasper/resources/LocalStrings_fr.properties
index 908fad030f..8ba6b31f97 100644
--- a/java/org/apache/jasper/resources/LocalStrings_fr.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_fr.properties
@@ -376,8 +376,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
@@ -403,8 +403,8 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"\n\
-\         version="6.0"\n\
+\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"\n\
+\         version="6.1"\n\
 \         metadata-complete="false">\n\
 <!--\n\
 Crée automatiquement par JspC de Apache Tomcat.\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_ja.properties b/java/org/apache/jasper/resources/LocalStrings_ja.properties
index 2360475455..a61d3a9ff4 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ja.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ja.properties
@@ -376,8 +376,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
@@ -404,8 +404,8 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"\n\
-\         version="6.0"\n\
+\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"\n\
+\         version="6.1"\n\
 \         metadata-complete="false">\n\
 <!--\n\
 Apache Tomcat JspC による自動生成\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_ko.properties b/java/org/apache/jasper/resources/LocalStrings_ko.properties
index 78626fdaf7..804c6a9766 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ko.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ko.properties
@@ -362,8 +362,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
@@ -389,8 +389,8 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"\n\
-\         version="6.0"\n\
+\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"\n\
+\         version="6.1"\n\
 \         metadata-complete="false">\n\
 <!--\n\
 Automatically created by Apache Tomcat JspC.\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_pt_BR.properties b/java/org/apache/jasper/resources/LocalStrings_pt_BR.properties
index 7ef3a68a8e..1fe7d7728b 100644
--- a/java/org/apache/jasper/resources/LocalStrings_pt_BR.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_pt_BR.properties
@@ -35,8 +35,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
@@ -56,8 +56,8 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"\n\
-\         version="6.0"\n\
+\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"\n\
+\         version="6.1"\n\
 \         metadata-complete="false">\n\
 <!--\n\
 Automaticamente criado pelo Apache Tomcat JspC.\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_ru.properties b/java/org/apache/jasper/resources/LocalStrings_ru.properties
index 2be84ca60d..d4b34eddcc 100644
--- a/java/org/apache/jasper/resources/LocalStrings_ru.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_ru.properties
@@ -44,8 +44,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
diff --git a/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
index e48c8e9241..6687adbb89 100644
--- a/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_zh_CN.properties
@@ -361,8 +361,8 @@ jspc.webfrg.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \              xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"\n\
-\              version="6.0"\n\
+\                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"\n\
+\              version="6.1"\n\
 \              metadata-complete="true">\n\
 \  <name>org_apache_jasper.jspc</name>\n\
 \  <distributable/>\n\
@@ -388,8 +388,8 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"\n\
 \         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n\
 \             xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee\n\
-\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"\n\
-\         version="6.0"\n\
+\         https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"\n\
+\         version="6.1"\n\
 \         metadata-complete="false">\n\
 <!--\n\
 由 Apache Tomcat JspC 自动生成。\n\
diff --git a/res/META-INF/jasper-el.jar/web-fragment.xml b/res/META-INF/jasper-el.jar/web-fragment.xml
index 1e7d6c50ac..55e70903ab 100644
--- a/res/META-INF/jasper-el.jar/web-fragment.xml
+++ b/res/META-INF/jasper-el.jar/web-fragment.xml
@@ -18,8 +18,8 @@
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"
-              version="6.0"
+                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"
+              version="6.1"
               metadata-complete="true">
     <name>org_apache_jasper_el</name>
     <distributable/>
diff --git a/res/META-INF/jasper.jar/web-fragment.xml b/res/META-INF/jasper.jar/web-fragment.xml
index a255c865d1..eb0a6cfdc0 100644
--- a/res/META-INF/jasper.jar/web-fragment.xml
+++ b/res/META-INF/jasper.jar/web-fragment.xml
@@ -18,8 +18,8 @@
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"
-              version="6.0"
+                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"
+              version="6.1"
               metadata-complete="true">
     <name>org_apache_jasper</name>
     <distributable/>
diff --git a/res/META-INF/tomcat-websocket.jar/web-fragment.xml b/res/META-INF/tomcat-websocket.jar/web-fragment.xml
index 378fe7d1f7..f80de18bcb 100644
--- a/res/META-INF/tomcat-websocket.jar/web-fragment.xml
+++ b/res/META-INF/tomcat-websocket.jar/web-fragment.xml
@@ -18,8 +18,8 @@
 <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"
-              version="6.0"
+                      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd"
+              version="6.1"
               metadata-complete="true">
   <name>org_apache_tomcat_websocket</name>
   <distributable/>
diff --git a/webapps/ROOT/WEB-INF/web.xml b/webapps/ROOT/WEB-INF/web.xml
index e2436014eb..885b1c345e 100644
--- a/webapps/ROOT/WEB-INF/web.xml
+++ b/webapps/ROOT/WEB-INF/web.xml
@@ -18,8 +18,8 @@
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0"
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1"
   metadata-complete="true">
 
   <display-name>Welcome to Tomcat</display-name>
diff --git a/webapps/docs/WEB-INF/web.xml b/webapps/docs/WEB-INF/web.xml
index 0731a2d26d..057eaaf96e 100644
--- a/webapps/docs/WEB-INF/web.xml
+++ b/webapps/docs/WEB-INF/web.xml
@@ -18,8 +18,8 @@
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0"
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1"
   metadata-complete="true">
 
   <display-name>Tomcat Documentation</display-name>
diff --git a/webapps/docs/appdev/sample/web/WEB-INF/web.xml b/webapps/docs/appdev/sample/web/WEB-INF/web.xml
index f9e24c1b6b..440ccae39d 100644
--- a/webapps/docs/appdev/sample/web/WEB-INF/web.xml
+++ b/webapps/docs/appdev/sample/web/WEB-INF/web.xml
@@ -18,8 +18,8 @@
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0">
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1">
 
     <display-name>Hello, World Application</display-name>
     <description>
diff --git a/webapps/docs/appdev/web.xml.txt b/webapps/docs/appdev/web.xml.txt
index 70caa81bdb..afeb6a374a 100644
--- a/webapps/docs/appdev/web.xml.txt
+++ b/webapps/docs/appdev/web.xml.txt
@@ -18,8 +18,8 @@
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0">
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1">
 
 
     <!-- General description of your web application -->
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 0eca891322..86243c6a61 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -128,6 +128,10 @@
         Add a default implementation for <code>HttpSession.getAccessor()</code>
         to align with the Servlet 6.1 API. (markt)
       </add>
+      <add>
+        Add the Jakarta EE 11 XML schemas and update Tomcat and included web
+        applications to use them. (markt)
+      </add>
     </changelog>
   </subsection>
   <subsection name="Coyote">
diff --git a/webapps/docs/jndi-datasource-examples-howto.xml b/webapps/docs/jndi-datasource-examples-howto.xml
index 981543578b..eadd626b8f 100644
--- a/webapps/docs/jndi-datasource-examples-howto.xml
+++ b/webapps/docs/jndi-datasource-examples-howto.xml
@@ -298,8 +298,8 @@ resource to your <a href="config/context.html">Context</a>.</p>
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0">
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1">
   <description>MySQL Test App</description>
   <resource-ref>
       <description>DB Connection</description>
diff --git a/webapps/examples/WEB-INF/web.xml b/webapps/examples/WEB-INF/web.xml
index 442aa032e8..6fecfe135a 100644
--- a/webapps/examples/WEB-INF/web.xml
+++ b/webapps/examples/WEB-INF/web.xml
@@ -18,8 +18,8 @@
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0"
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1"
   metadata-complete="true">
 
     <description>
diff --git a/webapps/host-manager/WEB-INF/web.xml b/webapps/host-manager/WEB-INF/web.xml
index 6c6d501f18..db0862d77b 100644
--- a/webapps/host-manager/WEB-INF/web.xml
+++ b/webapps/host-manager/WEB-INF/web.xml
@@ -18,8 +18,8 @@
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0"
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1"
   metadata-complete="true">
 
   <display-name>Tomcat Host Manager Application</display-name>
diff --git a/webapps/manager/WEB-INF/web.xml b/webapps/manager/WEB-INF/web.xml
index d9e83df3f3..a5332d59d8 100644
--- a/webapps/manager/WEB-INF/web.xml
+++ b/webapps/manager/WEB-INF/web.xml
@@ -18,8 +18,8 @@
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0"
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1"
   metadata-complete="true">
 
   <display-name>Tomcat Manager Application</display-name>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


(tomcat) 03/05: Fix tabs and spaces

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 43b88dbf186f60794fcedaf518990abfb36e7763
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Mar 27 18:11:48 2024 +0000

    Fix tabs and spaces
---
 java/jakarta/servlet/resources/jakartaee_11.xsd    | 732 ++++++++++-----------
 java/jakarta/servlet/resources/jsp_4_0.xsd         |  60 +-
 java/jakarta/servlet/resources/web-app_6_1.xsd     |  72 +-
 java/jakarta/servlet/resources/web-common_6_1.xsd  | 226 +++----
 .../jakarta/servlet/resources/web-fragment_6_1.xsd |  62 +-
 .../servlet/resources/web-jsptaglibrary_4_0.xsd    | 636 +++++++++---------
 6 files changed, 894 insertions(+), 894 deletions(-)

diff --git a/java/jakarta/servlet/resources/jakartaee_11.xsd b/java/jakarta/servlet/resources/jakartaee_11.xsd
index 78409a0194..18ec3dc43d 100644
--- a/java/jakarta/servlet/resources/jakartaee_11.xsd
+++ b/java/jakarta/servlet/resources/jakartaee_11.xsd
@@ -9,19 +9,19 @@
     <xsd:documentation>
 
       Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
-      
+
       This program and the accompanying materials are made available under the
       terms of the Eclipse Public License v. 2.0, which is available at
       http://www.eclipse.org/legal/epl-2.0.
-      
+
       This Source Code may also be made available under the following Secondary
       Licenses when the conditions for such availability set forth in the
       Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
       version 2 with the GNU Classpath Exception, which is available at
       https://www.gnu.org/software/classpath/license.html.
-      
+
       SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -31,20 +31,20 @@
       The following definitions that appear in the common
       shareable schema(s) of Jakarta EE deployment descriptors should be
       interpreted with respect to the context they are included:
-      
+
       Deployment Component may indicate one of the following:
       Jakarta EE application;
       application client;
       web application;
       enterprise bean;
-      resource adapter; 
-      
+      resource adapter;
+
       Deployment File may indicate one of the following:
       ear file;
       war file;
       jar file;
       rar file;
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -59,10 +59,10 @@
 
         This group keeps the usage of the contained description related
         elements consistent across Jakarta EE deployment descriptors.
-        
+
         All elements may occur multiple times with different languages,
         to support localization of the content.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -87,7 +87,7 @@
 
         This group keeps the usage of the contained JNDI environment
         reference elements consistent across Jakarta EE deployment descriptors.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -181,7 +181,7 @@
 
         This group collects elements that are common to most
         JNDI resource elements.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -193,7 +193,7 @@
           <xsd:documentation>
 
             The JNDI name to be looked up to resolve a resource reference.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -207,7 +207,7 @@
         This group collects elements that are common to all the
         JNDI resource elements. It does not include the lookup-name
         element, that is only applicable to some resource elements.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -226,13 +226,13 @@
             names to names of resources known to the application
             server.  This mapped name is often a global JNDI name,
             but may be a name of any form.
-            
+
             Application servers are not required to support any
             particular form or type of mapped name, nor the ability
             to use mapped names.  The mapped name is
             product-dependent and often installation-dependent.  No
             use of a mapped name is portable.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -251,7 +251,7 @@
       <xsd:documentation>
 
         Configuration of an administered object.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -262,7 +262,7 @@
           <xsd:documentation>
 
             Description of this administered object.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -273,7 +273,7 @@
 
             The name element specifies the JNDI name of the
             administered object being defined.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -284,7 +284,7 @@
           <xsd:documentation>
 
             The administered object's interface type.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -294,7 +294,7 @@
           <xsd:documentation>
 
             The administered object's class name.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -304,7 +304,7 @@
           <xsd:documentation>
 
             Resource adapter name.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -315,9 +315,9 @@
         <xsd:annotation>
           <xsd:documentation>
 
-            Property of the administered object property.  This may be a 
+            Property of the administered object property.  This may be a
             vendor-specific property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -334,7 +334,7 @@
       <xsd:documentation>
 
         Configuration of a Connector Connection Factory resource.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -345,7 +345,7 @@
           <xsd:documentation>
 
             Description of this resource.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -356,7 +356,7 @@
 
             The name element specifies the JNDI name of the
             resource being defined.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -365,9 +365,9 @@
         <xsd:annotation>
           <xsd:documentation>
 
-            The fully qualified class name of the connection factory 
-            interface. 
-            
+            The fully qualified class name of the connection factory
+            interface.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -377,7 +377,7 @@
           <xsd:documentation>
 
             Resource adapter name.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -389,7 +389,7 @@
 
             Maximum number of connections that should be concurrently
             allocated for a connection pool.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -401,7 +401,7 @@
 
             Minimum number of connections that should be concurrently
             allocated for a connection pool.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -411,9 +411,9 @@
         <xsd:annotation>
           <xsd:documentation>
 
-            The level of transaction support the connection factory 
-            needs to support. 
-            
+            The level of transaction support the connection factory
+            needs to support.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -426,7 +426,7 @@
 
             Resource property.  This may be a vendor-specific
             property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -443,7 +443,7 @@
       <xsd:documentation>
 
         Configuration of a ContextService.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -454,7 +454,7 @@
           <xsd:documentation>
 
             Description of this ContextService.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -466,7 +466,7 @@
             JNDI name of the ContextService instance being defined.
             The JNDI name must be in a valid Jakarta EE namespace,
             such as java:comp, java:module, java:app, or java:global.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -479,13 +479,13 @@
 
             A ContextService injection point annotated with these qualifier annotations
             injects a bean that is produced by this context-service element.
-            Applications can define their own Producers for ContextService injection points 
-            as long as the qualifier annotations on the producer do not conflict with the 
+            Applications can define their own Producers for ContextService injection points
+            as long as the qualifier annotations on the producer do not conflict with the
             non-empty qualifier list of a context-service.
-            
+
             You can specify a single qualifier element with no value to indicate an
             empty list of qualifier annotation classes.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -510,7 +510,7 @@
             propagated nor unchanged specify (or default to) Remaining,
             then Remaining is automatically appended to the list of
             cleared context types.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -535,7 +535,7 @@
             propagated context defaults to Remaining. You can specify
             a single propagated element with no value to indicate that
             no context types should be propagated.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -556,7 +556,7 @@
             unchanged context defaults to empty. You can specify
             a single unchanged element with no value to indicate that
             no context types should be left unchanged.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -568,7 +568,7 @@
           <xsd:documentation>
 
             Vendor-specific property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -585,7 +585,7 @@
       <xsd:documentation>
 
         Configuration of a DataSource.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -596,7 +596,7 @@
           <xsd:documentation>
 
             Description of this DataSource.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -607,7 +607,7 @@
 
             The name element specifies the JNDI name of the
             data source being defined.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -619,7 +619,7 @@
 
             DataSource, XADataSource or ConnectionPoolDataSource
             implementation class.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -630,7 +630,7 @@
           <xsd:documentation>
 
             Database server name.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -641,7 +641,7 @@
           <xsd:documentation>
 
             Port number where a server is listening for requests.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -652,7 +652,7 @@
           <xsd:documentation>
 
             Name of a database on a server.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -667,7 +667,7 @@
             such as <code>serverName</code>, <code>databaseName</code>
             and <code>portNumber</code>, the more specific properties will
             take precedence and <code>url</code> will be ignored.
-            
+
             ]]>
           </xsd:documentation>
         </xsd:annotation>
@@ -679,7 +679,7 @@
           <xsd:documentation>
 
             User name to use for connection authentication.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -690,7 +690,7 @@
           <xsd:documentation>
 
             Password to use for connection authentication.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -703,7 +703,7 @@
 
             JDBC DataSource property.  This may be a vendor-specific
             property or a less commonly used DataSource property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -715,7 +715,7 @@
 
             Sets the maximum time in seconds that this data source
             will wait while attempting to connect to a database.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -727,7 +727,7 @@
 
             Set to false if connections should not participate in
             transactions.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -738,7 +738,7 @@
           <xsd:documentation>
 
             Isolation level for connections.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -750,7 +750,7 @@
 
             Number of connections that should be created when a
             connection pool is initialized.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -762,7 +762,7 @@
 
             Maximum number of connections that should be concurrently
             allocated for a connection pool.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -774,7 +774,7 @@
 
             Minimum number of connections that should be concurrently
             allocated for a connection pool.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -787,7 +787,7 @@
             The number of seconds that a physical connection should
             remain unused in the pool before the connection is
             closed for a connection pool.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -799,7 +799,7 @@
 
             The total number of statements that a connection pool
             should keep open.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -824,10 +824,10 @@
         tools used by such a Deployment File consumer will display
         the description when processing the parent element that
         contains the description.
-        
+
         The lang attribute defines the language that the
-        description is provided in. The default value is "en" (English). 
-        
+        description is provided in. The default value is "en" (English).
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -842,8 +842,8 @@
       <xsd:documentation>
 
         This type defines a dewey decimal that is used
-        to describe versions of documents. 
-        
+        to describe versions of documents.
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:restriction base="xsd:token">
@@ -861,16 +861,16 @@
         The display-name type contains a short name that is intended
         to be displayed by tools. It is used by display-name
         elements.  The display name need not be unique.
-        
-        Example: 
-        
+
+        Example:
+
         ...
         <display-name xml:lang="en">
         Employee Self Service
         </display-name>
-        
-        The value of the xml:lang attribute is "en" (English) by default. 
-        
+
+        The value of the xml:lang attribute is "en" (English) by default.
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -891,11 +891,11 @@
         The ejb-linkType is used by ejb-link
         elements in the ejb-ref or ejb-local-ref elements to specify
         that an enterprise bean reference is linked to enterprise bean.
-        
+
         The value of the ejb-link element must be the ejb-name of an
         enterprise bean in the same ejb-jar file or in another ejb-jar
-        file in the same Jakarta EE application unit. 
-        
+        file in the same Jakarta EE application unit.
+
         Alternatively, the name in the ejb-link element may be
         composed of a path name specifying the ejb-jar containing the
         referenced enterprise bean with the ejb-name of the target
@@ -904,13 +904,13 @@
         Deployment Component that is referencing the enterprise
         bean.  This allows multiple enterprise beans with the same
         ejb-name to be uniquely identified.
-        
+
         Examples:
-        
+
         <ejb-link>EmployeeRecord</ejb-link>
-        
+
         <ejb-link>../products/product.jar#ProductEJB</ejb-link>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -930,22 +930,22 @@
         the declaration of a reference to an enterprise bean's local
         home or to the local business interface of a 3.0 bean.
         The declaration consists of:
-        
+
         - an optional description
-        - the enterprise bean's reference name used in the code of the 
+        - the enterprise bean's reference name used in the code of the
         Deployment Component that's referencing the enterprise bean.
         - the optional expected type of the referenced enterprise bean
-        - the optional expected local interface of the referenced 
-        enterprise bean or the local business interface of the 
+        - the optional expected local interface of the referenced
+        enterprise bean or the local business interface of the
         referenced enterprise bean.
-        - the optional expected local home interface of the referenced 
+        - the optional expected local home interface of the referenced
         enterprise bean. Not applicable if this ejb-local-ref refers
         to the local business interface of a 3.0 bean.
-        - optional ejb-link information, used to specify the 
+        - optional ejb-link information, used to specify the
         referenced enterprise bean
-        - optional elements to define injection of the named enterprise  
+        - optional elements to define injection of the named enterprise
         bean into a component field or property.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -980,17 +980,17 @@
     <xsd:annotation>
       <xsd:documentation>
         <![CDATA[
-        The ejb-ref-name element contains the name of an enterprise bean reference. 
-        The enterprise bean reference is an entry in the Deployment Component's 
-        environment and is relative to the java:comp/env context.  The name must 
+        The ejb-ref-name element contains the name of an enterprise bean reference.
+        The enterprise bean reference is an entry in the Deployment Component's
+        environment and is relative to the java:comp/env context.  The name must
         be unique within the Deployment Component.
-        
+
         It is recommended that name is prefixed with "ejb/".
-        
+
         Example:
-        
+
         <ejb-ref-name>ejb/Payroll</ejb-ref-name>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -1008,25 +1008,25 @@
 
         The ejb-refType is used by ejb-ref elements for the
         declaration of a reference to an enterprise bean's home or
-        to the remote business interface of a 3.0 bean.  
+        to the remote business interface of a 3.0 bean.
         The declaration consists of:
-        
+
         - an optional description
         - the enterprise bean's reference name used in the code of
         the Deployment Component that's referencing the enterprise
-        bean. 
+        bean.
         - the optional expected type of the referenced enterprise bean
         - the optional remote interface of the referenced enterprise bean
-        or the remote business interface of the referenced enterprise 
+        or the remote business interface of the referenced enterprise
         bean
-        - the optional expected home interface of the referenced 
+        - the optional expected home interface of the referenced
         enterprise bean.  Not applicable if this ejb-ref
         refers to the remote business interface of a 3.0 bean.
         - optional ejb-link information, used to specify the
         referenced enterprise bean
         - optional elements to define injection of the named enterprise
         bean into a component field or property
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1063,13 +1063,13 @@
 
         The ejb-ref-typeType contains the expected type of the
         referenced enterprise bean.
-        
+
         The ejb-ref-type designates a value
         that must be one of the following:
-        
+
         Entity
         Session
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1088,8 +1088,8 @@
       <xsd:documentation>
 
         This type is used to designate an empty
-        element when used. 
-        
+        element when used.
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:attribute name="id"
@@ -1108,21 +1108,21 @@
         description, the name of the environment entry, a type
         (optional if the value is injected, otherwise required), and
         an optional value.
-        
+
         It also includes optional elements to define injection of
         the named resource into fields or JavaBeans properties.
-        
+
         If a value is not specified and injection is requested,
         no injection will occur and no entry of the specified name
         will be created.  This allows an initial value to be
         specified in the source code without being incorrectly
         changed when no override has been specified.
-        
+
         If a value is not specified and no injection is requested,
-        a value must be supplied during deployment. 
-        
+        a value must be supplied during deployment.
+
         This type is used by env-entry elements.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1138,15 +1138,15 @@
             The env-entry-name element contains the name of a
             Deployment Component's environment entry.  The name
             is a JNDI name relative to the java:comp/env
-            context.  The name must be unique within a 
+            context.  The name must be unique within a
             Deployment Component. The uniqueness
             constraints must be defined within the declared
             context.
-            
+
             Example:
-            
+
             <env-entry-name>minAmount</env-entry-name>
-            
+
             ]]>
           </xsd:documentation>
         </xsd:annotation>
@@ -1163,11 +1163,11 @@
             be omitted, or must match the type of the injection
             target.  If no injection target is specified, the type
             is required.
-            
+
             Example:
-            
+
             <env-entry-type>java.lang.Integer</env-entry-type>
-            
+
             ]]>
           </xsd:documentation>
         </xsd:annotation>
@@ -1184,11 +1184,11 @@
             constructor of the specified type that takes a
             single String parameter, or for java.lang.Character,
             a single character.
-            
+
             Example:
-            
+
             <env-entry-value>100.00</env-entry-value>
-            
+
             ]]>
           </xsd:documentation>
         </xsd:annotation>
@@ -1209,9 +1209,9 @@
         This type contains the fully-qualified Java type of the
         environment entry value that is expected by the
         application's code.
-        
+
         The following are the legal values of env-entry-type-valuesType:
-        
+
         java.lang.Boolean
         java.lang.Byte
         java.lang.Character
@@ -1221,15 +1221,15 @@
         java.lang.Long
         java.lang.Float
         java.lang.Double
-        		  java.lang.Class
-        		  any enumeration type (i.e. a subclass of java.lang.Enum)
-        
+        java.lang.Class
+        any enumeration type (i.e. a subclass of java.lang.Enum)
+
         Examples:
-        
+
         <env-entry-type>java.lang.Boolean</env-entry-type>
         <env-entry-type>java.lang.Class</env-entry-type>
         <env-entry-type>com.example.Color</env-entry-type>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -1251,7 +1251,7 @@
         of name used in Class.forName().  Tools that need the
         canonical name (the name used in source code) will need
         to convert this binary name to the canonical name.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1267,9 +1267,9 @@
       <xsd:documentation>
 
         This type defines four different values which can designate
-        boolean values. This includes values yes and no which are 
+        boolean values. This includes values yes and no which are
         not designated by xsd:boolean
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1292,12 +1292,12 @@
         The icon type contains small-icon and large-icon elements
         that specify the file names for small and large GIF, JPEG,
         or PNG icon images used to represent the parent element in a
-        GUI tool. 
-        
+        GUI tool.
+
         The xml:lang attribute defines the language that the
         icon file names are provided in. Its value is "en" (English)
-        by default. 
-        
+        by default.
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1311,14 +1311,14 @@
             containing a small (16 x 16) icon image. The file
             name is a relative path within the Deployment
             Component's Deployment File.
-            
+
             The image may be in the GIF, JPEG, or PNG format.
             The icon can be used by tools.
-            
+
             Example:
-            
+
             <small-icon>employee-service-icon16x16.jpg</small-icon>
-            
+
             ]]>
           </xsd:documentation>
         </xsd:annotation>
@@ -1331,17 +1331,17 @@
             <![CDATA[
             The large-icon element contains the name of a file
             containing a large
-            (32 x 32) icon image. The file name is a relative 
+            (32 x 32) icon image. The file name is a relative
             path within the Deployment Component's Deployment
             File.
-            
+
             The image may be in the GIF, JPEG, or PNG format.
             The icon can be used by tools.
-            
+
             Example:
-            
+
             <large-icon>employee-service-icon32x32.jpg</large-icon>
-            
+
             ]]>
           </xsd:documentation>
         </xsd:annotation>
@@ -1361,22 +1361,22 @@
 
         An injection target specifies a class and a name within
         that class into which a resource should be injected.
-        
+
         The injection target class specifies the fully qualified
         class name that is the target of the injection.  The
         Jakarta EE specifications describe which classes can be an
         injection target.
-        
+
         The injection target name specifies the target within
         the specified class.  The target is first looked for as a
         JavaBeans property name.  If not found, the target is
         looked for as a field name.
-        
+
         The specified resource will be injected into the target
         during initialization of the class by either calling the
         set method for the target property or by setting a value
         into the named field.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1391,13 +1391,13 @@
     <xsd:annotation>
       <xsd:documentation>
 
-        	The following transaction isolation levels are allowed
-        	(see documentation for the java.sql.Connection interface):
+        The following transaction isolation levels are allowed
+        (see documentation for the java.sql.Connection interface):
         TRANSACTION_READ_UNCOMMITTED
         TRANSACTION_READ_COMMITTED
         TRANSACTION_REPEATABLE_READ
         TRANSACTION_SERIALIZABLE
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:restriction base="xsd:string">
@@ -1416,9 +1416,9 @@
       <xsd:documentation>
 
         The java-identifierType defines a Java identifier.
-        The users of this type should further verify that 
+        The users of this type should further verify that
         the content does not contain Java reserved keywords.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1438,7 +1438,7 @@
         This is a generic type that designates a Java primitive
         type or a fully qualified name of a Java interface/type,
         or an array of such types.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1458,13 +1458,13 @@
         The jdbc-urlType contains the url pattern of the mapping.
         It must follow the rules specified in Section 9.3 of the
         JDBC Specification where the format is:
-        
+
         jdbc:<subprotocol>:<subname>
-        
+
         Example:
-        
+
         <url>jdbc:mysql://localhost:3307/testdb</url>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -1483,7 +1483,7 @@
       <xsd:documentation>
 
         Configuration of a Messaging Connection Factory.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1494,7 +1494,7 @@
           <xsd:documentation>
 
             Description of this Messaging Connection Factory.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1505,7 +1505,7 @@
 
             The name element specifies the JNDI name of the
             messaging connection factory being defined.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1517,10 +1517,10 @@
 
             Fully-qualified name of the messaging connection factory
             interface.  Permitted values are jakarta.jms.ConnectionFactory,
-            jakarta.jms.QueueConnectionFactory, or 
+            jakarta.jms.QueueConnectionFactory, or
             jakarta.jms.TopicConnectionFactory.  If not specified,
             jakarta.jms.ConnectionFactory will be used.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1530,10 +1530,10 @@
         <xsd:annotation>
           <xsd:documentation>
 
-            Fully-qualified name of the messaging connection factory 
-            implementation class.  Ignored if a resource adapter  
+            Fully-qualified name of the messaging connection factory
+            implementation class.  Ignored if a resource adapter
             is used.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1546,7 +1546,7 @@
             Resource adapter name.  If not specified, the application
             server will define the default behavior, which may or may
             not involve the use of a resource adapter.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1557,7 +1557,7 @@
           <xsd:documentation>
 
             User name to use for connection authentication.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1568,7 +1568,7 @@
           <xsd:documentation>
 
             Password to use for connection authentication.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1579,7 +1579,7 @@
           <xsd:documentation>
 
             Client id to use for connection.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1592,7 +1592,7 @@
 
             Messaging Connection Factory property.  This may be a vendor-specific
             property or a less commonly used ConnectionFactory property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1604,7 +1604,7 @@
 
             Set to false if connections should not participate in
             transactions.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1616,7 +1616,7 @@
 
             Maximum number of connections that should be concurrently
             allocated for a connection pool.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1628,7 +1628,7 @@
 
             Minimum number of connections that should be concurrently
             allocated for a connection pool.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1645,7 +1645,7 @@
       <xsd:documentation>
 
         Configuration of a Messaging Destination.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1656,7 +1656,7 @@
           <xsd:documentation>
 
             Description of this Messaging Destination.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1667,7 +1667,7 @@
 
             The name element specifies the JNDI name of the
             messaging destination being defined.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1678,7 +1678,7 @@
 
             Fully-qualified name of the messaging destination interface.
             Permitted values are jakarta.jms.Queue and jakarta.jms.Topic
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1692,7 +1692,7 @@
             class.  Ignored if a resource adapter is used unless the
             resource adapter defines more than one destination implementation
             class for the specified interface.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1705,7 +1705,7 @@
             Resource adapter name.  If not specified, the application
             server will define the default behavior, which may or may
             not involve the use of a resource adapter.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1716,7 +1716,7 @@
           <xsd:documentation>
 
             Name of the queue or topic.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1729,7 +1729,7 @@
 
             Messaging Destination property.  This may be a vendor-specific
             property or a less commonly used Destination property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1749,7 +1749,7 @@
         Deployment Component's environment and is relative to the
         java:comp/env context.  A JNDI name must be unique within the
         Deployment Component.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1765,12 +1765,12 @@
       <xsd:documentation>
         <![CDATA[
         The homeType defines the fully-qualified name of
-        an enterprise bean's home interface. 
-        
+        an enterprise bean's home interface.
+
         Example:
-        
+
         <home>com.aardvark.payroll.PayrollHome</home>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -1791,12 +1791,12 @@
         Note that each class may have only one lifecycle callback
         method for any given event and that the method may not
         be overloaded.
-        
+
         If the lifefycle-callback-class element is missing then
         the class defining the callback is assumed to be the
         component class in scope at the place in the descriptor
         in which the callback definition appears.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1817,7 +1817,7 @@
 
         The listenerType indicates the deployment properties for a web
         application listener bean.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1831,7 +1831,7 @@
             application must be registered as a web
             application listener bean. The value is the fully
             qualified classname of the listener class.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1849,7 +1849,7 @@
 
         The localType defines the fully-qualified name of an
         enterprise bean's local interface.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1866,7 +1866,7 @@
 
         The local-homeType defines the fully-qualified
         name of an enterprise bean's local home interface.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1882,7 +1882,7 @@
       <xsd:documentation>
 
         Configuration of a Mail Session resource.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1893,7 +1893,7 @@
           <xsd:documentation>
 
             Description of this Mail Session resource.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1904,7 +1904,7 @@
 
             The name element specifies the JNDI name of the
             Mail Session resource being defined.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1915,7 +1915,7 @@
           <xsd:documentation>
 
             Storage protocol.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1926,7 +1926,7 @@
           <xsd:documentation>
 
             Service provider store protocol implementation class
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1937,7 +1937,7 @@
           <xsd:documentation>
 
             Transport protocol.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1948,7 +1948,7 @@
           <xsd:documentation>
 
             Service provider transport protocol implementation class
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1959,7 +1959,7 @@
           <xsd:documentation>
 
             Mail server host name.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1970,7 +1970,7 @@
           <xsd:documentation>
 
             Mail server user name.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1981,7 +1981,7 @@
           <xsd:documentation>
 
             Password.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1992,7 +1992,7 @@
           <xsd:documentation>
 
             Email address to indicate the message sender.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2005,7 +2005,7 @@
 
             Mail server property.  This may be a vendor-specific
             property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2022,7 +2022,7 @@
       <xsd:documentation>
 
         Configuration of a ManagedExecutorService.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -2033,7 +2033,7 @@
           <xsd:documentation>
 
             Description of this ManagedExecutorService.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2045,7 +2045,7 @@
             JNDI name of the ManagedExecutorService instance being defined.
             The JNDI name must be in a valid Jakarta EE namespace,
             such as java:comp, java:module, java:app, or java:global.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2064,7 +2064,7 @@
             such as java:comp, java:module, java:app, or java:global.
             In the absence of a configured value,
             java:comp/DefaultContextService is used.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2077,13 +2077,13 @@
 
             A ManagedExecutorService injection point annotated with these qualifier annotations
             injects a bean that is produced by this managed-executor element.
-            Applications can define their own Producers for ManagedExecutorService injection points 
-            as long as the qualifier annotations on the producer do not conflict with the 
+            Applications can define their own Producers for ManagedExecutorService injection points
+            as long as the qualifier annotations on the producer do not conflict with the
             non-empty qualifier list of a managed-executor.
-            
+
             You can specify a single qualifier element with no value to indicate an
             empty list of qualifier annotation classes.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2101,7 +2101,7 @@
             action runs inline if it has not yet started.
             The default is unbounded, although still subject to
             resource constraints of the system.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2114,7 +2114,7 @@
 
             The amount of time in milliseconds that a task or action
             can execute before it is considered hung.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2131,7 +2131,7 @@
             virtual threads if it is capable of doing so
             and if the request is not overridden by vendor-specific
             configuration that restricts the use of virtual threads.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2143,7 +2143,7 @@
           <xsd:documentation>
 
             Vendor-specific property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2160,7 +2160,7 @@
       <xsd:documentation>
 
         Configuration of a ManagedScheduledExecutorService.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -2171,7 +2171,7 @@
           <xsd:documentation>
 
             Description of this ManagedScheduledExecutorService.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2184,7 +2184,7 @@
             being defined.
             The JNDI name must be in a valid Jakarta EE namespace,
             such as java:comp, java:module, java:app, or java:global.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2203,7 +2203,7 @@
             such as java:comp, java:module, java:app, or java:global.
             In the absence of a configured value,
             java:comp/DefaultContextService is used.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2216,13 +2216,13 @@
 
             A ManagedScheduledExecutorService injection point annotated with these qualifier annotations
             injects a bean that is produced by this managed-scheduled-executor element.
-            Applications can define their own Producers for ManagedScheduledExecutorService injection points 
-            as long as the qualifier annotations on the producer do not conflict with the 
+            Applications can define their own Producers for ManagedScheduledExecutorService injection points
+            as long as the qualifier annotations on the producer do not conflict with the
             non-empty qualifier list of a managed-scheduled-executor.
-            
+
             You can specify a single qualifier element with no value to indicate an
             empty list of qualifier annotation classes.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2241,7 +2241,7 @@
             does not apply to tasks that are scheduled via the schedule methods.
             The default is unbounded, although still subject to
             resource constraints of the system.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2254,7 +2254,7 @@
 
             The amount of time in milliseconds that a task or action
             can execute before it is considered hung.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2271,7 +2271,7 @@
             virtual threads if it is capable of doing so
             and if the request is not overridden by vendor-specific
             configuration that restricts the use of virtual threads.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2283,7 +2283,7 @@
           <xsd:documentation>
 
             Vendor-specific property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2300,7 +2300,7 @@
       <xsd:documentation>
 
         Configuration of a ManagedThreadFactory.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -2311,7 +2311,7 @@
           <xsd:documentation>
 
             Description of this ManagedThreadFactory.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2323,7 +2323,7 @@
             JNDI name of the ManagedThreadFactory instance being defined.
             The JNDI name must be in a valid Jakarta EE namespace,
             such as java:comp, java:module, java:app, or java:global.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2342,7 +2342,7 @@
             such as java:comp, java:module, java:app, or java:global.
             In the absence of a configured value,
             java:comp/DefaultContextService is used.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2355,13 +2355,13 @@
 
             A ManagedThreadFactory injection point annotated with these qualifier annotations
             injects a bean that is produced by this managed-thread-factory element.
-            Applications can define their own Producers for ManagedThreadFactory injection points 
-            as long as the qualifier annotations on the producer do not conflict with the 
+            Applications can define their own Producers for ManagedThreadFactory injection points
+            as long as the qualifier annotations on the producer do not conflict with the
             non-empty qualifier list of a managed-thread-factory.
-            
+
             You can specify a single qualifier element with no value to indicate an
             empty list of qualifier annotation classes.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2374,7 +2374,7 @@
 
             Priority for threads created by this thread factory.
             The default is 5 (java.lang.Thread.NORM_PRIORITY).
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2391,7 +2391,7 @@
             virtual threads if it is capable of doing so
             and if the request is not overridden by vendor-specific
             configuration that restricts the use of virtual threads.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2403,7 +2403,7 @@
           <xsd:documentation>
 
             Vendor-specific property.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2421,7 +2421,7 @@
 
         This type is a general type that can be used to declare
         parameter/value lists.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -2436,7 +2436,7 @@
 
             The param-name element contains the name of a
             parameter.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2447,7 +2447,7 @@
 
             The param-value element contains the value of a
             parameter.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2465,7 +2465,7 @@
 
         The elements that use this type designate either a relative
         path or an absolute path starting with a "/".
-        
+
         In elements that specify a pathname to a file within the
         same Deployment File, relative filenames (i.e., those not
         starting with "/") are considered relative to the root of
@@ -2474,7 +2474,7 @@
         the Deployment File's namespace.  In general, relative names
         are preferred.  The exception is .war files where absolute
         names are preferred for consistency with the Servlet API.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -2493,7 +2493,7 @@
         of Deployment Component's reference to a persistence context
         associated within a Deployment Component's
         environment. It consists of:
-        
+
         - an optional description
         - the persistence context reference name
         - an optional persistence unit name.  If not specified,
@@ -2507,14 +2507,14 @@
         specified, Synchronized is assumed.
         - an optional list of persistence properties
         - optional injection targets
-        
+
         Examples:
-        
+
         <persistence-context-ref>
         <persistence-context-ref-name>myPersistenceContext
         </persistence-context-ref-name>
         </persistence-context-ref>
-        
+
         <persistence-context-ref>
         <persistence-context-ref-name>myPersistenceContext
         </persistence-context-ref-name>
@@ -2522,7 +2522,7 @@
         </persistence-unit-name>
         <persistence-context-type>Extended</persistence-context-type>
         </persistence-context-ref>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -2541,7 +2541,7 @@
             value is the environment entry name used in
             Deployment Component code.  The name is a JNDI name
             relative to the java:comp/env context.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2554,16 +2554,16 @@
             The Application Assembler(or BeanProvider) may use the
             following syntax to avoid the need to rename persistence
             units to have unique names within a Jakarta EE application.
-            
+
             The Application Assembler specifies the pathname of the
             root of the persistence.xml file for the referenced
             persistence unit and appends the name of the persistence
             unit separated from the pathname by #. The pathname is
-            relative to the referencing application component jar file. 
+            relative to the referencing application component jar file.
             In this manner, multiple persistence units with the same
-            persistence unit name may be uniquely identified when the 
+            persistence unit name may be uniquely identified when the
             Application Assembler cannot change persistence unit names.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2583,11 +2583,11 @@
             Used to specify properties for the container or persistence
             provider.  Vendor-specific properties may be included in
             the set of properties.  Properties that are not recognized
-            by a vendor must be ignored.  Entries that make use of the 
+            by a vendor must be ignored.  Entries that make use of the
             namespace jakarta.persistence and its subnamespaces must not
             be used for vendor-specific properties.  The namespace
             jakarta.persistence is reserved for use by the specification.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2604,15 +2604,15 @@
     <xsd:annotation>
       <xsd:documentation>
 
-        The persistence-context-synchronizationType specifies 
+        The persistence-context-synchronizationType specifies
         whether a container-managed persistence context is automatically
         synchronized with the current transaction.
-        
-        The value of the persistence-context-synchronization element 
+
+        The value of the persistence-context-synchronization element
         must be one of the following:
         Synchronized
         Unsynchronized
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -2631,13 +2631,13 @@
       <xsd:documentation>
 
         The persistence-context-typeType specifies the transactional
-        nature of a persistence context reference.  
-        
+        nature of a persistence context reference.
+
         The value of the persistence-context-type element must be
         one of the following:
         Transaction
         Extended
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -2657,7 +2657,7 @@
 
         Specifies a thread priority value in the range of
         1 (java.lang.Thread.MIN_PRIORITY) to 10 (java.lang.Thread.MAX_PRIORITY).
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -2675,7 +2675,7 @@
       <xsd:documentation>
 
         Specifies a name/value pair.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -2701,27 +2701,27 @@
         of Deployment Component's reference to a persistence unit
         associated within a Deployment Component's
         environment. It consists of:
-        
+
         - an optional description
         - the persistence unit reference name
         - an optional persistence unit name.  If not specified,
         the default persistence unit is assumed.
         - optional injection targets
-        
+
         Examples:
-        
+
         <persistence-unit-ref>
         <persistence-unit-ref-name>myPersistenceUnit
         </persistence-unit-ref-name>
         </persistence-unit-ref>
-        
+
         <persistence-unit-ref>
         <persistence-unit-ref-name>myPersistenceUnit
         </persistence-unit-ref-name>
         <persistence-unit-name>PersistenceUnit1
         </persistence-unit-name>
         </persistence-unit-ref>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -2740,7 +2740,7 @@
             value is the environment entry name used in
             Deployment Component code.  The name is a JNDI name
             relative to the java:comp/env context.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2753,16 +2753,16 @@
             The Application Assembler(or BeanProvider) may use the
             following syntax to avoid the need to rename persistence
             units to have unique names within a Jakarta EE application.
-            
+
             The Application Assembler specifies the pathname of the
             root of the persistence.xml file for the referenced
             persistence unit and appends the name of the persistence
             unit separated from the pathname by #. The pathname is
-            relative to the referencing application component jar file. 
+            relative to the referencing application component jar file.
             In this manner, multiple persistence units with the same
-            persistence unit name may be uniquely identified when the 
+            persistence unit name may be uniquely identified when the
             Application Assembler cannot change persistence unit names.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2781,11 +2781,11 @@
         <![CDATA[
         The remote element contains the fully-qualified name
         of the enterprise bean's remote interface.
-        
+
         Example:
-        
+
         <remote>com.wombat.empl.EmployeeService</remote>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -2809,25 +2809,25 @@
         resource environment reference name, and an optional
         indication of the resource environment reference type
         expected by the Deployment Component code.
-        
+
         It also includes optional elements to define injection of
         the named resource into fields or JavaBeans properties.
-        
+
         The resource environment type must be supplied unless an
         injection target is specified, in which case the type
         of the target is used.  If both are specified, the type
         must be assignment compatible with the type of the injection
         target.
-        
+
         Example:
-        
+
         <resource-env-ref>
         <resource-env-ref-name>jms/StockQueue
         </resource-env-ref-name>
         <resource-env-ref-type>jakarta.jms.Queue
         </resource-env-ref-type>
         </resource-env-ref>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -2844,10 +2844,10 @@
             The resource-env-ref-name element specifies the name
             of a resource environment reference; its value is
             the environment entry name used in
-            the Deployment Component code.  The name is a JNDI 
-            name relative to the java:comp/env context and must 
+            the Deployment Component code.  The name is a JNDI
+            name relative to the java:comp/env context and must
             be unique within a Deployment Component.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2861,7 +2861,7 @@
             of a resource environment reference.  It is the
             fully qualified name of a Java language class or
             interface.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2887,25 +2887,25 @@
         (Application or Container), and an optional specification of
         the shareability of connections obtained from the resource
         (Shareable or Unshareable).
-        
+
         It also includes optional elements to define injection of
         the named resource into fields or JavaBeans properties.
-        
+
         The connection factory type must be supplied unless an
         injection target is specified, in which case the type
         of the target is used.  If both are specified, the type
         must be assignment compatible with the type of the injection
         target.
-        
+
         Example:
-        
+
         <resource-ref>
         <res-ref-name>jdbc/EmployeeAppDB</res-ref-name>
         <res-type>javax.sql.DataSource</res-type>
         <res-auth>Container</res-auth>
         <res-sharing-scope>Shareable</res-sharing-scope>
         </resource-ref>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -2922,9 +2922,9 @@
             The res-ref-name element specifies the name of a
             resource manager connection factory reference.
             The name is a JNDI name relative to the
-            java:comp/env context.  
-            The name must be unique within a Deployment File. 
-            
+            java:comp/env context.
+            The name must be unique within a Deployment File.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2938,7 +2938,7 @@
             source. The type is specified by the fully qualified
             Java language class or interface
             expected to be implemented by the data source.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -2967,12 +2967,12 @@
         on behalf of the Deployment Component. In the latter case,
         the Container uses information that is supplied by the
         Deployer.
-        
+
         The value must be one of the two following:
-        
+
         Application
         Container
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -2994,12 +2994,12 @@
         obtained through the given resource manager connection
         factory reference can be shared. The value, if specified,
         must be one of the two following:
-        
+
         Shareable
         Unshareable
-        
+
         The default value is Shareable.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3018,9 +3018,9 @@
       <xsd:documentation>
 
         The run-asType specifies the run-as identity to be
-        used for the execution of a component. It contains an 
+        used for the execution of a component. It contains an
         optional description, and the name of a security role.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -3043,9 +3043,9 @@
       <xsd:documentation>
 
         The role-nameType designates the name of a security role.
-        
+
         The name must conform to the lexical rules for a token.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3063,9 +3063,9 @@
         The security-roleType contains the definition of a security
         role. The definition consists of an optional description of
         the security role, and the security role name.
-        
+
         Example:
-        
+
         <security-role>
         <description>
         This role includes all employees who are authorized
@@ -3073,7 +3073,7 @@
         </description>
         <role-name>employee</role-name>
         </security-role>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -3103,7 +3103,7 @@
         code, and an optional link to a security role. If the
         security role is not specified, the Deployer must choose an
         appropriate security role.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -3117,10 +3117,10 @@
           <xsd:documentation>
 
             The value of the role-name element must be the String used
-            as the parameter to the 
+            as the parameter to the
             EJBContext.isCallerInRole(String roleName) method or the
             HttpServletRequest.isUserInRole(String role) method.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -3134,7 +3134,7 @@
             security role. The role-link element must contain
             the name of one of the security roles defined in the
             security-role elements.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -3151,7 +3151,7 @@
       <xsd:documentation>
 
         This type adds an "id" attribute to xsd:QName.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3170,7 +3170,7 @@
       <xsd:documentation>
 
         This type adds an "id" attribute to xsd:boolean.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3189,7 +3189,7 @@
       <xsd:documentation>
 
         This type adds an "id" attribute to xsd:NMTOKEN.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3208,7 +3208,7 @@
       <xsd:documentation>
 
         This type adds an "id" attribute to xsd:anyURI.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3227,7 +3227,7 @@
       <xsd:documentation>
 
         This type adds an "id" attribute to xsd:integer.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3246,7 +3246,7 @@
       <xsd:documentation>
 
         This type adds an "id" attribute to xsd:positiveInteger.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3265,7 +3265,7 @@
       <xsd:documentation>
 
         This type adds an "id" attribute to xsd:nonNegativeInteger.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3284,7 +3284,7 @@
       <xsd:documentation>
 
         This type adds an "id" attribute to xsd:string.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3307,7 +3307,7 @@
         require trailing/leading space elimination as well as
         collapsing the existing whitespace, this base type may be
         used.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3327,10 +3327,10 @@
 
         This simple type designates a boolean with only two
         permissible values
-        
+
         - true
         - false
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3354,7 +3354,7 @@
         If it contains those characters, the container must inform
         the developer with a descriptive error message.
         The container must preserve all characters including whitespaces.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3372,25 +3372,25 @@
         The message-destinationType specifies a message
         destination. The logical destination described by this
         element is mapped to a physical destination by the Deployer.
-        
-        The message destination element contains: 
-        
+
+        The message destination element contains:
+
         - an optional description
         - an optional display-name
         - an optional icon
         - a message destination name which must be unique
-        among message destination names within the same 
-        Deployment File. 
+        among message destination names within the same
+        Deployment File.
         - an optional mapped name
         - an optional lookup name
-        
-        Example: 
-        
+
+        Example:
+
         <message-destination>
         <message-destination-name>CorporateStocks
         </message-destination-name>
         </message-destination>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -3405,7 +3405,7 @@
             name for a message destination.  This name must be
             unique among the names of message destinations
             within the Deployment File.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -3419,19 +3419,19 @@
             should be mapped to.  Each message-destination-ref
             element that references this message destination will
             define a name in the namespace of the referencing
-            component or in one of the other predefined namespaces. 
+            component or in one of the other predefined namespaces.
             Many application servers provide a way to map these
             local names to names of resources known to the
             application server.  This mapped name is often a global
             JNDI name, but may be a name of any form.  Each of the
             local names should be mapped to this same global name.
-            
+
             Application servers are not required to support any
             particular form or type of mapped name, nor the ability
             to use mapped names.  The mapped name is
             product-dependent and often installation-dependent.  No
             use of a mapped name is portable.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -3442,7 +3442,7 @@
           <xsd:documentation>
 
             The JNDI name to be looked up to resolve the message destination.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -3462,25 +3462,25 @@
         of Deployment Component's reference to a message destination
         associated with a resource in Deployment Component's
         environment. It consists of:
-        
+
         - an optional description
         - the message destination reference name
         - an optional message destination type
         - an optional specification as to whether
-        the destination is used for 
+        the destination is used for
         consuming or producing messages, or both.
         if not specified, "both" is assumed.
         - an optional link to the message destination
         - optional injection targets
-        
+
         The message destination type must be supplied unless an
         injection target is specified, in which case the type
         of the target is used.  If both are specified, the type
         must be assignment compatible with the type of the injection
         target.
-        
+
         Examples:
-        
+
         <message-destination-ref>
         <message-destination-ref-name>jms/StockQueue
         </message-destination-ref-name>
@@ -3491,7 +3491,7 @@
         <message-destination-link>CorporateStocks
         </message-destination-link>
         </message-destination-ref>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -3509,7 +3509,7 @@
             the name of a message destination reference; its
             value is the environment entry name used in
             Deployment Component code.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -3541,13 +3541,13 @@
         destination, produced for the destination, or both.  The
         Assembler makes use of this information in linking producers
         of a destination with its consumers.
-        
+
         The value of the message-destination-usage element must be
         one of the following:
         Consumes
         Produces
         ConsumesProduces
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3569,12 +3569,12 @@
         The message-destination-typeType specifies the type of
         the destination. The type is specified by the Java interface
         expected to be implemented by the destination.
-        
-        Example: 
-        
+
+        Example:
+
         <message-destination-type>jakarta.jms.Queue
         </message-destination-type>
-        
+
         ]]>
       </xsd:documentation>
     </xsd:annotation>
@@ -3593,14 +3593,14 @@
         The message-destination-linkType is used to link a message
         destination reference or message-driven bean to a message
         destination.
-        
+
         The Assembler sets the value to reflect the flow of messages
         between producers and consumers in the application.
-        
+
         The value must be the message-destination-name of a message
         destination in the same Deployment File or in another
         Deployment File in the same Jakarta EE application unit.
-        
+
         Alternatively, the value may be composed of a path name
         specifying a Deployment File containing the referenced
         message destination with the message-destination-name of the
@@ -3609,7 +3609,7 @@
         containing Deployment Component that is referencing the
         message destination.  This allows multiple message
         destinations with the same name to be uniquely identified.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -3627,13 +3627,13 @@
         The transaction-supportType specifies the level of
         transaction support provided by the resource adapter. It is
         used by transaction-support elements.
-        
+
         The value must be one of the following:
-        
+
         NoTransaction
         LocalTransaction
         XATransaction
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
diff --git a/java/jakarta/servlet/resources/jsp_4_0.xsd b/java/jakarta/servlet/resources/jsp_4_0.xsd
index ef4460b30a..4d8bed909c 100644
--- a/java/jakarta/servlet/resources/jsp_4_0.xsd
+++ b/java/jakarta/servlet/resources/jsp_4_0.xsd
@@ -10,19 +10,19 @@
     <xsd:documentation>
 
       Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
-      
+
       This program and the accompanying materials are made available under the
       terms of the Eclipse Public License v. 2.0, which is available at
       http://www.eclipse.org/legal/epl-2.0.
-      
+
       This Source Code may also be made available under the following Secondary
       Licenses when the conditions for such availability set forth in the
       Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
       version 2 with the GNU Classpath Exception, which is available at
       https://www.gnu.org/software/classpath/license.html.
-      
+
       SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -32,11 +32,11 @@
       This is the XML Schema for the JSP 4.0 deployment descriptor
       types.  The JSP 4.0 schema contains all the special
       structures and datatypes that are necessary to use JSP files
-      from a web application. 
-      
-      The contents of this schema is used by the web-common_6_1.xsd 
-      file to define JSP specific content. 
-      
+      from a web application.
+
+      The contents of this schema is used by the web-common_6_1.xsd
+      file to define JSP specific content.
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -45,7 +45,7 @@
 
       The following conventions apply to all Jakarta EE
       deployment descriptor elements unless indicated otherwise.
-      
+
       - In elements that specify a pathname to a file within the
       same JAR file, relative filenames (i.e., those not
       starting with "/") are considered relative to the root of
@@ -54,7 +54,7 @@
       JAR file's namespace.  In general, relative names are
       preferred.  The exception is .war files where absolute
       names are preferred for consistency with the Servlet API.
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -70,7 +70,7 @@
         The jsp-configType is used to provide global configuration
         information for the JSP files in a web application. It has
         two subelements, taglib and jsp-property-group.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -96,7 +96,7 @@
 
         The jsp-file element contains the full path to a JSP file
         within the web application beginning with a `/'.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -115,7 +115,7 @@
         files so they can be given global property information.
         All files so described are deemed to be JSP files.  The
         following additional properties can be described:
-        
+
         - Control whether EL is ignored.
         - Control whether scripting elements are invalid.
         - Indicate pageEncoding information.
@@ -129,7 +129,7 @@
         - Indicate the default buffering model for JspWriter
         - Control whether error should be raised for the use of
         undeclared namespaces in a JSP page.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -148,7 +148,7 @@
             EL evaluation is enabled for Web Applications using
             a Servlet 2.4 or greater web.xml, and disabled
             otherwise.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -161,7 +161,7 @@
             Can be used to easily set the errorOnELNotFound
             property of a group of JSP pages. By default, this
             property is false.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -182,7 +182,7 @@
             in a JSP configuration element matching the document.
             It is legal to name the same encoding through
             mulitple mechanisms.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -195,7 +195,7 @@
             Can be used to easily disable scripting in a
             group of JSP pages.  By default, scripting is
             enabled.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -211,7 +211,7 @@
             If false, the resources are assumed to not
             be JSP documents, unless there is another
             property group that indicates otherwise.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -228,7 +228,7 @@
             the given path will be automatically included (as
             in an include directive) at the beginning of each
             JSP page in this jsp-property-group.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -245,7 +245,7 @@
             the given path will be automatically included (as
             in an include directive) at the end of each
             JSP page in this jsp-property-group.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -260,7 +260,7 @@
             character sequence is used as a String literal, unless
             this element is enabled (true). Disabled (false) by
             default.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -274,7 +274,7 @@
             must be removed from the response output. It has no
             effect on JSP documents (XML syntax). Disabled (false)
             by default.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -288,7 +288,7 @@
             contentType page directive.  It specifies the default
             response contentType if the page directive does not include
             a contentType attribute.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -302,7 +302,7 @@
             buffer page directive.  It specifies if buffering should be
             used for the output to response, and if so, the size of the
             buffer to use.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -317,7 +317,7 @@
             set to true, then an error must be raised during the translation
             time when an undeclared tag is used in a JSP page.  Disabled
             (false) by default.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -338,7 +338,7 @@
         available to the application.  This can be done
         to override implicit map entries from TLD files and
         from the container.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -353,7 +353,7 @@
             absolute URI specification, or a relative URI.
             There should be no entries in web.xml with the
             same taglib-uri value.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -366,7 +366,7 @@
             (as a resource relative to the root of the web
             application) where to find the Tag Library
             Description file for the tag library.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
diff --git a/java/jakarta/servlet/resources/web-app_6_1.xsd b/java/jakarta/servlet/resources/web-app_6_1.xsd
index 5b8861d4e1..8593404353 100644
--- a/java/jakarta/servlet/resources/web-app_6_1.xsd
+++ b/java/jakarta/servlet/resources/web-app_6_1.xsd
@@ -10,19 +10,19 @@
     <xsd:documentation>
 
       Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
-      
+
       This program and the accompanying materials are made available under the
       terms of the Eclipse Public License v. 2.0, which is available at
       http://www.eclipse.org/legal/epl-2.0.
-      
+
       This Source Code may also be made available under the following Secondary
       Licenses when the conditions for such availability set forth in the
       Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
       version 2 with the GNU Classpath Exception, which is available at
       https://www.gnu.org/software/classpath/license.html.
-      
+
       SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -34,25 +34,25 @@
       web application's war file.  All Servlet deployment descriptors
       must indicate the web application schema by using the Jakarta EE
       namespace:
-      
+
       https://jakarta.ee/xml/ns/jakartaee
-      
+
       and by indicating the version of the schema by
       using the version element as shown below:
-      
+
       <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="..."
       version="6.1">
       ...
       </web-app>
-      
+
       The instance documents may indicate the published version of
       the schema using the xsi:schemaLocation attribute for Jakarta EE
       namespace with the following location:
-      
+
       https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd
-      
+
       ]]>
     </xsd:documentation>
   </xsd:annotation>
@@ -62,7 +62,7 @@
 
       The following conventions apply to all Jakarta EE
       deployment descriptor elements unless indicated otherwise.
-      
+
       - In elements that specify a pathname to a file within the
       same JAR file, relative filenames (i.e., those not
       starting with "/") are considered relative to the root of
@@ -71,7 +71,7 @@
       JAR file's namespace.  In general, relative names are
       preferred.  The exception is .war files where absolute
       names are preferred for consistency with the Servlet API.
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -99,7 +99,7 @@
         of the element distributable is redundant and the container
         treats that case exactly in the same way when there is only
         one distributable.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:unique name="web-common-servlet-name-uniqueness">
@@ -108,7 +108,7 @@
 
           The servlet element contains the name of a servlet.
           The name must be unique within the web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:servlet"/>
@@ -120,7 +120,7 @@
 
           The filter element contains the name of a filter.
           The name must be unique within the web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:filter"/>
@@ -130,15 +130,15 @@
       <xsd:annotation>
         <xsd:documentation>
 
-          The ejb-local-ref-name element contains the name of an 
-          enterprise bean reference. The enterprise 
+          The ejb-local-ref-name element contains the name of an
+          enterprise bean reference. The enterprise
           bean reference is an entry in the web
           application's environment and is relative to the
           java:comp/env context.  The name must be unique within
           the web application.
-          
+
           It is recommended that name is prefixed with "ejb/".
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:ejb-local-ref"/>
@@ -148,14 +148,14 @@
       <xsd:annotation>
         <xsd:documentation>
 
-          The ejb-ref-name element contains the name of an 
-          enterprise bean reference. The enterprise bean 
-          reference is an entry in the web application's environment 
-          and is relative to the java:comp/env context.  
+          The ejb-ref-name element contains the name of an
+          enterprise bean reference. The enterprise bean
+          reference is an entry in the web application's environment
+          and is relative to the java:comp/env context.
           The name must be unique within the web application.
-          
+
           It is recommended that name is prefixed with "ejb/".
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:ejb-ref"/>
@@ -170,7 +170,7 @@
           environment entry name used in the web application code.
           The name is a JNDI name relative to the java:comp/env
           context and must be unique within a web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:resource-env-ref"/>
@@ -185,7 +185,7 @@
           environment entry name used in the web application code.
           The name is a JNDI name relative to the java:comp/env
           context and must be unique within a web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:message-destination-ref"/>
@@ -199,7 +199,7 @@
           resource manager connection factory reference.  The name
           is a JNDI name relative to the java:comp/env context.
           The name must be unique within a web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:resource-ref"/>
@@ -213,7 +213,7 @@
           application's environment entry.  The name is a JNDI
           name relative to the java:comp/env context.  The name
           must be unique within a web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:env-entry"/>
@@ -225,7 +225,7 @@
 
           A role-name-key is specified to allow the references
           from the security-role-refs.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:security-role"/>
@@ -238,7 +238,7 @@
 
           The keyref indicates the references from
           security-role-ref to a specified role-name.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:servlet/jakartaee:security-role-ref"/>
@@ -269,7 +269,7 @@
             Servlet containers may provide vendor specific configuration
             options that allows specifying a value that overrides the value
             specified here.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -280,7 +280,7 @@
 
             When specified, this element provides a default request
             character encoding of the web application.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -291,7 +291,7 @@
 
             When specified, this element provides a default response
             character encoding of the web application.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -305,7 +305,7 @@
             security-constrant, this element causes all HTTP methods that
             are NOT covered (by a security constraint) at the url-pattern
             to be denied.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -323,7 +323,7 @@
       <xsd:documentation>
 
         Please see section 8.2.2 of the specification for details.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:choice minOccurs="0"
diff --git a/java/jakarta/servlet/resources/web-common_6_1.xsd b/java/jakarta/servlet/resources/web-common_6_1.xsd
index de8ecef014..2a72e3bc37 100644
--- a/java/jakarta/servlet/resources/web-common_6_1.xsd
+++ b/java/jakarta/servlet/resources/web-common_6_1.xsd
@@ -10,19 +10,19 @@
     <xsd:documentation>
 
       Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
-      
+
       This program and the accompanying materials are made available under the
       terms of the Eclipse Public License v. 2.0, which is available at
       http://www.eclipse.org/legal/epl-2.0.
-      
+
       This Source Code may also be made available under the following Secondary
       Licenses when the conditions for such availability set forth in the
       Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
       version 2 with the GNU Classpath Exception, which is available at
       https://www.gnu.org/software/classpath/license.html.
-      
+
       SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -34,25 +34,25 @@
       web application's war file.  All Servlet deployment descriptors
       must indicate the web common schema by using the Jakarta EE
       namespace:
-      
+
       https://jakarta.ee/xml/ns/jakartaee
-      
+
       and by indicating the version of the schema by
       using the version element as shown below:
-      
+
       <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="..."
       version="6.1">
       ...
       </web-app>
-      
+
       The instance documents may indicate the published version of
       the schema using the xsi:schemaLocation attribute for Jakarta EE
       namespace with the following location:
-      
+
       https://jakarta.ee/xml/ns/jakartaee/web-common_6_1.xsd
-      
+
       ]]>
     </xsd:documentation>
   </xsd:annotation>
@@ -62,7 +62,7 @@
 
       The following conventions apply to all Jakarta EE
       deployment descriptor elements unless indicated otherwise.
-      
+
       - In elements that specify a pathname to a file within the
       same JAR file, relative filenames (i.e., those not
       starting with "/") are considered relative to the root of
@@ -71,7 +71,7 @@
       JAR file's namespace.  In general, relative names are
       preferred.  The exception is .war files where absolute
       names are preferred for consistency with the Servlet API.
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -92,7 +92,7 @@
             The context-param element contains the declaration
             of a web application's servlet context
             initialization parameters.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -148,17 +148,17 @@
           files available to this module and packaged with
           this application should be examined for annotations
           that specify deployment information.
-          
+
           If metadata-complete is set to "true", the deployment
           tool must ignore any annotations that specify deployment
           information, which might be present in the class files
           of the application.
-          
+
           If metadata-complete is not specified or is set to
           "false", the deployment tool must examine the class
           files of the application for annotations, as
           specified by the specifications.
-          
+
         </xsd:documentation>
       </xsd:annotation>
     </xsd:attribute>
@@ -173,7 +173,7 @@
 
         This type is a general type that can be used to declare
         attribute/value lists.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -188,7 +188,7 @@
 
             The attribute-name element contains the name of an
             attribute.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -199,7 +199,7 @@
 
             The attribute-value element contains the value of a
             attribute.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -227,7 +227,7 @@
         to the portion of the web application described by the
         containing security-constraint.  The container matches
         role names case sensitively when determining access.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -258,9 +258,9 @@
         using the configured mechanism. Legal values are "BASIC",
         "DIGEST", "FORM", "CLIENT-CERT", or a vendor-specific
         authentication scheme.
-        
+
         Used in: login-config
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -277,7 +277,7 @@
 
         The dispatcher has five legal values: FORWARD, REQUEST,
         INCLUDE, ASYNC, and ERROR.
-        
+
         A value of FORWARD means the Filter will be applied under
         RequestDispatcher.forward() calls.
         A value of REQUEST means the Filter will be applied under
@@ -288,11 +288,11 @@
         calls dispatched from an AsyncContext.
         A value of ERROR means the Filter will be applied under the
         error page mechanism.
-        
+
         The absence of any dispatcher elements in a filter-mapping
         indicates a default of applying filters only under ordinary
         client calls to the path or servlet.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -314,9 +314,9 @@
       <xsd:documentation>
 
         The error-code contains an HTTP error code, ex: 404
-        
+
         Used in: error-page
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -338,19 +338,19 @@
         The error-pageType contains a mapping between an error code
         or exception type to the path of a resource in the web
         application.
-        
+
         Error-page declarations using the exception-type element in
         the deployment descriptor must be unique up to the class name of
         the exception-type. Similarly, error-page declarations using the
         error-code element must be unique in the deployment descriptor
         up to the status code.
-        
+
         If an error-page element in the deployment descriptor does not
         contain an exception-type or an error-code element, the error
         page is a default error page.
-        
+
         Used in: web-app
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -365,7 +365,7 @@
 
               The exception-type contains a fully qualified class
               name of a Java exception type.
-              
+
             </xsd:documentation>
           </xsd:annotation>
         </xsd:element>
@@ -379,7 +379,7 @@
             resource in the web application relative to the root of
             the web application. The value of the location must have
             a leading `/'.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -401,9 +401,9 @@
         filter-name value to reference. Filters can access the
         initialization parameters declared in the deployment
         descriptor at runtime via the FilterConfig interface.
-        
+
         Used in: web-app
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -418,7 +418,7 @@
           <xsd:documentation>
 
             The fully qualified classname of the filter.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -434,7 +434,7 @@
 
             The init-param element contains a name/value pair as
             an initialization param of a servlet filter
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -465,7 +465,7 @@
         filter-name value must be the value of the filter-name
         sub-elements of one of the filter declarations in the
         deployment descriptor.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -496,7 +496,7 @@
 
         This type defines a string which contains at least one
         character.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -517,9 +517,9 @@
         by using filter-nameType. This name is used to map the
         filter.  Each filter name is unique within the web
         application.
-        
+
         Used in: filter, filter-mapping
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -537,9 +537,9 @@
         The form-login-configType specifies the login and error
         pages that should be used in form based login. If form based
         authentication is not used, these elements are ignored.
-        
+
         Used in: login-config
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -552,7 +552,7 @@
             app where the page that can be used for login can be
             found.  The path begins with a leading / and is interpreted
             relative to the root of the WAR.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -566,7 +566,7 @@
             when login is not successful can be found.
             The path begins with a leading / and is interpreted
             relative to the root of the WAR.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -580,7 +580,7 @@
       <xsd:documentation>
 
         A HTTP method type as defined in HTTP 1.1 section 2.2.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:restriction base="xsd:token">
@@ -609,9 +609,9 @@
         method that should be used, the realm name that should be
         used for this application, and the attributes that are
         needed by the form login mechanism.
-        
+
         Used in: web-app
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -626,7 +626,7 @@
 
             The realm name element specifies the realm name to
             use in HTTP Basic authorization.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -647,9 +647,9 @@
 
         The mime-mappingType defines a mapping between an extension
         and a mime type.
-        
+
         Used in: web-app
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -658,7 +658,7 @@
 
           The extension element contains a string describing an
           extension. example: "txt"
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:element name="extension"
@@ -678,12 +678,12 @@
       <xsd:documentation>
 
         The mime-typeType is used to indicate a defined mime type.
-        
+
         Example:
         "text/plain"
-        
+
         Used in: mime-mapping
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -703,9 +703,9 @@
         The security-constraintType is used to associate
         security constraints with one or more web resource
         collections
-        
+
         Used in: web-app
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -739,9 +739,9 @@
         servlet. If a jsp-file is specified and the load-on-startup
         element is present, then the JSP should be precompiled and
         loaded.
-        
+
         Used in: web-app
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -757,7 +757,7 @@
 
               The servlet-class element contains the fully
               qualified class name of the servlet.
-              
+
             </xsd:documentation>
           </xsd:annotation>
         </xsd:element>
@@ -790,7 +790,7 @@
             before servlets marked with higher integers. The
             container may choose the order of loading of
             servlets with the same load-on-start-up value.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -825,9 +825,9 @@
 
         The servlet-mappingType defines a mapping between a
         servlet and a url pattern.
-        
+
         Used in: web-app
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -852,7 +852,7 @@
         The servlet-name element contains the canonical name of the
         servlet. Each servlet name is unique within the web
         application.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -869,9 +869,9 @@
 
         The session-configType defines the session parameters
         for this web application.
-        
+
         Used in: web-app
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -889,7 +889,7 @@
             the default behaviour of sessions is never to time
             out. If this element is not specified, the container
             must set its default timeout period.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -901,7 +901,7 @@
 
             The cookie-config element defines the configuration of the
             session tracking cookies created by this web application.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -914,7 +914,7 @@
 
             The tracking-mode element defines the tracking modes
             for sessions created by this web application
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -932,9 +932,9 @@
 
         The cookie-configType defines the configuration for the
         session tracking cookies of this web application.
-        
+
         Used in: session-config
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -947,7 +947,7 @@
             The name that will be assigned to any session tracking
             cookies created by this web application.
             The default is JSESSIONID
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -959,7 +959,7 @@
 
             The domain name that will be assigned to any session tracking
             cookies created by this web application.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -971,7 +971,7 @@
 
             The path that will be assigned to any session tracking
             cookies created by this web application.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -983,7 +983,7 @@
 
             The comment that will be assigned to any session tracking
             cookies created by this web application.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -995,7 +995,7 @@
 
             Specifies whether any session tracking cookies created
             by this web application will be marked as HttpOnly
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1012,7 +1012,7 @@
             initiated the corresponding session.
             When false, the session cookie should only be marked secure
             if the request that initiated the session was secure.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1025,7 +1025,7 @@
             The lifetime (in seconds) that will be assigned to any
             session tracking cookies created by this web application.
             Default is -1
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1038,7 +1038,7 @@
 
             The attribute-param element contains a name/value pair to
             be added as an attribute to every session cookie.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1057,9 +1057,9 @@
         The name that will be assigned to any session tracking
         cookies created by this web application.
         The default is JSESSIONID
-        
+
         Used in: cookie-config
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1076,9 +1076,9 @@
 
         The domain name that will be assigned to any session tracking
         cookies created by this web application.
-        
+
         Used in: cookie-config
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1095,9 +1095,9 @@
 
         The path that will be assigned to any session tracking
         cookies created by this web application.
-        
+
         Used in: cookie-config
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1114,9 +1114,9 @@
 
         The comment that will be assigned to any session tracking
         cookies created by this web application.
-        
+
         Used in: cookie-config
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1133,9 +1133,9 @@
 
         The tracking modes for sessions created by this web
         application
-        
+
         Used in: session-config
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1166,9 +1166,9 @@
         transmission. In most cases, the presence of the INTEGRAL or
         CONFIDENTIAL flag will indicate that the use of SSL is
         required.
-        
+
         Used in: user-data-constraint
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1190,9 +1190,9 @@
         The user-data-constraintType is used to indicate how
         data communicated between the client and container should be
         protected.
-        
+
         Used in: security-constraint
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1217,7 +1217,7 @@
         The elements that use this type designate a path starting
         with a "/" and interpreted relative to the root of a WAR
         file.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -1234,7 +1234,7 @@
         This type contains the recognized versions of
         web-application supported. It is used to designate the
         version of the web application.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:restriction base="xsd:token">
@@ -1258,9 +1258,9 @@
         except those identified in the collection.
         http-method-omission and http-method elements are never
         mixed in the same collection.
-        
+
         Used in: security-constraint
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1271,7 +1271,7 @@
 
             The web-resource-name contains the name of this web
             resource collection.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1293,7 +1293,7 @@
 
               Each http-method names an HTTP method to which the
               constraint applies.
-              
+
             </xsd:documentation>
           </xsd:annotation>
         </xsd:element>
@@ -1306,7 +1306,7 @@
 
               Each http-method-omission names an HTTP method to
               which the constraint does not apply.
-              
+
             </xsd:documentation>
           </xsd:annotation>
         </xsd:element>
@@ -1325,9 +1325,9 @@
 
         The welcome-file-list contains an ordered list of welcome
         files elements.
-        
+
         Used in: web-app
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1339,7 +1339,7 @@
 
             The welcome-file element contains file name to use
             as a default welcome file, such as index.html
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1354,7 +1354,7 @@
 
         The localeType defines valid locale defined by ISO-639-1
         and ISO-3166.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:restriction base="xsd:string">
@@ -1367,7 +1367,7 @@
       <xsd:documentation>
 
         The encodingType defines IANA character sets.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:restriction base="xsd:string">
@@ -1384,7 +1384,7 @@
 
         The locale-encoding-mapping-list contains one or more
         locale-encoding-mapping(s).
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1407,7 +1407,7 @@
         encoding name. The locale name must be either "Language-code",
         such as "ja", defined by ISO-639 or "Language-code_Country-code",
         such as "ja_JP".  "Country code" is defined by ISO-3166.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1432,7 +1432,7 @@
         of this application resource relative to other application
         configuration resources.
         See section 8.2.2 of the specification for details.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:attribute name="id"
@@ -1448,7 +1448,7 @@
 
         This element specifies configuration information related to the
         handling of multipart/form-data requests.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1460,7 +1460,7 @@
           <xsd:documentation>
 
             The directory location where uploaded files will be stored
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1472,7 +1472,7 @@
           <xsd:documentation>
 
             The maximum size limit of uploaded files in bytes
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1484,7 +1484,7 @@
           <xsd:documentation>
 
             The maximum size limit of multipart/form-data requests in bytes
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1497,7 +1497,7 @@
 
             The size threshold (in bytes) after which an uploaded file will be
             written to disk
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
diff --git a/java/jakarta/servlet/resources/web-fragment_6_1.xsd b/java/jakarta/servlet/resources/web-fragment_6_1.xsd
index 633b1d69f2..2b6f24944b 100644
--- a/java/jakarta/servlet/resources/web-fragment_6_1.xsd
+++ b/java/jakarta/servlet/resources/web-fragment_6_1.xsd
@@ -10,19 +10,19 @@
     <xsd:documentation>
 
       Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
-      
+
       This program and the accompanying materials are made available under the
       terms of the Eclipse Public License v. 2.0, which is available at
       http://www.eclipse.org/legal/epl-2.0.
-      
+
       This Source Code may also be made available under the following Secondary
       Licenses when the conditions for such availability set forth in the
       Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
       version 2 with the GNU Classpath Exception, which is available at
       https://www.gnu.org/software/classpath/license.html.
-      
+
       SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -34,25 +34,25 @@
       in the web fragment's jar file.  All Servlet deployment descriptors
       must indicate the web application schema by using the Jakarta EE
       namespace:
-      
+
       https://jakarta.ee/xml/ns/jakartaee
-      
+
       and by indicating the version of the schema by
       using the version element as shown below:
-      
+
       <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="..."
       version="6.1">
       ...
       </web-fragment>
-      
+
       The instance documents may indicate the published version of
       the schema using the xsi:schemaLocation attribute for Jakarta EE
       namespace with the following location:
-      
+
       https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_1.xsd
-      
+
       ]]>
     </xsd:documentation>
   </xsd:annotation>
@@ -62,7 +62,7 @@
 
       The following conventions apply to all Jakarta EE
       deployment descriptor elements unless indicated otherwise.
-      
+
       - In elements that specify a pathname to a file within the
       same JAR file, relative filenames (i.e., those not
       starting with "/") are considered relative to the root of
@@ -71,7 +71,7 @@
       JAR file's namespace.  In general, relative names are
       preferred.  The exception is .war files where absolute
       names are preferred for consistency with the Servlet API.
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
@@ -99,7 +99,7 @@
         of the element distributable is redundant and the container
         treats that case exactly in the same way when there is only
         one distributable.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:unique name="web-common-servlet-name-uniqueness">
@@ -108,7 +108,7 @@
 
           The servlet element contains the name of a servlet.
           The name must be unique within the web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:servlet"/>
@@ -120,7 +120,7 @@
 
           The filter element contains the name of a filter.
           The name must be unique within the web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:filter"/>
@@ -130,14 +130,14 @@
       <xsd:annotation>
         <xsd:documentation>
 
-          The ejb-local-ref-name element contains the name of an 
+          The ejb-local-ref-name element contains the name of an
           enterprise bean reference. The enterprise bean reference
           is an entry in the web application's environment and is relative
           to the java:comp/env context.  The name must be unique within
           the web application.
-          
+
           It is recommended that name is prefixed with "ejb/".
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:ejb-local-ref"/>
@@ -147,14 +147,14 @@
       <xsd:annotation>
         <xsd:documentation>
 
-          The ejb-ref-name element contains the name of an  
-          enterprise bean reference. The enterprise bean reference 
-          is an entry in the web application's environment and is relative 
+          The ejb-ref-name element contains the name of an
+          enterprise bean reference. The enterprise bean reference
+          is an entry in the web application's environment and is relative
           to the java:comp/env context.  The name must be unique within
           the web application.
-          
+
           It is recommended that name is prefixed with "ejb/".
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:ejb-ref"/>
@@ -169,7 +169,7 @@
           environment entry name used in the web application code.
           The name is a JNDI name relative to the java:comp/env
           context and must be unique within a web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:resource-env-ref"/>
@@ -184,7 +184,7 @@
           environment entry name used in the web application code.
           The name is a JNDI name relative to the java:comp/env
           context and must be unique within a web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:message-destination-ref"/>
@@ -198,7 +198,7 @@
           resource manager connection factory reference.  The name
           is a JNDI name relative to the java:comp/env context.
           The name must be unique within a web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:resource-ref"/>
@@ -212,7 +212,7 @@
           application's environment entry.  The name is a JNDI
           name relative to the java:comp/env context.  The name
           must be unique within a web application.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:env-entry"/>
@@ -224,7 +224,7 @@
 
           A role-name-key is specified to allow the references
           from the security-role-refs.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:security-role"/>
@@ -237,7 +237,7 @@
 
           The keyref indicates the references from
           security-role-ref to a specified role-name.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:servlet/jakartaee:security-role-ref"/>
@@ -268,7 +268,7 @@
       <xsd:documentation>
 
         Please see section 8.2.2 of the specification for details.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -298,7 +298,7 @@
         comes
         before or after other documents within the application.
         See section 8.2.2 of the specification for details.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
diff --git a/java/jakarta/servlet/resources/web-jsptaglibrary_4_0.xsd b/java/jakarta/servlet/resources/web-jsptaglibrary_4_0.xsd
index 4c210ddd4f..a4d54bc68a 100644
--- a/java/jakarta/servlet/resources/web-jsptaglibrary_4_0.xsd
+++ b/java/jakarta/servlet/resources/web-jsptaglibrary_4_0.xsd
@@ -9,48 +9,48 @@
     <xsd:documentation>
 
       Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
-      
+
       This program and the accompanying materials are made available under the
       terms of the Eclipse Public License v. 2.0, which is available at
       http://www.eclipse.org/legal/epl-2.0.
-      
+
       This Source Code may also be made available under the following Secondary
       Licenses when the conditions for such availability set forth in the
       Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
       version 2 with the GNU Classpath Exception, which is available at
       https://www.gnu.org/software/classpath/license.html.
-      
+
       SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
-      
+
     </xsd:documentation>
   </xsd:annotation>
 
   <xsd:annotation>
     <xsd:documentation>
       <![CDATA[
-      This is the XML Schema for the JSP Taglibrary 
-      descriptor.  All Taglibrary descriptors must 
-      indicate the tag library schema by using the Taglibrary 
-      namespace: 
-      
-      https://jakarta.ee/xml/ns/jakartaee 
-      
-      and by indicating the version of the schema by 
-      using the version element as shown below: 
-      
+      This is the XML Schema for the JSP Taglibrary
+      descriptor.  All Taglibrary descriptors must
+      indicate the tag library schema by using the Taglibrary
+      namespace:
+
+      https://jakarta.ee/xml/ns/jakartaee
+
+      and by indicating the version of the schema by
+      using the version element as shown below:
+
       <taglib xmlns="https://jakarta.ee/xml/ns/jakartaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="..."
       version="4.0">
       ...
       </taglib>
-      
-      The instance documents may indicate the published 
-      version of the schema using xsi:schemaLocation attribute 
-      for Jakarta EE namespace with the following location: 
-      
+
+      The instance documents may indicate the published
+      version of the schema using xsi:schemaLocation attribute
+      for Jakarta EE namespace with the following location:
+
       https://jakarta.ee/xml/ns/jakartaee/web-jsptaglibrary_4_0.xsd
-      
+
       ]]>
     </xsd:documentation>
   </xsd:annotation>
@@ -67,18 +67,18 @@
 
         The taglib tag is the document root.
         The definition of taglib is provided
-        by the tldTaglibType. 
-        
+        by the tldTaglibType.
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:unique name="tag-name-uniqueness">
       <xsd:annotation>
         <xsd:documentation>
 
-          The taglib element contains, among other things, tag and 
+          The taglib element contains, among other things, tag and
           tag-file elements.
           The name subelements of these elements must each be unique.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:tag|jakartaee:tag-file"/>
@@ -90,7 +90,7 @@
 
           The taglib element contains function elements.
           The name subelements of these elements must each be unique.
-          
+
         </xsd:documentation>
       </xsd:annotation>
       <xsd:selector xpath="jakartaee:function"/>
@@ -106,27 +106,27 @@
       <xsd:documentation>
 
         Specifies the type of body that is valid for a tag.
-        This value is used by the JSP container to validate 
-        that a tag invocation has the correct body syntax and 
-        by page composition tools to assist the page author 
+        This value is used by the JSP container to validate
+        that a tag invocation has the correct body syntax and
+        by page composition tools to assist the page author
         in providing a valid tag body.
-        		    
+
         There are currently four values specified:
-        
+
         tagdependent    The body of the tag is interpreted by the tag
-        		implementation itself, and is most likely 
-        		in a different "language", e.g embedded SQL 
-        		statements.
-        
-        JSP             The body of the tag contains nested JSP 
-        		syntax.
-        
+                        implementation itself, and is most likely
+                        in a different "language", e.g embedded SQL
+                        statements.
+
+        JSP             The body of the tag contains nested JSP
+                        syntax.
+
         empty           The body must be empty
-        
-        scriptless      The body accepts only template text, EL 
-        		Expressions, and JSP action elements.  No 
-        		scripting elements are allowed.
-        
+
+        scriptless      The body accepts only template text, EL
+                        Expressions, and JSP action elements.  No
+                        scripting elements are allowed.
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -148,9 +148,9 @@
 
         Defines the canonical name of a tag or attribute being
         defined.
-        
+
         The name must conform to the lexical rules for an NMTOKEN.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -168,7 +168,7 @@
         A validator that can be used to validate
         the conformance of a JSP page to using this tag library is
         defined by a validatorType.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -184,7 +184,7 @@
             Defines the TagLibraryValidator class that can be used
             to validate the conformance of a JSP page to using this
             tag library.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -196,8 +196,8 @@
           <xsd:documentation>
 
             The init-param element contains a name/value pair as an
-            initialization param. 
-            
+            initialization param.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -215,45 +215,45 @@
 
         The tag defines a unique tag in this tag library.  It has one
         attribute, id.
-        
+
         The tag element may have several subelements defining:
-        
+
         description       Optional tag-specific information
-        
-        display-name      A short name that is intended to be 
-        		  displayed by tools
-        
-        icon              Optional icon element that can be used 
-        		  by tools
-        
+
+        display-name      A short name that is intended to be
+                          displayed by tools
+
+        icon              Optional icon element that can be used
+                          by tools
+
         name              The unique action name
-        
+
         tag-class         The tag handler class implementing
-        		  jakarta.servlet.jsp.tagext.JspTag
-        
+                          jakarta.servlet.jsp.tagext.JspTag
+
         tei-class         An optional subclass of
-        		  jakarta.servlet.jsp.tagext.TagExtraInfo
-        
+                          jakarta.servlet.jsp.tagext.TagExtraInfo
+
         body-content      The body content type
-        
+
         variable          Optional scripting variable information
-        
+
         attribute         All attributes of this action that are
-        		  evaluated prior to invocation.
-        
-        dynamic-attributes Whether this tag supports additional 
-        		   attributes with dynamic names.  If 
-        		   true, the tag-class must implement the 
-        		   jakarta.servlet.jsp.tagext.DynamicAttributes
-        		   interface.  Defaults to false.
-        
-        example           Optional informal description of an 
-        		  example of a use of this tag
-        
+                          evaluated prior to invocation.
+
+        dynamic-attributes Whether this tag supports additional
+                           attributes with dynamic names.  If
+                           true, the tag-class must implement the
+                           jakarta.servlet.jsp.tagext.DynamicAttributes
+                           interface.  Defaults to false.
+
+        example           Optional informal description of an
+                          example of a use of this tag
+
         tag-extension     Zero or more extensions that provide extra
-        		  information about this tag, for tool 
-        		  consumption
-        
+                          information about this tag, for tool
+                          consumption
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -266,9 +266,9 @@
           <xsd:documentation>
 
             Defines the subclass of jakarta.servlet.jsp.tagext.JspTag
-            that implements the request time semantics for 
+            that implements the request time semantics for
             this tag. (required)
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -280,10 +280,10 @@
 
             Defines the subclass of jakarta.servlet.jsp.tagext.TagExtraInfo
             for this tag. (optional)
-            
+
             If this is not given, the class is not consulted at
             translation time.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -293,12 +293,12 @@
           <xsd:documentation>
 
             Specifies the format for the body of this tag.
-            The default in JSP 1.2 was "JSP" but because this 
-            is an invalid setting for simple tag handlers, there 
-            is no longer a default in JSP 2.0.  A reasonable 
-            default for simple tag handlers is "scriptless" if 
-            the tag can have a body.  
-            
+            The default in JSP 1.2 was "JSP" but because this
+            is an invalid setting for simple tag handlers, there
+            is no longer a default in JSP 2.0.  A reasonable
+            default for simple tag handlers is "scriptless" if
+            the tag can have a body.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -321,7 +321,7 @@
 
             The example element contains an informal description
             of an example of the use of a tag.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -334,7 +334,7 @@
 
             Tag extensions are for tool use only and must not affect
             the behavior of a container.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -352,34 +352,34 @@
 
         Defines an action in this tag library that is implemented
         as a .tag file.
-        
+
         The tag-file element has two required subelements:
-        
+
         description       Optional tag-specific information
-        
-        display-name      A short name that is intended to be 
-        		  displayed by tools
-        
-        icon              Optional icon element that can be used 
-        		  by tools
-        
+
+        display-name      A short name that is intended to be
+                          displayed by tools
+
+        icon              Optional icon element that can be used
+                          by tools
+
         name              The unique action name
-        
+
         path              Where to find the .tag file implementing this
-        		  action, relative to the root of the web
-        		  application or the root of the JAR file for a
-        		  tag library packaged in a JAR.  This must
-        		  begin with /WEB-INF/tags if the .tag file
-        		  resides in the WAR, or /META-INF/tags if the
-        		  .tag file resides in a JAR.
-        
-        example           Optional informal description of an 
-        		  example of a use of this tag
-        
+                          action, relative to the root of the web
+                          application or the root of the JAR file for a
+                          tag library packaged in a JAR.  This must
+                          begin with /WEB-INF/tags if the .tag file
+                          resides in the WAR, or /META-INF/tags if the
+                          .tag file resides in a JAR.
+
+        example           Optional informal description of an
+                          example of a use of this tag
+
         tag-extension     Zero or more extensions that provide extra
-        		  information about this tag, for tool 
-        		  consumption
-        
+                          information about this tag, for tool
+                          consumption
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -396,7 +396,7 @@
 
             The example element contains an informal description
             of an example of the use of a tag.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -408,8 +408,8 @@
           <xsd:documentation>
 
             Tag extensions are for tool use only and must not affect
-            the behavior of a container.  
-            
+            the behavior of a container.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -427,34 +427,34 @@
 
         The function element is used to provide information on each
         function in the tag library that is to be exposed to the EL.
-        
+
         The function element may have several subelements defining:
-        
+
         description         Optional tag-specific information
-        
-        display-name        A short name that is intended to be 
-        		    displayed by tools
-        
-        icon                Optional icon element that can be used 
-        		    by tools
-        
+
+        display-name        A short name that is intended to be
+                            displayed by tools
+
+        icon                Optional icon element that can be used
+                            by tools
+
         name                A unique name for this function
-        
-        function-class      Provides the name of the Java class that 
-        		    implements the function
-        
-        function-signature  Provides the signature, as in the Java 
-        		    Language Specification, of the Java 
-        		    method that is to be used to implement 
-        		    the function.
-        
-        example             Optional informal description of an 
-        		    example of a use of this function
-        
+
+        function-class      Provides the name of the Java class that
+                            implements the function
+
+        function-signature  Provides the signature, as in the Java
+                            Language Specification, of the Java
+                            method that is to be used to implement
+                            the function.
+
+        example             Optional informal description of an
+                            example of a use of this function
+
         function-extension  Zero or more extensions that provide extra
-        		    information about this function, for tool 
-        		    consumption
-        
+                            information about this function, for tool
+                            consumption
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -465,7 +465,7 @@
           <xsd:documentation>
 
             A unique name for this function.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -475,9 +475,9 @@
           <xsd:documentation>
 
             Provides the fully-qualified class name of the Java
-            class containing the static method that implements 
+            class containing the static method that implements
             the function.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -489,36 +489,36 @@
             Provides the signature, of the static Java method that is
             to be used to implement the function.  The syntax of the
             function-signature element is as follows:
-            
-            	FunctionSignature ::= ReturnType S MethodName S?
-            			      '(' S? Parameters? S? ')'
-            
+
+                    FunctionSignature ::= ReturnType S MethodName S?
+                                          '(' S? Parameters? S? ')'
+
             ReturnType        ::= Type
-            
-            	MethodName        ::= Identifier
-            
-            	Parameters        ::=   Parameter
-            			      | ( Parameter S? ',' S? Parameters )
-            
+
+                    MethodName        ::= Identifier
+
+                    Parameters        ::=   Parameter
+                                          | ( Parameter S? ',' S? Parameters )
+
             Parameter         ::= Type
-            
-            	Where:
-            
-            	    * Type is a basic type or a fully qualified
-            	      Java class name (including package name),
-            	      as per the 'Type' production in the Java 
-            	      Language Specification, Second Edition, 
-            	      Chapter 18.
-            
+
+                    Where:
+
+                        * Type is a basic type or a fully qualified
+                          Java class name (including package name),
+                          as per the 'Type' production in the Java
+                          Language Specification, Second Edition,
+                          Chapter 18.
+
             * Identifier is a Java identifier, as per
-            	      the 'Identifier' production in the Java 
-            	      Language Specification, Second
-            	      Edition, Chapter 18.
-            
-            Example: 
-            
+                          the 'Identifier' production in the Java
+                          Language Specification, Second
+                          Edition, Chapter 18.
+
+            Example:
+
             java.lang.String nickName( java.lang.String, int )
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -530,7 +530,7 @@
 
             The example element contains an informal description
             of an example of the use of this function.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -541,9 +541,9 @@
         <xsd:annotation>
           <xsd:documentation>
 
-            Function extensions are for tool use only and must not 
-            affect the behavior of a container.  
-            
+            Function extensions are for tool use only and must not
+            affect the behavior of a container.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -560,41 +560,41 @@
       <xsd:documentation>
 
         The taglib tag is the document root, it defines:
-        
+
         description     a simple string describing the "use" of this
-        		taglib, should be user discernable
-        
-        display-name    the display-name element contains a 
-        		short name that is intended to be displayed 
-        		by tools
-        
+                        taglib, should be user discernable
+
+        display-name    the display-name element contains a
+                        short name that is intended to be displayed
+                        by tools
+
         icon            optional icon that can be used by tools
-        
-        tlib-version    the version of the tag library implementation 
-        
-        short-name      a simple default short name that could be 
-        		used by a JSP authoring tool to create 
-        		names with a mnemonic value; for example, 
-        		the it may be used as the prefered prefix 
-        		value in taglib directives
-        
+
+        tlib-version    the version of the tag library implementation
+
+        short-name      a simple default short name that could be
+                        used by a JSP authoring tool to create
+                        names with a mnemonic value; for example,
+                        the it may be used as the prefered prefix
+                        value in taglib directives
+
         uri             a uri uniquely identifying this taglib
-        
+
         validator       optional TagLibraryValidator information
-        
+
         listener        optional event listener specification
-        
+
         tag             tags in this tag library
-        
+
         tag-file        tag files in this tag library
-        
-        function        zero or more EL functions defined in this 
-        		tag library
-        
+
+        function        zero or more EL functions defined in this
+                        tag library
+
         taglib-extension zero or more extensions that provide extra
-        		information about this taglib, for tool 
-        		consumption
-        
+                        information about this taglib, for tool
+                        consumption
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -605,8 +605,8 @@
           <xsd:documentation>
 
             Describes this version (number) of the taglibrary.
-            It is described as a dewey decimal. 
-            
+            It is described as a dewey decimal.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -616,12 +616,12 @@
           <xsd:documentation>
 
             Defines a simple default name that could be used by
-            a JSP authoring tool to create names with a 
-            mnemonicvalue; for example, it may be used as the 
-            preferred prefix value in taglib directives.  Do 
-            not use white space, and do not start with digits 
-            or underscore. 
-            
+            a JSP authoring tool to create names with a
+            mnemonicvalue; for example, it may be used as the
+            preferred prefix value in taglib directives.  Do
+            not use white space, and do not start with digits
+            or underscore.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -634,7 +634,7 @@
             Defines a public URI that uniquely identifies this
             version of the taglibrary.  Leave it empty if it
             does not apply.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -666,9 +666,9 @@
         <xsd:annotation>
           <xsd:documentation>
 
-            Taglib extensions are for tool use only and must not 
-            affect the behavior of a container.  
-            
+            Taglib extensions are for tool use only and must not
+            affect the behavior of a container.
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -682,7 +682,7 @@
 
           Describes the JSP version (number) this taglibrary
           requires in order to function (dewey decimal)
-          
+
         </xsd:documentation>
       </xsd:annotation>
     </xsd:attribute>
@@ -698,33 +698,33 @@
       <xsd:documentation>
 
         The variableType provides information on the scripting
-        variables defined by using this tag.  It is a (translation 
-        time) error for a tag that has one or more variable 
-        subelements to have a TagExtraInfo class that returns a 
+        variables defined by using this tag.  It is a (translation
+        time) error for a tag that has one or more variable
+        subelements to have a TagExtraInfo class that returns a
         non-null value from a call to getVariableInfo().
-        
+
         The subelements of variableType are of the form:
-        
-        description              Optional description of this 
-        			 variable
-        
+
+        description              Optional description of this
+                                 variable
+
         name-given               The variable name as a constant
-        
-        name-from-attribute      The name of an attribute whose 
-        			 (translation time) value will 
-        			 give the name of the
-        			 variable.  One of name-given or
-        			 name-from-attribute is required.
-        
+
+        name-from-attribute      The name of an attribute whose
+                                 (translation time) value will
+                                 give the name of the
+                                 variable.  One of name-given or
+                                 name-from-attribute is required.
+
         variable-class           Name of the class of the variable.
-        			 java.lang.String is default.
-        
-        declare                  Whether the variable is declared 
-        			 or not.  True is the default.
-        
+                                 java.lang.String is default.
+
+        declare                  Whether the variable is declared
+                                 or not.  True is the default.
+
         scope                    The scope of the scripting varaible
-        			 defined.  NESTED is default.
-        
+                                 defined.  NESTED is default.
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -739,7 +739,7 @@
             <xsd:documentation>
 
               The name for the scripting variable.
-              
+
             </xsd:documentation>
           </xsd:annotation>
         </xsd:element>
@@ -749,9 +749,9 @@
             <xsd:documentation>
 
               The name of an attribute whose
-              (translation-time) value will give the name of 
+              (translation-time) value will give the name of
               the variable.
-              
+
             </xsd:documentation>
           </xsd:annotation>
         </xsd:element>
@@ -764,7 +764,7 @@
 
             The optional name of the class for the scripting
             variable.  The default is java.lang.String.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -775,9 +775,9 @@
           <xsd:documentation>
 
             Whether the scripting variable is to be defined
-            or not.  See TagExtraInfo for details.  This 
+            or not.  See TagExtraInfo for details.  This
             element is optional and "true" is the default.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -788,7 +788,7 @@
           <xsd:documentation>
 
             The element is optional and "NESTED" is the default.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -805,9 +805,9 @@
       <xsd:documentation>
 
         This type defines scope of the scripting variable.  See
-        TagExtraInfo for details.  The allowed values are, 
+        TagExtraInfo for details.  The allowed values are,
         "NESTED", "AT_BEGIN" and "AT_END".
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:simpleContent>
@@ -827,28 +827,28 @@
       <xsd:documentation>
 
         The attribute element defines an attribute for the nesting
-        tag.  The attribute element may have several subelements 
-        defining: 
-        
+        tag.  The attribute element may have several subelements
+        defining:
+
         description     a description of the attribute
-        
-        name            the name of the attribute 
-        
-        required        whether the attribute is required or 
-        		optional 
-        
-        rtexprvalue     whether the attribute is a runtime attribute 
-        
-        type            the type of the attributes 
-        
+
+        name            the name of the attribute
+
+        required        whether the attribute is required or
+                        optional
+
+        rtexprvalue     whether the attribute is a runtime attribute
+
+        type            the type of the attributes
+
         fragment        whether this attribute is a fragment
-        
+
         deferred-value  present if this attribute is to be parsed as a
         jakarta.el.ValueExpression
-        
+
         deferred-method present if this attribute is to be parsed as a
         jakarta.el.MethodExpression
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -866,10 +866,10 @@
 
             Defines if the nesting attribute is required or
             optional.
-            
-            If not present then the default is "false", i.e 
+
+            If not present then the default is "false", i.e
             the attribute is optional.
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -881,14 +881,14 @@
               <xsd:annotation>
                 <xsd:documentation>
 
-                  	  Defines if the nesting attribute can have scriptlet
-                  	  expressions as a value, i.e the value of the
-                  	  attribute may be dynamically calculated at request
-                  	  time, as opposed to a static value determined at
-                  	  translation time.
-                  	  If not present then the default is "false", i.e the
-                  	  attribute has a static value
-                  
+                            Defines if the nesting attribute can have scriptlet
+                            expressions as a value, i.e the value of the
+                            attribute may be dynamically calculated at request
+                            time, as opposed to a static value determined at
+                            translation time.
+                            If not present then the default is "false", i.e the
+                            attribute has a static value
+
                 </xsd:documentation>
               </xsd:annotation>
             </xsd:element>
@@ -898,10 +898,10 @@
               <xsd:annotation>
                 <xsd:documentation>
 
-                  	  Defines the Java type of the attributes value.  
-                  If this element is omitted, the expected type is 
-                  assumed to be "java.lang.Object".  
-                  
+                  Defines the Java type of the attributes value.
+                  If this element is omitted, the expected type is
+                  assumed to be "java.lang.Object".
+
                 </xsd:documentation>
               </xsd:annotation>
             </xsd:element>
@@ -913,14 +913,14 @@
               <xsd:annotation>
                 <xsd:documentation>
 
-                  Present if the value for this attribute is to be 
-                  passed to the tag handler as a 
-                  jakarta.el.ValueExpression. This allows for deferred 
-                  evaluation of EL expressions. An optional subelement 
-                  will contain the expected type that the value will 
+                  Present if the value for this attribute is to be
+                  passed to the tag handler as a
+                  jakarta.el.ValueExpression. This allows for deferred
+                  evaluation of EL expressions. An optional subelement
+                  will contain the expected type that the value will
                   be coerced to after evaluation of the expression.
                   The type defaults to Object if one is not provided.
-                  
+
                 </xsd:documentation>
               </xsd:annotation>
             </xsd:element>
@@ -930,15 +930,15 @@
               <xsd:annotation>
                 <xsd:documentation>
 
-                  Present if the value for this attribute is to be 
-                  passed to the tag handler as a 
-                  jakarta.el.MethodExpression. This allows for deferred 
-                  evaluation of an EL expression that identifies a 
-                  method to be invoked on an Object. An optional 
+                  Present if the value for this attribute is to be
+                  passed to the tag handler as a
+                  jakarta.el.MethodExpression. This allows for deferred
+                  evaluation of an EL expression that identifies a
+                  method to be invoked on an Object. An optional
                   subelement will contain the expected method
-                  signature. The signature defaults to "void method()" 
+                  signature. The signature defaults to "void method()"
                   if one is not provided.
-                  
+
                 </xsd:documentation>
               </xsd:annotation>
             </xsd:element>
@@ -952,10 +952,10 @@
 
               "true" if this attribute is of type
               jakarta.servlet.jsp.tagext.JspFragment, representing dynamic
-              content that can be re-evaluated as many times 
+              content that can be re-evaluated as many times
               as needed by the tag handler.  If omitted or "false",
               the default is still type="java.lang.String"
-              
+
             </xsd:documentation>
           </xsd:annotation>
         </xsd:element>
@@ -974,11 +974,11 @@
 
         Defines information about how to provide the value for a
         tag handler attribute that accepts a jakarta.el.ValueExpression.
-        
+
         The deferred-value element has one optional subelement:
-        
+
         type            the expected type of the attribute
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -988,11 +988,11 @@
         <xsd:annotation>
           <xsd:documentation>
 
-            The fully-qualified name of the Java type that is the 
-            expected type for this deferred expression.  If this 
-            element is omitted, the expected type is assumed to be 
+            The fully-qualified name of the Java type that is the
+            expected type for this deferred expression.  If this
+            element is omitted, the expected type is assumed to be
             "java.lang.Object".
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1010,14 +1010,14 @@
 
         Defines information about how to provide the value for a
         tag handler attribute that accepts a jakarta.el.MethodExpression.
-        
+
         The deferred-method element has one optional subelement:
-        
+
         method-signature  Provides the signature, as in the Java
-        Language Specifies, that is expected for 
-        the method being identified by the 
+        Language Specifies, that is expected for
+        the method being identified by the
         expression.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1027,23 +1027,23 @@
         <xsd:annotation>
           <xsd:documentation>
 
-            Provides the expected signature of the method identified 
+            Provides the expected signature of the method identified
             by the jakarta.el.MethodExpression.
-            
-            This disambiguates overloaded methods and ensures that 
+
+            This disambiguates overloaded methods and ensures that
             the return value is of the expected type.
-            
-            The syntax of the method-signature element is identical 
-            to that of the function-signature element.  See the 
+
+            The syntax of the method-signature element is identical
+            to that of the function-signature element.  See the
             documentation for function-signature for more details.
-            
-            The name of the method is for documentation purposes only 
+
+            The name of the method is for documentation purposes only
             and is ignored by the JSP container.
-            
+
             Example:
-            
+
             boolean validate(java.lang.String)
-            
+
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -1061,17 +1061,17 @@
 
         The tld-extensionType is used to indicate
         extensions to a specific TLD element.
-        
+
         It is used by elements to designate an extension block
         that is targeted to a specific extension designated by
         a set of extension elements that are declared by a
         namespace. The namespace identifies the extension to
         the tool that processes the extension.
-        
+
         The type of the extension-element is abstract. Therefore,
         a concrete type must be specified by the TLD using
-        xsi:type attribute for each extension-element. 
-        
+        xsi:type attribute for each extension-element.
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:sequence>
@@ -1099,7 +1099,7 @@
         must substitute a known type to define the extension by
         using xsi:type attribute to define the actual type of
         extension-elements.
-        
+
       </xsd:documentation>
     </xsd:annotation>
     <xsd:attribute name="id"


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


(tomcat) 04/05: Add/update tests for the Jakarta EE 11 schema

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 2f5fa345668ef8beb972027b72e33ae496bd4a07
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Mar 28 08:42:47 2024 +0000

    Add/update tests for the Jakarta EE 11 schema
---
 .../apache/tomcat/util/descriptor/web/WebXml.java  |  4 +++
 .../servlet/resources/TestSchemaValidation.java    | 17 +++++++++-
 test/org/apache/jasper/TestJspC.java               |  8 +++++
 test/org/apache/jasper/compiler/TestJspConfig.java | 17 ++++++++++
 test/org/apache/jasper/compiler/TestValidator.java | 26 +++++++++++++++
 .../jasper/servlet/TestJspCServletContext.java     | 12 ++++++-
 test/webapp-6.1/WEB-INF/tags11.tld                 | 37 ++++++++++++++++++++++
 test/webapp-6.1/WEB-INF/tags12.tld                 | 37 ++++++++++++++++++++++
 test/webapp-6.1/WEB-INF/tags20.tld                 | 37 ++++++++++++++++++++++
 test/webapp-6.1/WEB-INF/tags21.tld                 | 37 ++++++++++++++++++++++
 test/webapp-6.1/WEB-INF/tags30.tld                 | 37 ++++++++++++++++++++++
 test/webapp-6.1/WEB-INF/tags31.tld                 | 37 ++++++++++++++++++++++
 test/webapp-6.1/WEB-INF/tags40.tld                 | 37 ++++++++++++++++++++++
 test/webapp-6.1/WEB-INF/web.xml                    | 36 +++++++++++++++++++++
 test/webapp-6.1/el-as-literal.jsp                  | 21 ++++++++++++
 test/webapp-6.1/tld-versions.jsp                   | 35 ++++++++++++++++++++
 test/webapp/WEB-INF/web.xml                        |  4 +--
 17 files changed, 435 insertions(+), 4 deletions(-)

diff --git a/java/org/apache/tomcat/util/descriptor/web/WebXml.java b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
index 47f45ced36..99dfe8890e 100644
--- a/java/org/apache/tomcat/util/descriptor/web/WebXml.java
+++ b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
@@ -194,6 +194,10 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
                 majorVersion = 6;
                 minorVersion = 0;
                 break;
+            case "6.1":
+                majorVersion = 6;
+                minorVersion = 1;
+                break;
             default:
                 log.warn(sm.getString("webXml.version.unknown", version));
         }
diff --git a/test/jakarta/servlet/resources/TestSchemaValidation.java b/test/jakarta/servlet/resources/TestSchemaValidation.java
index dd070fbc75..146ad5cbcd 100644
--- a/test/jakarta/servlet/resources/TestSchemaValidation.java
+++ b/test/jakarta/servlet/resources/TestSchemaValidation.java
@@ -39,7 +39,7 @@ public class TestSchemaValidation {
         digester.push(new WebXml());
         WebXml desc = (WebXml) digester.parse(
                 new File("test/webapp/WEB-INF/web.xml"));
-        Assert.assertEquals("6.0", desc.getVersion());
+        Assert.assertEquals("6.1", desc.getVersion());
         Assert.assertEquals(0, handler.getErrors().size());
         Assert.assertEquals(0, handler.getWarnings().size());
     }
@@ -172,4 +172,19 @@ public class TestSchemaValidation {
         Assert.assertEquals(0, handler.getErrors().size());
         Assert.assertEquals(0, handler.getWarnings().size());
     }
+
+
+    @Test
+    public void testWebapp_6_1() throws Exception {
+        XmlErrorHandler handler = new XmlErrorHandler();
+        Digester digester = DigesterFactory.newDigester(
+                true, true, new WebRuleSet(false), true);
+        digester.setErrorHandler(handler);
+        digester.push(new WebXml());
+        WebXml desc = (WebXml) digester.parse(
+                new File("test/webapp-6.1/WEB-INF/web.xml"));
+        Assert.assertEquals("6.1", desc.getVersion());
+        Assert.assertEquals(0, handler.getErrors().size());
+        Assert.assertEquals(0, handler.getWarnings().size());
+    }
 }
diff --git a/test/org/apache/jasper/TestJspC.java b/test/org/apache/jasper/TestJspC.java
index b544c7bf19..82ed163c74 100644
--- a/test/org/apache/jasper/TestJspC.java
+++ b/test/org/apache/jasper/TestJspC.java
@@ -119,6 +119,14 @@ public class TestJspC {
         verify(webappOut);
     }
 
+    @Test
+    public void precompileWebapp_6_1() throws IOException {
+        File appDir = new File("test/webapp-6.1");
+        File webappOut = new File(outputDir, appDir.getName());
+        precompile(appDir, webappOut);
+        verify(webappOut);
+    }
+
     private void verify(File webappOut) {
         // for now, just check some expected files exist
         Assert.assertTrue(new File(webappOut, "generated_web.xml").exists());
diff --git a/test/org/apache/jasper/compiler/TestJspConfig.java b/test/org/apache/jasper/compiler/TestJspConfig.java
index 4f9cf26cd9..2583a632f6 100644
--- a/test/org/apache/jasper/compiler/TestJspConfig.java
+++ b/test/org/apache/jasper/compiler/TestJspConfig.java
@@ -185,6 +185,23 @@ public class TestJspConfig extends TomcatBaseTest {
         Assert.assertTrue(result.indexOf("<p>00-hello world</p>") > 0);
     }
 
+    @Test
+    public void testServlet61NoEL() throws Exception {
+        Tomcat tomcat = getTomcatInstance();
+
+        File appDir = new File("test/webapp-6.1");
+        // app dir is relative to server home
+        tomcat.addWebapp(null, "/test", appDir.getAbsolutePath());
+
+        tomcat.start();
+
+        ByteChunk res = getUrl("http://localhost:" + getPort() + "/test/el-as-literal.jsp");
+
+        String result = res.toString();
+
+        Assert.assertTrue(result.indexOf("<p>00-hello world</p>") > 0);
+    }
+
     @Test
     public void testErrorOnELNotFound01() throws Exception {
         // Defaults
diff --git a/test/org/apache/jasper/compiler/TestValidator.java b/test/org/apache/jasper/compiler/TestValidator.java
index aec4efc425..4cceccfef5 100644
--- a/test/org/apache/jasper/compiler/TestValidator.java
+++ b/test/org/apache/jasper/compiler/TestValidator.java
@@ -251,6 +251,32 @@ public class TestValidator extends TomcatBaseTest {
         Assert.assertTrue(result.indexOf("<p>08-hello world</p>") > 0);
     }
 
+    @Test
+    public void testTldVersions61() throws Exception {
+        Tomcat tomcat = getTomcatInstance();
+
+        File appDir = new File("test/webapp-6.1");
+        // app dir is relative to server home
+        tomcat.addWebapp(null, "/test", appDir.getAbsolutePath());
+
+        tomcat.start();
+
+        ByteChunk res = getUrl("http://localhost:" + getPort() + "/test/tld-versions.jsp");
+
+        String result = res.toString();
+
+        Assert.assertTrue(result.indexOf("<p>00-hello world</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>#{'01-hello world'}</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>02-hello world</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>#{'03-hello world'}</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>04-hello world</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>#{'05-hello world'}</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>06-hello world</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>07-hello world</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>08-hello world</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>09-hello world</p>") > 0);
+    }
+
     public static class Echo extends TagSupport {
 
         private static final long serialVersionUID = 1L;
diff --git a/test/org/apache/jasper/servlet/TestJspCServletContext.java b/test/org/apache/jasper/servlet/TestJspCServletContext.java
index cc0032e099..48b14500db 100644
--- a/test/org/apache/jasper/servlet/TestJspCServletContext.java
+++ b/test/org/apache/jasper/servlet/TestJspCServletContext.java
@@ -35,7 +35,7 @@ public class TestJspCServletContext {
         JspCServletContext context = new JspCServletContext(
                 null, appDir.toURI().toURL(), null, false, false);
         Assert.assertEquals(6, context.getEffectiveMajorVersion());
-        Assert.assertEquals(0, context.getEffectiveMinorVersion());
+        Assert.assertEquals(1, context.getEffectiveMinorVersion());
         JspConfigDescriptor jspConfigDescriptor =
                 context.getJspConfigDescriptor();
         Assert.assertTrue(jspConfigDescriptor.getTaglibs().isEmpty());
@@ -143,6 +143,16 @@ public class TestJspCServletContext {
     }
 
 
+    @Test
+    public void testWebapp_6_1() throws Exception {
+        File appDir = new File("test/webapp-6.1");
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
+        Assert.assertEquals(6, context.getEffectiveMajorVersion());
+        Assert.assertEquals(1, context.getEffectiveMinorVersion());
+    }
+
+
     @Test
     public void testWebresources() throws Exception {
         File appDir = new File("test/webresources/dir1");
diff --git a/test/webapp-6.1/WEB-INF/tags11.tld b/test/webapp-6.1/WEB-INF/tags11.tld
new file mode 100644
index 0000000000..3c7ae98afe
--- /dev/null
+++ b/test/webapp-6.1/WEB-INF/tags11.tld
@@ -0,0 +1,37 @@
+<?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.
+--><!DOCTYPE taglib
+      PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
+      "http://java.sun.com/dtd/web-jsptaglibrary_1_1.dtd">
+<taglib>
+  <tlibversion>1.0</tlibversion>
+  <jspversion>1.1</jspversion>
+  <shortname>Tags11</shortname>
+  <uri>http://tomcat.apache.org/tags11</uri>
+
+  <tag>
+    <name>Echo</name>
+    <tagclass>org.apache.jasper.compiler.TestValidator$Echo</tagclass>
+    <bodycontent>empty</bodycontent>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/test/webapp-6.1/WEB-INF/tags12.tld b/test/webapp-6.1/WEB-INF/tags12.tld
new file mode 100644
index 0000000000..533235bd7e
--- /dev/null
+++ b/test/webapp-6.1/WEB-INF/tags12.tld
@@ -0,0 +1,37 @@
+<?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.
+--><!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.0</tlib-version>
+  <jsp-version>1.2</jsp-version>
+  <short-name>Tags12</short-name>
+  <uri>http://tomcat.apache.org/tags12</uri>
+
+  <tag>
+    <name>Echo</name>
+    <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class>
+    <body-content>empty</body-content>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/test/webapp-6.1/WEB-INF/tags20.tld b/test/webapp-6.1/WEB-INF/tags20.tld
new file mode 100644
index 0000000000..056c48423d
--- /dev/null
+++ b/test/webapp-6.1/WEB-INF/tags20.tld
@@ -0,0 +1,37 @@
+<?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.
+--><taglib xmlns="http://java.sun.com/xml/ns/j2ee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+      http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+      version="2.0">
+  <tlib-version>1.0</tlib-version>
+  <short-name>Tags20</short-name>
+  <uri>http://tomcat.apache.org/tags20</uri>
+
+  <tag>
+    <name>Echo</name>
+    <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class>
+    <body-content>empty</body-content>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/test/webapp-6.1/WEB-INF/tags21.tld b/test/webapp-6.1/WEB-INF/tags21.tld
new file mode 100644
index 0000000000..4a196753ea
--- /dev/null
+++ b/test/webapp-6.1/WEB-INF/tags21.tld
@@ -0,0 +1,37 @@
+<?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.
+--><taglib xmlns="http://java.sun.com/xml/ns/javaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
+      version="2.1">
+  <tlib-version>1.0</tlib-version>
+  <short-name>Tags21</short-name>
+  <uri>http://tomcat.apache.org/tags21</uri>
+
+  <tag>
+    <name>Echo</name>
+    <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class>
+    <body-content>empty</body-content>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/test/webapp-6.1/WEB-INF/tags30.tld b/test/webapp-6.1/WEB-INF/tags30.tld
new file mode 100644
index 0000000000..76443f59ef
--- /dev/null
+++ b/test/webapp-6.1/WEB-INF/tags30.tld
@@ -0,0 +1,37 @@
+<?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.
+--><taglib xmlns="http://java.sun.com/xml/ns/javaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_3_0.xsd"
+      version="3.0">
+  <tlib-version>1.0</tlib-version>
+  <short-name>Tags30</short-name>
+  <uri>http://tomcat.apache.org/tags30</uri>
+
+  <tag>
+    <name>Echo</name>
+    <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class>
+    <body-content>empty</body-content>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/test/webapp-6.1/WEB-INF/tags31.tld b/test/webapp-6.1/WEB-INF/tags31.tld
new file mode 100644
index 0000000000..7d8ef32349
--- /dev/null
+++ b/test/webapp-6.1/WEB-INF/tags31.tld
@@ -0,0 +1,37 @@
+<?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.
+--><taglib xmlns="http://java.sun.com/xml/ns/javaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_3_1.xsd"
+      version="3.1">
+  <tlib-version>1.0</tlib-version>
+  <short-name>Tags31</short-name>
+  <uri>http://tomcat.apache.org/tags31</uri>
+
+  <tag>
+    <name>Echo</name>
+    <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class>
+    <body-content>empty</body-content>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/test/webapp-6.1/WEB-INF/tags40.tld b/test/webapp-6.1/WEB-INF/tags40.tld
new file mode 100644
index 0000000000..12e829ee61
--- /dev/null
+++ b/test/webapp-6.1/WEB-INF/tags40.tld
@@ -0,0 +1,37 @@
+<?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.
+--><taglib xmlns="http://java.sun.com/xml/ns/javaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_4_0.xsd"
+      version="4.0">
+  <tlib-version>1.0</tlib-version>
+  <short-name>Tags40</short-name>
+  <uri>http://tomcat.apache.org/tags40</uri>
+
+  <tag>
+    <name>Echo</name>
+    <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class>
+    <body-content>empty</body-content>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/test/webapp-6.1/WEB-INF/web.xml b/test/webapp-6.1/WEB-INF/web.xml
new file mode 100644
index 0000000000..530ee3f73a
--- /dev/null
+++ b/test/webapp-6.1/WEB-INF/web.xml
@@ -0,0 +1,36 @@
+<?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.
+-->
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1"
+  metadata-complete="true">
+
+  <display-name>Tomcat Servlet 6.1 Tests</display-name>
+  <description>
+    Provides a web application used by the Tomcat unit tests to ensure that
+    Tomcat meets the requirements of the current JSP and Servlet specification
+    for web applications that declare that they follow version 6.1 of the
+    Servlet specification and version 4.0 of the JSP specification. This
+    typically means ensuring that features introduced in later versions of the
+    specification do not change the behaviour of applications that declared an
+    earlier version of the specification.
+  </description>
+
+</web-app>
\ No newline at end of file
diff --git a/test/webapp-6.1/el-as-literal.jsp b/test/webapp-6.1/el-as-literal.jsp
new file mode 100644
index 0000000000..f48e1143bd
--- /dev/null
+++ b/test/webapp-6.1/el-as-literal.jsp
@@ -0,0 +1,21 @@
+<%--
+ 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.
+--%>
+<html>
+  <body>
+    <p>00-${'hello world'}</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/test/webapp-6.1/tld-versions.jsp b/test/webapp-6.1/tld-versions.jsp
new file mode 100644
index 0000000000..4b8fa8f2c5
--- /dev/null
+++ b/test/webapp-6.1/tld-versions.jsp
@@ -0,0 +1,35 @@
+<%--
+ 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.
+--%>
+<html><body>
+<%@ taglib prefix="tags11" uri="http://tomcat.apache.org/tags11" %>
+<%@ taglib prefix="tags12" uri="http://tomcat.apache.org/tags12" %>
+<%@ taglib prefix="tags20" uri="http://tomcat.apache.org/tags20" %>
+<%@ taglib prefix="tags21" uri="http://tomcat.apache.org/tags21" %>
+<%@ taglib prefix="tags30" uri="http://tomcat.apache.org/tags30" %>
+<%@ taglib prefix="tags31" uri="http://tomcat.apache.org/tags31" %>
+<%@ taglib prefix="tags40" uri="http://tomcat.apache.org/tags40" %>
+<tags11:Echo echo="${'00-hello world'}"/>
+<tags11:Echo echo="#{'01-hello world'}"/>
+<tags12:Echo echo="${'02-hello world'}"/>
+<tags12:Echo echo="#{'03-hello world'}"/>
+<tags20:Echo echo="${'04-hello world'}"/>
+<tags20:Echo echo="#{'05-hello world'}"/>
+<tags21:Echo echo="${'06-hello world'}"/>
+<tags30:Echo echo="${'07-hello world'}"/>
+<tags31:Echo echo="${'08-hello world'}"/>
+<tags40:Echo echo="${'09-hello world'}"/>
+</body></html>
\ No newline at end of file
diff --git a/test/webapp/WEB-INF/web.xml b/test/webapp/WEB-INF/web.xml
index 43eb0f1137..8c07330535 100644
--- a/test/webapp/WEB-INF/web.xml
+++ b/test/webapp/WEB-INF/web.xml
@@ -18,8 +18,8 @@
 <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
-                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
-  version="6.0"
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+  version="6.1"
   metadata-complete="true">
 
   <display-name>Tomcat Test Application</display-name>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org