<schema
  xmlns='http://www.w3.org/2001/XMLSchema'
  targetNamespace='http://java.sun.com/dtd/web-app_2_3.dtd'
  xmlns:wa='http://java.sun.com/dtd/web-app_2_3.dtd'>

 <element name='web-app'>
  <complexType>
   <sequence>
    <element ref='wa:icon' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:display-name' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:distributable' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:context-param' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:filter' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:filter-mapping' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:listener' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:servlet' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:servlet-mapping' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:session-config' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:mime-mapping' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:welcome-file-list' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:error-page' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:taglib' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:resource-env-ref' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:resource-ref' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:security-constraint' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:login-config' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:security-role' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:env-entry' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:ejb-ref' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:ejb-local-ref' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='auth-constraint'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:role-name' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='auth-method'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='context-param'>
  <complexType>
   <sequence>
    <element ref='wa:param-name'/>
    <element ref='wa:param-value'/>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='description'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='display-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='distributable'>
  <complexType>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='ejb-link'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='ejb-local-ref'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:ejb-ref-name'/>
    <element ref='wa:ejb-ref-type'/>
    <element ref='wa:local-home'/>
    <element ref='wa:local'/>
    <element ref='wa:ejb-link' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='ejb-ref'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:ejb-ref-name'/>
    <element ref='wa:ejb-ref-type'/>
    <element ref='wa:home'/>
    <element ref='wa:remote'/>
    <element ref='wa:ejb-link' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='ejb-ref-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='ejb-ref-type'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='env-entry'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:env-entry-name'/>
    <element ref='wa:env-entry-value' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:env-entry-type'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='env-entry-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='env-entry-type'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='env-entry-value'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='error-code'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='error-page'>
  <complexType>
   <sequence>
    <choice>
     <element ref='wa:error-code'/>
     <element ref='wa:exception-type'/>
    </choice>
    <element ref='wa:location'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='exception-type'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='extension'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='filter'>
  <complexType>
   <sequence>
    <element ref='wa:icon' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:filter-name'/>
    <element ref='wa:display-name' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:filter-class'/>
    <element ref='wa:init-param' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='filter-class'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='filter-mapping'>
  <complexType>
   <sequence>
    <element ref='wa:filter-name'/>
    <choice>
     <element ref='wa:url-pattern'/>
     <element ref='wa:servlet-name'/>
    </choice>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='filter-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='form-error-page'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='form-login-config'>
  <complexType>
   <sequence>
    <element ref='wa:form-login-page'/>
    <element ref='wa:form-error-page'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='form-login-page'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='home'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='http-method'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='icon'>
  <complexType>
   <sequence>
    <element ref='wa:small-icon' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:large-icon' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='init-param'>
  <complexType>
   <sequence>
    <element ref='wa:param-name'/>
    <element ref='wa:param-value'/>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='jsp-file'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='large-icon'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='listener'>
  <complexType>
   <sequence>
    <element ref='wa:listener-class'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='listener-class'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='load-on-startup'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='local'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='local-home'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='location'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='login-config'>
  <complexType>
   <sequence>
    <element ref='wa:auth-method' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:realm-name' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:form-login-config' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='mime-mapping'>
  <complexType>
   <sequence>
    <element ref='wa:extension'/>
    <element ref='wa:mime-type'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='mime-type'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='param-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='param-value'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='realm-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='remote'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='res-auth'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='res-ref-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='res-sharing-scope'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='res-type'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='resource-env-ref'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:resource-env-ref-name'/>
    <element ref='wa:resource-env-ref-type'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='resource-env-ref-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='resource-env-ref-type'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='resource-ref'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:res-ref-name'/>
    <element ref='wa:res-type'/>
    <element ref='wa:res-auth'/>
    <element ref='wa:res-sharing-scope' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='role-link'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='role-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='run-as'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:role-name'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='security-constraint'>
  <complexType>
   <sequence>
    <element ref='wa:display-name' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:web-resource-collection' maxOccurs='unbounded'/>
    <element ref='wa:auth-constraint' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:user-data-constraint' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='security-role'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:role-name'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='security-role-ref'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:role-name'/>
    <element ref='wa:role-link' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='servlet'>
  <complexType>
   <sequence>
    <element ref='wa:icon' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:servlet-name'/>
    <element ref='wa:display-name' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <choice>
     <element ref='wa:servlet-class'/>
     <element ref='wa:jsp-file'/>
    </choice>
    <element ref='wa:init-param' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:load-on-startup' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:run-as' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:security-role-ref' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='servlet-class'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='servlet-mapping'>
  <complexType>
   <sequence>
    <element ref='wa:servlet-name'/>
    <element ref='wa:url-pattern'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='servlet-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='session-config'>
  <complexType>
   <sequence>
    <element ref='wa:session-timeout' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='session-timeout'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='small-icon'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='taglib'>
  <complexType>
   <sequence>
    <element ref='wa:taglib-uri'/>
    <element ref='wa:taglib-location'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='taglib-location'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='taglib-uri'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='transport-guarantee'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='url-pattern'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='user-data-constraint'>
  <complexType>
   <sequence>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:transport-guarantee'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='web-resource-collection'>
  <complexType>
   <sequence>
    <element ref='wa:web-resource-name'/>
    <element ref='wa:description' minOccurs='0' maxOccurs='1'/>
    <element ref='wa:url-pattern' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='wa:http-method' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='web-resource-name'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='welcome-file'>
  <complexType mixed='true'>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>

 <element name='welcome-file-list'>
  <complexType>
   <sequence>
    <element ref='wa:welcome-file' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='id' type='ID' use='optional'/>
  </complexType>
 </element>
</schema>
