<!--

    Copyright (c) 1999, 2018 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

-->

<!--
The alt-dd element specifies an optional URI to the post-assembly version of the
deployment descriptor file for a particular J2EE module. The URI must specify
the full pathname of the deployment descriptor file relative to the
application's root directory. If alt-dd is not specified, the deployer must read
the deployment descriptor from the default location and file name required by
the respective component specification.
-->
<!ELEMENT alt-dd (#PCDATA)>

<!--
The application element is the root element of a J2EE application deployment
descriptor.
-->
<!ELEMENT application (icon?, display-name, description?, module+,
security-role*)>

<!--
The context-root element specifies the context root of a web application
-->
<!ELEMENT context-root (#PCDATA)>

<!--
The description element provides a human readable description of the
application. The description element should include any information that the
application assembler wants to provide the deployer.
-->
<!ELEMENT description (#PCDATA)>

<!--
The display-name element specifies an application name.
The application name is assigned to the application by the application assembler
and is used to identify the application to the deployer at deployment time.
-->
<!ELEMENT display-name (#PCDATA)>

<!--
The ejb element specifies the URI of a ejb-jar, relative to the top level of the
application package.
-->
<!ELEMENT ejb (#PCDATA)>

<!--
The icon element contains a small-icon and large-icon element which specify the
URIs for a small and a large GIF or JPEG icon image to represent the application
in a GUI.
-->
<!ELEMENT icon (small-icon?, large-icon?)>

<!--
The java element specifies the URI of a java application client module, relative
to the top level of the application package.
-->
<!ELEMENT java (#PCDATA)>

<!--
The large-icon element specifies the URI for a large GIF or JPEG icon image to
represent the application in a GUI.
-->
<!ELEMENT large-icon (#PCDATA)>

<!--
The module element represents a single J2EE module and contains an ejb, java, or
web element, which indicates the module type and contains a path to the module
file, and an optional alt-dd element, which specifies an optional URI to the
post-assembly version of the deployment descriptor.
The application deployment descriptor must have one module element for each J2EE
module in the application package.
-->
<!ELEMENT module ((ejb | java | web), alt-dd?)>

<!--
The role-name element contains the name of a security role.
-->
<!ELEMENT role-name (#PCDATA)>

<!--
The security-role element contains the definition of a security role which is
global to the application. The definition consists of a description of the
security role, and the security role name. The descriptions at this level
override those in the component level security-role definitions and must be the
descriptions tool display to the deployer.
-->
<!ELEMENT security-role (description?, role-name)>

<!--
The small-icon element specifies the URI for a small GIF or JPEG icon image to
represent the application in a GUI.
-->
<!ELEMENT small-icon (#PCDATA)>

<!--
The web element contains the web-uri and context-root of a web application
module.
-->
<!ELEMENT web (web-uri, context-root)>

<!--
The web-uri element specifies the URI of a web application file, relative to the
top level of the application package.
-->
<!ELEMENT web-uri (#PCDATA)>

<!--
The ID mechanism is to allow tools to easily make tool-specific references to
the elements of the deployment descriptor.
 -->
<!ATTLIST alt-dd id ID #IMPLIED>
<!ATTLIST application id ID #IMPLIED>
<!ATTLIST context-root id ID #IMPLIED>
<!ATTLIST description id ID #IMPLIED>
<!ATTLIST display-name id ID #IMPLIED>
<!ATTLIST ejb id ID #IMPLIED>
<!ATTLIST icon id ID #IMPLIED>
<!ATTLIST java id ID #IMPLIED>
<!ATTLIST large-icon id ID #IMPLIED>
<!ATTLIST module id ID #IMPLIED>
<!ATTLIST role-name id ID #IMPLIED>
<!ATTLIST security-role id ID #IMPLIED>
<!ATTLIST small-icon id ID #IMPLIED>
<!ATTLIST web id ID #IMPLIED>
<!ATTLIST web-uri id ID #IMPLIED>
