<!--
Copyright (c) 2000 Sun Microsystems, Inc.,
901 San Antonio Road,
Palo Alto, California 94303, U.S.A.
All rights reserved.

Sun Microsystems, Inc. has intellectual property rights relating to
technology embodied in the product that is described in this document.
In particular, and without limitation, these intellectual property
rights may include one or more of the U.S. patents listed at
http://www.sun.com/patents and one or more additional patents or
pending patent applications in the U.S. and in other countries.

This document and the product to which it pertains are distributed
under licenses restricting their use, copying, distribution, and
decompilation.  This document may be reproduced and distributed but may
not be changed without prior written authorization of Sun and its
licensors, if any.

Third-party software, including font technology, is copyrighted and
licensed from Sun suppliers.

Sun,  Sun Microsystems,  the Sun logo,  Java,  JavaServer Pages,  Java
Naming and Directory Interface,  JDBC,  JDK,  JavaMail and  and
Enterprise JavaBeans are trademarks or registered trademarks of Sun
Microsystems, Inc. in the U.S. and other countries.

Federal Acquisitions: Commercial Software - Government Users Subject to
Standard License Terms and Conditions.

DOCUMENTATION IS PROVIDED "AS IS" AND ALL EXPRESS OR IMPLIED
CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED
WARRANTY OF MERCHANTABILITY, FITNESS FOR FOR A PARTICULAR PURPOSE OR
NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH
DISCLAIMERS ARE HELD TO BE LEGALLY INVALID.


_________________________________________________________________________

Copyright (c) 2000 Sun Microsystems, Inc.,
901 San Antonio Road,
Palo Alto, California 94303, E'tats-Unis.
Tous droits re'serve's.

Sun Microsystems, Inc. a les droits de proprie'te' intellectuels
relatants a` la technologie incorpore'e dans le produit qui est de'crit
dans ce document. En particulier, et sans la limitation, ces droits de
proprie'te' intellectuels peuvent inclure un ou plus des brevets
ame'ricains e'nume're's a` http://www.sun.com/patents et un ou les
brevets plus supple'mentaires ou les applications de brevet en attente
dans les E'tats-Unis et dans les autres pays.

Ce produit ou document est prote'ge' par un copyright et distribue'
avec des licences qui en restreignent l'utilisation, la copie, la
distribution, et la de'compilation.  Ce documention associe n peut
e^tre reproduite et distribuer, par quelque moyen que ce soit, sans
l'autorisation pre'alable et e'crite de Sun et de ses bailleurs de
licence, le cas e'che'ant.

Le logiciel de'tenu par des tiers, et qui comprend la technologie
relative aux polices de caracte`res, est prote'ge' par un copyright et
licencie' par des fournisseurs de Sun.

Sun,  Sun Microsystems,  le logo Sun,  Java,  JavaServer Pages,  Java
Naming and Directory Interface,  JDBC,  JDK,  JavaMail et  and
Enterprise JavaBeans sont des marques de fabrique ou des marques
de'pose'es de Sun Microsystems, Inc. aux E'tats-Unis et dans d'autres
pays.

LA DOCUMENTATION EST FOURNIE "EN L'E'TAT" ET TOUTES AUTRES CONDITIONS,
DECLARATIONS ET GARANTIES EXPRESSES OU TACITES SONT FORMELLEMENT
EXCLUES, DANS LA MESURE AUTORISEE PAR LA LOI APPLICABLE, Y COMPRIS
NOTAMMENT TOUTE GARANTIE IMPLICITE RELATIVE A LA QUALITE MARCHANDE, A
L'APTITUDE A UNE UTILISATION PARTICULIERE OU A L'ABSENCE DE
CONTREFAC,ON.
-->

<!--
This is the XML DTD for the EJB 2.0 deployment descriptor.
All EJB 2.0 deployment descriptors must include a DOCTYPE
of the following form:

  <!DOCTYPE ejb-jar PUBLIC
	"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
	"http://java.sun.com/dtd/ejb-jar_2_0.dtd">

-->

<!--
The following conventions apply to all J2EE deployment descriptor
elements unless indicated otherwise.

- In elements that contain PCDATA, leading and trailing whitespace
  in the data may be ignored.

- In elements whose value is an "enumerated type", the value is
  case sensitive.

- 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.
-->


<!--
The ejb-jar element is the root element of the EJB deployment
descriptor. It contains

	- an optional description of the ejb-jar file
	- an optional display name
	- an optional small icon file name
	- an optional large icon file name
	- mandatory structural information about all included
	  enterprise beans
	- a descriptor for container managed relationships, if any
	- an optional application-assembly descriptor
	- an optional name of an ejb-client-jar file for the ejb-jar.
-->
<!ELEMENT ejb-jar (description?, display-name?, small-icon?,
large-icon?, enterprise-beans, relationships?, assembly-descriptor?,
ejb-client-jar?)>

<!--
The abstract-schema-name element specifies the name of the abstract
schema type of an entity bean with cmp-version 2.x. It is used in EJB
QL queries.

For example, the abstract-schema-name for an entity bean whose local
interface is com.acme.commerce.Order might be Order.

Used in: entity
-->
<!ELEMENT abstract-schema-name (#PCDATA)>

<!--

The acknowledge-mode element specifies whether JMS AUTO_ACKNOWLEDGE or
DUPS_OK_ACKNOWLEDGE message acknowledgment semantics should be used
for the onMessage message of a message-driven bean that uses bean
managed transaction demarcation.

The acknowledge-mode element must be one of the two following:

	<acknowledge-mode>Auto-acknowledge</acknowledge-mode>
	<acknowledge-mode>Dups-ok-acknowledge</acknowledgemode>

Used in: message-driven
-->
<!ELEMENT acknowledge-mode (#PCDATA)>

<!--
The assembly-descriptor element contains application-assembly information.

The application-assembly information consists of the following parts:
the definition of security roles, the definition of method
permissions, the definition of transaction attributes for
enterprise beans with container-managed transaction demarcation and
a list of methods to be excluded from being invoked.

All the parts are optional in the sense that they are omitted if the
lists represented by them are empty.

Providing an assembly-descriptor in the deployment descriptor is
optional for the ejb-jar file producer.

Used in: ejb-jar
-->
<!ELEMENT assembly-descriptor (security-role*, method-permission*,
container-transaction*, exclude-list?)>

<!--
The cascade-delete element specifies that, within a particular
relationship, the lifetime of one or more entity beans is dependent
upon the lifetime of another entity bean. The cascade-delete element
can only be specified for an ejb-relationship-role element contained
in an ejb-relation element in which the other ejb-relationship-role
element specifies a multiplicity of One.

Used in: ejb-relationship-role
-->
<!ELEMENT cascade-delete EMPTY>

<!--
The cmp-field element describes a container-managed field. The
field element includes an optional description of the field, and the
name of the field.

Used in: entity
-->
<!ELEMENT cmp-field (description?, field-name)>

<!--
The cmp-version element specifies the version of an entity bean
with container-managed persistence.

The cmp-version element must be one of the two following:

	<cmp-version>1.x</cmp-version>
	<cmp-version>2.x</cmp-version>

The default value of the cmp-version element is 2.x.

Used in: entity
-->
<!ELEMENT cmp-version (#PCDATA)>

<!--

The cmr-field element describes the bean provider's view of a
relationship. It consists of an optional description, and the name and
the class type of a field in the source of a role of a
relationship. The cmr-field-name element corresponds to the name used
for the get and set accessor methods for the relationship. The
cmr-field-type element is used only for collection-valued
cmr-fields. It specifies the type of the collection that is used.

Used in: ejb-relationship-role
-->
<!ELEMENT cmr-field (description?, cmr-field-name, cmr-field-type?)>

<!--
The cmr-field-name element specifies the name of a logical
relationship field in the entity bean class. The name of the cmr-field
must begin with a lowercase letter. This field is accessed by methods
whose names consist of the name of the field specified by
cmr-field-name in which the first letter is uppercased, prefixed by
"get" or "set".

Used in: cmr-field
-->
<!ELEMENT cmr-field-name (#PCDATA)>

<!--
The cmr-field-type element specifies the class of a
collection-valued logical relationship field in the entity bean
class. The value of the cmr-field-type element must be either:
java.util.Collection or java.util.Set.

Used in: cmr-field
-->
<!ELEMENT cmr-field-type (#PCDATA)>

<!--
The container-transaction element specifies how the container
must manage transaction scopes for the enterprise bean's method
invocations. The element consists of an optional description, a list
of method elements, and a transaction attribute. The transaction
attribute is to be applied to all the specified methods.

Used in: assembly-descriptor
-->
<!ELEMENT container-transaction (description?, method+, trans-attribute)>

<!--
The description element is used to provide text describing the parent
element.  The description element should include any information that
the enterprise bean ejb-jar file producer wants to provide to the consumer of
the enterprise bean ejb-jar file (i.e., to the Deployer). Typically, the tools
used by the enterprise bean ejb-jar file consumer will display the description
when processing the parent element that contains the description.

Used in: cmp-field, cmr-field, container-transaction, ejb-jar,
ejb-local-ref, ejb-ref, ejb-relation, ejb-relationship-role, entity,
env-entry, exclude-list, message-driven, method, method-permission,
query, relationship-role-source, relationships, resource-env-ref,
resource-ref, run-as, security-identity, security-role,
security-role-ref, session
-->
<!ELEMENT description (#PCDATA)>

<!--
The destination-type element specifies the type of the JMS
destination. The type is specified by the Java interface expected to
be implemented by the destination.

The destination-type element must be one of the two following:

<destination-type>javax.jms.Queue</destination-type>
<destination-type>javax.jms.Topic</destination-type>

Used in: message-driven-destination
-->
<!ELEMENT destination-type (#PCDATA)>

<!--
The display-name element contains a short name that is intended to be
displayed by tools.  The display name need not be unique.

Used in: ejb-jar, entity, message-driven, session

Example:

<display-name>Employee Self Service</display-name>
-->
<!ELEMENT display-name (#PCDATA)>

<!--
The ejb-class element contains the fully-qualified name of the
enterprise bean's class.

Used in: entity, message-driven, session

Example:

<ejb-class>com.wombat.empl.EmployeeServiceBean</ejb-class>
-->
<!ELEMENT ejb-class (#PCDATA)>

<!--
The optional ejb-client-jar element specifies a JAR file that contains
the class files necessary for a client program to access the
enterprise beans in the ejb-jar file.

Used in: ejb-jar

Example:

<ejb-client-jar>employee_service_client.jar</ejb-client-jar>
-->
<!ELEMENT ejb-client-jar (#PCDATA)>

<!--
The ejb-link element is used in the ejb-ref or ejb-local-ref
elements to specify that an EJB reference is linked to an
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 J2EE 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 ejb-jar file
containing the enterprise bean that is referencing the enterprise bean.
This allows multiple enterprise beans with the same ejb-name to be
uniquely identified.

Used in: ejb-local-ref, ejb-ref

Examples:

	<ejb-link>EmployeeRecord</ejb-link>

	<ejb-link>../products/product.jar#ProductEJB</ejb-link>

-->
<!ELEMENT ejb-link (#PCDATA)>

<!--
The ejb-local-ref element is used for the declaration of a reference to
an enterprise bean's local home. The declaration consists of:

	- an optional description
	- the EJB reference name used in the code of the enterprise bean
	  that's referencing the enterprise bean
	- the expected type of the referenced enterprise bean
	- the expected local home and local interfaces of the referenced
	  enterprise bean
	- optional ejb-link information, used to specify the referenced
	  enterprise bean

Used in: entity, message-driven, session
-->
<!ELEMENT ejb-local-ref (description?, ejb-ref-name, ejb-ref-type,
		local-home, local, ejb-link?)>

<!--
The ejb-name element specifies an enterprise bean's name. This name is
assigned by the ejb-jar file producer to name the enterprise bean in
the ejb-jar file's deployment descriptor. The name must be unique
among the names of the enterprise beans in the same ejb-jar file.

There is no architected relationship between the ejb-name in the
deployment descriptor and the JNDI name that the Deployer will assign
to the enterprise bean's home.

The name for an entity bean with cmp-version 2.x must conform to the
lexical rules for an NMTOKEN. The name for an entity bean with
cmp-version 2.x must not be a reserved literal in EJB QL.

Used in: entity, message-driven, method, relationship-role-source,
session

Example:

<ejb-name>EmployeeService</ejb-name>
-->
<!ELEMENT ejb-name (#PCDATA)>

<!--
The ejb-ql element contains the EJB QL query string that defines
a finder or select query. This element is defined within the scope of
a query element whose contents specify the finder or the select method
that uses the query. The content must be a valid EJB QL query string
for the entity bean for which the query is specified.

The ejb-ql element must be specified for all queries that are
expressible in EJB QL.

Used in: query

Example:
<query>
    <query-method>
        <method-name>ejbSelectPendingLineitems</method-name>
        <method-params/>
    </query-method>
    <ejb-ql>SELECT OBJECT(l) FROM LineItems l WHERE l.shipped <> TRUE
    </ejb-ql>
</query>

-->
<!ELEMENT ejb-ql (#PCDATA)>

<!--
The ejb-ref element is used for the declaration of a reference to
an enterprise bean's home. The declaration consists of:

	- an optional description
	- the EJB reference name used in the code of
	  the enterprise bean that's referencing the enterprise bean
	- the expected type of the referenced enterprise bean
	- the expected home and remote interfaces of the referenced
	  enterprise bean
	- optional ejb-link information, used to specify the referenced
	  enterprise bean

Used in: entity, message-driven, session
-->
<!ELEMENT ejb-ref (description?, ejb-ref-name, ejb-ref-type,
		home, remote, ejb-link?)>

<!--
The ejb-ref-name element contains the name of an EJB reference. The
EJB reference is an entry in the enterprise bean's environment and is
relative to the java:comp/env context.  The name must be unique
within the enterprise bean.

It is recommended that name is prefixed with "ejb/".

Used in: ejb-local-ref, ejb-ref

Example:

<ejb-ref-name>ejb/Payroll</ejb-ref-name>
-->
<!ELEMENT ejb-ref-name (#PCDATA)>

<!--
The ejb-ref-type element contains the expected type of the
referenced enterprise bean.

The ejb-ref-type element must be one of the following:

	<ejb-ref-type>Entity</ejb-ref-type>
	<ejb-ref-type>Session</ejb-ref-type>

Used in: ejb-local-ref, ejb-ref
-->
<!ELEMENT ejb-ref-type (#PCDATA)>

<!--

The ejb-relation element describes a relationship between two
entity beans with container-managed persistence.  An ejb-relation
element contains a description; an optional ejb-relation-name element;
and exactly two relationship role declarations, defined by the
ejb-relationship-role elements. The name of the relationship, if
specified, is unique within the ejb-jar file.

Used in: relationships
-->
<!ELEMENT ejb-relation (description?, ejb-relation-name?, ejb-relationship-role,
ejb-relationship-role)>

<!--
The ejb-relation-name element provides a unique name for a relationship.

Used in: ejb-relation
-->
<!ELEMENT ejb-relation-name (#PCDATA)>

<!--
The ejb-relationship-role element describes a role within a
relationship. There are two roles in each relationship.

The ejb-relationship-role element contains an optional description; an
optional name for the relationship role; a specification of the
multiplicity of the role; an optional specification of cascade-delete
functionality for the role; the role source; and a declaration of the
cmr-field, if any, by means of which the other side of the
relationship is accessed from the perspective of the role source.

The multiplicity and role-source element are mandatory.

The relationship-role-source element designates an entity bean by
means of an ejb-name element. For bidirectional relationships, both
roles of a relationship must declare a relationship-role-source
element that specifies a cmr-field in terms of which the relationship
is accessed. The lack of a cmr-field element in an
ejb-relationship-role specifies that the relationship is
unidirectional in navigability and the entity bean that participates
in the relationship is "not aware" of the relationship.

Used in: ejb-relation

Example:

<ejb-relation>
    <ejb-relation-name>Product-LineItem</ejb-relation-name>
    <ejb-relationship-role>
        <ejb-relationship-role-name>product-has-lineitems
        </ejb-relationship-role-name>
        <multiplicity>One</multiplicity>
        <relationship-role-source>
        <ejb-name>ProductEJB</ejb-name>
        </relationship-role-source>
     </ejb-relationship-role>

-->
<!ELEMENT ejb-relationship-role (description?, ejb-relationship-role-name?,
multiplicity, cascade-delete?, relationship-role-source, cmr-field?)>

<!--
The ejb-relationship-role-name element defines a name for a role that
is unique within an ejb-relation. Different relationships can use the
same name for a role.

Used in: ejb-relationship-role
-->
<!ELEMENT ejb-relationship-role-name (#PCDATA)>

<!--
The enterprise-beans element contains the declarations of one or more
enterprise beans.
-->
<!ELEMENT enterprise-beans (session | entity | message-driven)+>

<!--
The entity element declares an entity bean. The declaration
consists of:

	- an optional description
	- an optional display name
	- an optional small icon file name
	- an optional large icon file name
	- a unique name assigned to the enterprise bean
	  in the deployment descriptor
	- the names of the entity bean's remote home and remote
          interfaces, if any
	- the names of the entity bean's local home and local
	  interfaces, if any
	- the entity bean's implementation class
	- the entity bean's persistence management type
	- the entity bean's primary key class name
	- an indication of the entity bean's reentrancy
	- an optional specification of the entity bean's cmp-version
	- an optional specification of the entity bean's abstract
	  schema name
	- an optional list of container-managed fields
	- an optional specification of the primary key field
	- an optional declaration of the bean's environment entries
	- an optional declaration of the bean's EJB references
	- an optional declaration of the bean's local EJB references
	- an optional declaration of the security role references
	- an optional declaration of the security identity
	  to be used for the execution of the bean's methods
	- an optional declaration of the bean's resource manager
          connection factory references
	- an optional declaration of the bean's
	  resource environment references
	- an optional set of query declarations
	  for finder and select methods for an entity
	  bean with cmp-version 2.x.

The optional abstract-schema-name element must be specified for an
entity bean with container-managed persistence and cmp-version 2.x.

The optional primkey-field may be present in the descriptor if the
entity's persistence-type is Container.

The optional cmp-version element may be present in the descriptor if
the entity's persistence-type is Container. If the persistence-type is
Container and the cmp-version element is not specified, its value
defaults to 2.x.

The optional home and remote elements must be specified if the entity
bean cmp-version is 1.x.

The optional home and remote elements must be specified if the entity
bean has a remote home and remote interface.

The optional local-home and local elements must be specified if the
entity bean has a local home and local interface.

Either both the local-home and the local elements or both the
home and the remote elements must be specified.

The optional query elements must be present if the persistence-type is
Container and the cmp-version is 2.x and query methods other than
findByPrimaryKey have been defined for the entity bean.

The other elements that are optional are "optional" in the sense that
they are omitted if the lists represented by them are empty.

At least one cmp-field element must be present in the descriptor if
the entity's persistence-type is Container and the cmp-version is 1.x,
and none must not be present if the entity's persistence-type is Bean.

Used in: enterprise-beans

-->
<!ELEMENT entity (description?, display-name?, small-icon?,
		large-icon?, ejb-name, home?, remote?, local-home?,
		local?, ejb-class, persistence-type, prim-key-class,
		reentrant, cmp-version?, abstract-schema-name?,
		cmp-field*, primkey-field?, env-entry*, ejb-ref*,
		ejb-local-ref*, security-role-ref*, security-identity?,
		resource-ref*, resource-env-ref*, query*)>

<!--
The env-entry element contains the declaration of an enterprise bean's
environment entry. The declaration consists of an optional
description, the name of the environment entry, and an optional
value.  If a value is not specified, one must be supplied
during deployment.

Used in: entity, message-driven, session
-->
<!ELEMENT env-entry (description?, env-entry-name, env-entry-type,
		env-entry-value?)>

<!--
The env-entry-name element contains the name of an enterprise bean's
environment entry.  The name is a JNDI name relative to the
java:comp/env context.  The name must be unique within an enterprise bean.

Used in: env-entry

Example:

<env-entry-name>minAmount</env-entry-name>
-->
<!ELEMENT env-entry-name (#PCDATA)>

<!--
The env-entry-type element contains the fully-qualified Java type of
the environment entry value that is expected by the enterprise bean's
code.

The following are the legal values of env-entry-type:

	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


Used in: env-entry

Example:

<env-entry-type>java.lang.Boolean</env-entry-type>
-->
<!ELEMENT env-entry-type (#PCDATA)>

<!--
The env-entry-value element contains the value of an enterprise bean'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.

Used in: env-entry

Example:

<env-entry-value>100.00</env-entry-value>
-->
<!ELEMENT env-entry-value (#PCDATA)>

<!--
The exclude list element specifies one or more methods which the
Assembler marks to be uncallable.

If the method permission relation contains methods that are in the
exclude list, the Deployer should consider those methods to be
uncallable.

Used in: assembly-descriptor
-->
<!ELEMENT exclude-list (description?, method+)>

<!--
The field-name element specifies the name of a container managed
field.

The name of the cmp-field of an entity bean with cmp-version 2.x must
begin with a lowercase letter. This field is accessed by methods whose
names consists of the name of the field specified by field-name in
which the first letter is uppercased, prefixed by "get" or "set".

The name of the cmp-field of an entity bean with cmp-version 1.x must
denote a public field of the enterprise bean class or one of its
superclasses.

Used in: cmp-field

Example:


	<field-name>firstName</field-Name>

-->
<!ELEMENT field-name (#PCDATA)>

<!--
The home element contains the fully-qualified name of the enterprise
bean's home interface.

Used in: ejb-ref, entity, session

Example:

<home>com.aardvark.payroll.PayrollHome</home>
-->
<!ELEMENT home (#PCDATA)>

<!--
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 enterprise bean's
ejb-jar file.

The image may be either in the JPEG or GIF format.
The icon can be used by tools.

Used in: ejb-jar, entity, message-driven, session

Example:

<large-icon>employee-service-icon32x32.jpg</large-icon>
-->
<!ELEMENT large-icon (#PCDATA)>

<!--

The local element contains the fully-qualified name of the
enterprise bean's local interface.

Used in: ejb-local-ref, entity, session

-->
<!ELEMENT local (#PCDATA)>

<!--

The local-home element contains the fully-qualified name of the
enterprise bean's local home interface.

Used in: ejb-local-ref, entity, session
-->
<!ELEMENT local-home (#PCDATA)>

<!--

The message-driven element declares a message-driven bean. The
declaration consists of:

	- an optional description
	- an optional display name
	- an optional small icon file name
	- an optional large icon file name
	- a name assigned to the enterprise bean in
	  the deployment descriptor
	- the message-driven bean's implementation class
	- the message-driven bean's transaction management type
	- an optional declaration of the message-driven bean's
	  message selector
	- an optional declaration of the
	  acknowledgment mode for the message-driven bean
	  if bean-managed transaction demarcation is used
	- an optional declaration of the
	  intended destination type of the message-driven bean
	- an optional declaration of the bean's environment entries
	- an optional declaration of the bean's EJB references
	- an optional declaration of the bean's local EJB references
	- an optional declaration of the security
	  identity to be used for the execution of the bean's methods
	- an optional declaration of the bean's resource manager
	  connection factory references
	- an optional declaration of the bean's resource
          environment references.

Used in: enterprise-beans
-->
<!ELEMENT message-driven (description?, display-name?, small-icon?,
		large-icon?, ejb-name, ejb-class, transaction-type,
		message-selector?, acknowledge-mode?,
		message-driven-destination?, env-entry*, ejb-ref*,
		ejb-local-ref*, security-identity?, resource-ref*,
		resource-env-ref*)>

<!--
The message-driven-destination element provides advice to the Deployer
as to whether a message-driven bean is intended for a Queue or a
Topic. The declaration consists of: the type of the message-driven
bean's intended destination and an optional declaration of whether a
durable or non-durable subscription should be used if the
destination-type is javax.jms.Topic.

Used in: message-driven
-->
<!ELEMENT message-driven-destination (destination-type,
subscription-durability?)>

<!--
The message-selector element is used to specify the JMS message
selector to be used in determining which messages a message-driven
bean is to receive.

Example:
<message-selector>JMSType = `car' AND color = `blue' AND weight &gt; 2500
</message-selector>

Used in: message-driven
-->
<!ELEMENT message-selector (#PCDATA)>

<!--

The method element is used to denote a method of an enterprise
bean's home or component interface, or, in the case of a message-driven
bean, the bean's onMessage method, or a set of methods. The ejb-name
element must be the name of one of the enterprise beans declared in
the deployment descriptor; the optional method-intf element allows to
distinguish between a method with the same signature that is multiply
defined across in both the home and component interfaces; the
method-name element specifies the method name; and the optional
method-params elements identify a single method among multiple methods
with an overloaded method name.

There are three possible styles of the method element syntax:

1.
<method>
    <ejb-name>EJBNAME</ejb-name>
    <method-name>*</method-name>
</method>

   This style is used to refer to all the methods of the specified
   enterprise bean's home and component interfaces.

2.
<method>
    <ejb-name>EJBNAME</ejb-name>
    <method-name>METHOD</method-name>
</method>>

   This style is used to refer to the specified method of the
   specified enterprise bean. If there are multiple methods with
   the same overloaded name, the element of this style refers to
   all the methods with the overloaded name.


3.
<method>
    <ejb-name>EJBNAME</ejb-name>
    <method-name>METHOD</method-name>
    <method-params>
        <method-param>PARAM-1</method-param>
        <method-param>PARAM-2</method-param>
        ...
        <method-param>PARAM-n</method-param>
    </method-params>
<method>


   This style is used to refer to a single method within a set of
   methods with an overloaded name. PARAM-1 through PARAM-n are the
   fully-qualified Java types of the method's input parameters (if
   the method has no input arguments, the method-params element
   contains no method-param elements). Arrays are specified by the
   array element's type, followed by one or more pair of square
   brackets (e.g. int[][]). If there are multiple methods with the
   same overloaded name, this style refers to all of the overloaded
   methods.


Used in: container-transaction, exclude-list, method-permission

Examples:

Style 1: The following method element refers to all the methods of
the EmployeeService bean's home and component interfaces:

<method>
    <ejb-name>EmployeeService</ejb-name>
    <method-name>*</method-name>
</method>

Style 2: The following method element refers to all the create
methods of the EmployeeService bean's home interface(s).

<method>
    <ejb-name>EmployeeService</ejb-name>
    <method-name>create</method-name>
</method>


Style 3: The following method element refers to the
create(String firstName, String LastName) method of the
EmployeeService bean's home interface(s).

<method>
    <ejb-name>EmployeeService</ejb-name>
    <method-name>create</method-name>
    <method-params>
        <method-param>java.lang.String</method-param>
        <method-param>java.lang.String</method-param>
    </method-params>
</method>


The following example illustrates a Style 3 element with
more complex parameter types. The method
foobar(char s, int i, int[] iar, mypackage.MyClass mycl,
mypackage.MyClass[][] myclaar) would be specified as:

<method>
    <ejb-name>EmployeeService</ejb-name>
    <method-name>foobar</method-name>
    <method-params>
        <method-param>char</method-param>
        <method-param>int</method-param>
        <method-param>int[]</method-param>
        <method-param>mypackage.MyClass</method-param>
        <method-param>mypackage.MyClass[][]</method-param>
    </method-params>
</method>


The optional method-intf element can be used when it becomes necessary
to differentiate between a method that is multiply defined across the
enterprise bean's home and component interfaces with the same name and
signature.


For example, the method element

<method>
    <ejb-name>EmployeeService</ejb-name>
    <method-intf>Remote</method-intf>
    <method-name>create</method-name>
    <method-params>
        <method-param>java.lang.String</method-param>
        <method-param>java.lang.String</method-param>
    </method-params>
</method>


can be used to differentiate the create(String, String) method defined
in the remote interface from the create(String, String) method defined
in the remote home interface, which would be defined as


<method>
    <ejb-name>EmployeeService</ejb-name>
    <method-intf>Home</method-intf>
    <method-name>create</method-name>
    <method-params>
        <method-param>java.lang.String</method-param>
        <method-param>java.lang.String</method-param>
    </method-params>
</method>

and the create method that is defined in the local home interface
which would be defined as

<method>
    <ejb-name>EmployeeService</ejb-name>
    <method-intf>LocalHome</method-intf>
    <method-name>create</method-name>
    <method-params>
        <method-param>java.lang.String</method-param>
        <method-param>java.lang.String</method-param>
    </method-params>
</method>


The method-intf element can be used with all three Styles of the
method element usage. For example, the following method element
example could be used to refer to all the methods of the
EmployeeService bean's remote home interface.


<method>
    <ejb-name>EmployeeService</ejb-name>
    <method-intf>Home</method-intf>
    <method-name>*</method-name>
</method>

-->
<!ELEMENT method (description?, ejb-name, method-intf?, method-name,
method-params?)>

<!--

The method-intf element allows a method element to differentiate
between the methods with the same name and signature that are multiply
defined across the component and home interfaces (e.g, in both an
enterprise bean's remote and local interfaces; in both an enterprise bean's
home and remote interfaces, etc.)

The method-intf element must be one of the following:

	<method-intf>Home</method-intf>
	<method-intf>Remote</method-intf>
	<method-intf>LocalHome</method-intf>
	<method-intf>Local</method-intf>

Used in: method
-->
<!ELEMENT method-intf (#PCDATA)>

<!--
The method-name element contains a name of an enterprise bean method
or the asterisk (*) character. The asterisk is used when the element
denotes all the methods of an enterprise bean's component and home
interfaces.

Used in: method, query-method
-->
<!ELEMENT method-name (#PCDATA)>

<!--
The method-param element contains the fully-qualified Java type name
of a method parameter.

Used in: method-params
-->
<!ELEMENT method-param (#PCDATA)>

<!--
The method-params element contains a list of the fully-qualified Java
type names of the method parameters.

Used in: method, query-method
-->
<!ELEMENT method-params (method-param*)>

<!--

The method-permission element specifies that one or more security
roles are allowed to invoke one or more enterprise bean methods. The
method-permission element consists of an optional description, a list
of security role names or an indicator to state that the method is
unchecked for authorization, and a list of method elements.

The security roles used in the method-permission element must be
defined in the security-role elements of the deployment descriptor,
and the methods must be methods defined in the enterprise bean's
component and/or home interfaces.


Used in: assembly-descriptor
-->
<!ELEMENT method-permission (description?, (role-name+|unchecked), method+)>

<!--
The multiplicity element describes the multiplicity of the role that
participates in a relation.

The multiplicity element must be one of the two following:

	<multiplicity>One</multiplicity>
	<multiplicity>Many</multiplicity>

Used in: ejb-relationship-role
-->
<!ELEMENT multiplicity (#PCDATA)>

<!--
The persistence-type element specifies an entity bean's persistence
management type.

The persistence-type element must be one of the two following:

	<persistence-type>Bean</persistence-type>
	<persistence-type>Container</persistence-type>

Used in: entity
-->
<!ELEMENT persistence-type (#PCDATA)>

<!--
The prim-key-class element contains the fully-qualified name of an
entity bean's primary key class.

If the definition of the primary key class is deferred to deployment
time, the prim-key-class element should specify java.lang.Object.

Used in: entity

Examples:

	<prim-key-class>java.lang.String</prim-key-class>

	<prim-key-class>com.wombat.empl.EmployeeID</prim-key-class>

	<prim-key-class>java.lang.Object</prim-key-class>

-->
<!ELEMENT prim-key-class (#PCDATA)>

<!--
The primkey-field element is used to specify the name of the primary
key field for an entity with container-managed persistence.

The primkey-field must be one of the fields declared in the cmp-field
element, and the type of the field must be the same as the primary key
type.

The primkey-field element is not used if the primary key maps to
multiple container-managed fields (i.e. the key is a compound key). In
this case, the fields of the primary key class must be public, and
their names must correspond to the field names of the entity bean
class that comprise the key.

Used in: entity

Example:

	<primkey-field>EmployeeId</primkey-field>

-->
<!ELEMENT primkey-field (#PCDATA)>

<!--
The query element is used to specify a finder or select query. It
contains
	- an optional description of the query
	- the specification of the finder or select
	  method it is used by
        - an optional specification of the result type mapping, if
          the query is for a select method and entity objects are
          returned.
    	- the EJB QL query string that defines the query.

Queries that are expressible in EJB QL must use the ejb-ql element to
specify the query. If a query is not expressible in EJB QL, the
description element should be used to describe the semantics of the
query and the ejb-ql element should be empty.

The result-type-mapping is an optional element. It can only be present
if the query-method specifies a select method that returns entity
objects.  The default value for the result-type-mapping element is
"Local".


Used in: entity
-->
<!ELEMENT query (description?, query-method, result-type-mapping?, ejb-ql)>

<!--
The query-method element is used to specify the method for a finder or
select query.

The method-name element specifies the name of a finder or select
method in the entity bean's implementation class.

Each method-param must be defined for a query-method using the
method-params element.

Used in: query

Example:

<query>
    <description>Method finds large orders</description>
    <query-method>
        <method-name>findLargeOrders</method-name>
        <method-params></method-params>
    </query-method>
    <ejb-ql>SELECT OBJECT(o) FROM Order o WHERE o.amount &gt; 1000</ejb-ql>
</query>

-->
<!ELEMENT query-method (method-name, method-params)>

<!--
The reentrant element specifies whether an entity bean is reentrant or
not.

The reentrant element must be one of the two following:

	<reentrant>True</reentrant>
	<reentrant>False</reentrant>

Used in: entity
-->
<!ELEMENT reentrant (#PCDATA)>

<!--

The relationship-role-source element designates the source of a role
that participates in a relationship. A relationship-role-source
element uniquely identifies an entity bean.

Used in: ejb-relationship-role
-->
<!ELEMENT relationship-role-source (description?, ejb-name)>

<!--
The relationships element describes the relationships in which
entity beans with container-managed persistence participate. The
relationships element contains an optional description; and a list of
ejb-relation elements, which specify the container managed
relationships.


Used in: ejb-jar
-->
<!ELEMENT relationships (description?, ejb-relation+)>

<!--
The remote element contains the fully-qualified name of the enterprise
bean's remote interface.

Used in: ejb-ref, entity, session

Example:

<remote>com.wombat.empl.EmployeeService</remote>
-->
<!ELEMENT remote (#PCDATA)>

<!--
The res-auth element specifies whether the enterprise bean code signs
on programmatically to the resource manager, or whether the Container
will sign on to the resource manager on behalf of the enterprise bean. In the
latter case, the Container uses information that is supplied by the
Deployer.

The value of this element must be one of the two following:

	<res-auth>Application</res-auth>
	<res-auth>Container</res-auth>

Used in: resource-ref
-->
<!ELEMENT res-auth (#PCDATA)>

<!--
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 an enterprise bean.

Used in: resource-ref
-->
<!ELEMENT res-ref-name (#PCDATA)>

<!--
The res-sharing-scope element specifies whether connections obtained
through the given resource manager connection factory reference can be
shared. The value of this element, if specified, must be one of the
two following:

	<res-sharing-scope>Shareable</res-sharing-scope>
	<res-sharing-scope>Unshareable</res-sharing-scope>

The default value is Shareable.

Used in: resource-ref
-->
<!ELEMENT res-sharing-scope (#PCDATA)>

<!--
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.

Used in: resource-ref
-->
<!ELEMENT res-type (#PCDATA)>

<!--
The resource-env-ref element contains a declaration of an enterprise bean's
reference to an administered object associated with a resource
in the enterprise bean's environment.  It consists of an optional
description, the resource environment reference name, and an
indication of the resource environment reference type expected by
the enterprise bean code.

Used in: entity, message-driven, session

Example:

<resource-env-ref>
    <resource-env-ref-name>jms/StockQueue</resource-env-ref-name>
    <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
</resource-env-ref>
-->
<!ELEMENT resource-env-ref (description?, resource-env-ref-name,
		resource-env-ref-type)>

<!--
The resource-env-ref-name element specifies the name of a resource
environment reference; its value is the environment entry name used in
the enterprise bean code.  The name is a JNDI name relative to the
java:comp/env context and must be unique within an enterprise bean.

Used in: resource-env-ref
-->
<!ELEMENT resource-env-ref-name (#PCDATA)>

<!--
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.

Used in: resource-env-ref
-->
<!ELEMENT resource-env-ref-type (#PCDATA)>

<!--
The resource-ref element contains a declaration of an enterprise bean's
reference to an external resource. It consists of an optional
description, the resource manager connection factory reference name,
the indication of the resource manager connection factory type
expected by the enterprise bean code, the type of authentication
(Application or Container), and an optional specification of the
shareability of connections obtained from the resource (Shareable or
Unshareable).

Used in: entity, message-driven, session

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>
-->
<!ELEMENT resource-ref (description?, res-ref-name, res-type, res-auth,
		res-sharing-scope?)>

<!--

The result-type-mapping element is used in the query element to specify
whether an abstract schema type returned by a query for a select method
is to be mapped to an EJBLocalObject or EJBObject type.

The result-type-mapping element must be one of the following:

        <result-type-mapping>Local</result-type-mapping>
        <result-type-mapping>Remote</result-type-mapping>

Used in: query
-->
<!ELEMENT result-type-mapping (#PCDATA)>

<!--
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.

Used in: security-role-ref
-->
<!ELEMENT role-link (#PCDATA)>

<!--
The role-name element contains the name of a security role.

The name must conform to the lexical rules for an NMTOKEN.

Used in: method-permission, run-as, security-role, security-role-ref
-->
<!ELEMENT role-name (#PCDATA)>

<!--
The run-as element specifies the run-as identity to be used for the
execution of the enterprise bean. It contains an optional description, and
the name of a security role.

Used in: security-identity
-->
<!ELEMENT run-as (description?, role-name)>

<!--

The security-identity element specifies whether the caller's
security identity is to be used for the execution of the methods of
the enterprise bean or whether a specific run-as identity is to be
used. It contains an optional description and a specification of the
security identity to be used.

Used in: entity, message-driven, session
-->
<!ELEMENT security-identity (description?, (use-caller-identity|run-as))>

<!--
The security-role element contains the definition of a security
role. The definition consists of an optional description of the
security role, and the security role name.

Used in: assembly-descriptor

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>
-->
<!ELEMENT security-role (description?, role-name)>

<!--
The security-role-ref element contains the declaration of a security
role reference in the enterprise bean'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.

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.

Used in: entity, session

-->
<!ELEMENT security-role-ref (description?, role-name, role-link?)>

<!--
The session element declares an session bean. The declaration consists
of:
	- an optional description
	- an optional display name
	- an optional small icon file name
	- an optional large icon file name
	- a name assigned to the enterprise bean
	  in the deployment description
	- the names of the session bean's remote home and
	  remote interfaces, if any
	- the names of the session bean's local home and
	  local interfaces, if any
	- the session bean's implementation class
	- the session bean's state management type
	- the session bean's transaction management type
	- an optional declaration of the bean's environment entries
	- an optional declaration of the bean's EJB references
	- an optional declaration of the bean's local EJB references
	- an optional declaration of the security role references
	- an optional declaration of the security identity to be
          used for the execution of the bean's methods
	- an optional declaration of the bean's resource manager
	  connection factory references
	- an optional declaration of the bean's resource environment
	  references.

The elements that are optional are "optional" in the sense that they
are omitted when if lists represented by them are empty.

Either both the local-home and the local elements or both the
home and the remote elements must be specified for the session bean.

Used in: enterprise-beans
-->
<!ELEMENT session (description?, display-name?, small-icon?,
large-icon?, ejb-name, home?, remote?, local-home?, local?,
ejb-class, session-type, transaction-type, env-entry*, ejb-ref*,
ejb-local-ref*, security-role-ref*, security-identity?, resource-ref*,
resource-env-ref*)>

<!--
The session-type element describes whether the session bean is a
stateful session or stateless session.

The session-type element must be one of the two following:

	<session-type>Stateful</session-type>
	<session-type>Stateless</session-type>
-->
<!ELEMENT session-type (#PCDATA)>

<!--
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 enterprise bean's
ejb-jar file.

The image may be either in the JPEG or GIF format.
The icon can be used by tools.

Used in: ejb-jar, entity, message-driven, session

Example:

<small-icon>employee-service-icon16x16.jpg</small-icon>
-->
<!ELEMENT small-icon (#PCDATA)>

<!--
The subscription-durability element specifies whether a JMS topic
subscription is intended to be durable or nondurable.

The subscription-durability element must be one of the two following:

	<subscription-durability>Durable</subscription-durability>
	<subscription-durability>NonDurable</subscription-durability>

Used in: message-driven-destination
-->
<!ELEMENT subscription-durability (#PCDATA)>

<!--
The trans-attribute element specifies how the container must manage
the transaction boundaries when delegating a method invocation to an
enterprise bean's business method.

The value of trans-attribute must be one of the following:


	<trans-attribute>NotSupported</trans-attribute>
	<trans-attribute>Supports</trans-attribute>
	<trans-attribute>Required</trans-attribute>
	<trans-attribute>RequiresNew</trans-attribute>
	<trans-attribute>Mandatory</trans-attribute>
	<trans-attribute>Never</trans-attribute>

Used in: container-transaction
-->
<!ELEMENT trans-attribute (#PCDATA)>

<!--
The transaction-type element specifies an enterprise bean's
transaction management type.

The transaction-type element must be one of the two following:

	<transaction-type>Bean</transaction-type>
	<transaction-type>Container</transaction-type>

Used in: message-driven, session
-->
<!ELEMENT transaction-type (#PCDATA)>

<!--
The unchecked element specifies that a method is not checked for authorization
by the container prior to invocation of the method.

Used in: method-permission
-->
<!ELEMENT unchecked EMPTY>

<!--

The use-caller-identity element specifies that the caller's security
identity be used as the security identity for the execution of the
enterprise bean's methods.

Used in: security-identity
-->
<!ELEMENT use-caller-identity EMPTY>

<!--
The ID mechanism is to allow tools that produce additional deployment
information (i.e., information beyond the standard deployment
descriptor information) to store the non-standard information in a
separate file, and easily refer from these tool-specific files to the
information in the standard deployment descriptor.

Tools are not allowed to add the non-standard information into the
standard deployment descriptor.
-->

<!ATTLIST abstract-schema-name id ID #IMPLIED>
<!ATTLIST acknowledge-mode id ID #IMPLIED>
<!ATTLIST assembly-descriptor id ID #IMPLIED>
<!ATTLIST cascade-delete id ID #IMPLIED>
<!ATTLIST cmp-field id ID #IMPLIED>
<!ATTLIST cmp-version id ID #IMPLIED>
<!ATTLIST cmr-field id ID #IMPLIED>
<!ATTLIST cmr-field-name id ID #IMPLIED>
<!ATTLIST cmr-field-type id ID #IMPLIED>
<!ATTLIST container-transaction id ID #IMPLIED>
<!ATTLIST description id ID #IMPLIED>
<!ATTLIST destination-type id ID #IMPLIED>
<!ATTLIST display-name id ID #IMPLIED>
<!ATTLIST ejb-class id ID #IMPLIED>
<!ATTLIST ejb-client-jar id ID #IMPLIED>
<!ATTLIST ejb-jar id ID #IMPLIED>
<!ATTLIST ejb-link id ID #IMPLIED>
<!ATTLIST ejb-local-ref id ID #IMPLIED>
<!ATTLIST ejb-name id ID #IMPLIED>
<!ATTLIST ejb-ql id ID #IMPLIED>
<!ATTLIST ejb-ref id ID #IMPLIED>
<!ATTLIST ejb-ref-name id ID #IMPLIED>
<!ATTLIST ejb-ref-type id ID #IMPLIED>
<!ATTLIST ejb-relation id ID #IMPLIED>
<!ATTLIST ejb-relation-name id ID #IMPLIED>
<!ATTLIST ejb-relationship-role id ID #IMPLIED>
<!ATTLIST ejb-relationship-role-name id ID #IMPLIED>
<!ATTLIST enterprise-beans id ID #IMPLIED>
<!ATTLIST entity id ID #IMPLIED>
<!ATTLIST env-entry id ID #IMPLIED>
<!ATTLIST env-entry-name id ID #IMPLIED>
<!ATTLIST env-entry-type id ID #IMPLIED>
<!ATTLIST env-entry-value id ID #IMPLIED>
<!ATTLIST exclude-list id ID #IMPLIED>
<!ATTLIST field-name id ID #IMPLIED>
<!ATTLIST home id ID #IMPLIED>
<!ATTLIST large-icon id ID #IMPLIED>
<!ATTLIST local id ID #IMPLIED>
<!ATTLIST local-home id ID #IMPLIED>
<!ATTLIST message-driven id ID #IMPLIED>
<!ATTLIST message-driven-destination id ID #IMPLIED>
<!ATTLIST message-selector id ID #IMPLIED>
<!ATTLIST method id ID #IMPLIED>
<!ATTLIST method-intf id ID #IMPLIED>
<!ATTLIST method-name id ID #IMPLIED>
<!ATTLIST method-param id ID #IMPLIED>
<!ATTLIST method-params id ID #IMPLIED>
<!ATTLIST method-permission id ID #IMPLIED>
<!ATTLIST multiplicity id ID #IMPLIED>
<!ATTLIST persistence-type id ID #IMPLIED>
<!ATTLIST prim-key-class id ID #IMPLIED>
<!ATTLIST primkey-field id ID #IMPLIED>
<!ATTLIST query id ID #IMPLIED>
<!ATTLIST query-method id ID #IMPLIED>
<!ATTLIST reentrant id ID #IMPLIED>
<!ATTLIST relationship-role-source id ID #IMPLIED>
<!ATTLIST relationships id ID #IMPLIED>
<!ATTLIST remote id ID #IMPLIED>
<!ATTLIST res-auth id ID #IMPLIED>
<!ATTLIST res-ref-name id ID #IMPLIED>
<!ATTLIST res-sharing-scope id ID #IMPLIED>
<!ATTLIST res-type id ID #IMPLIED>
<!ATTLIST resource-env-ref id ID #IMPLIED>
<!ATTLIST resource-env-ref-name id ID #IMPLIED>
<!ATTLIST resource-env-ref-type id ID #IMPLIED>
<!ATTLIST resource-ref id ID #IMPLIED>
<!ATTLIST result-type-mapping id ID #IMPLIED>
<!ATTLIST role-link id ID #IMPLIED>
<!ATTLIST role-name id ID #IMPLIED>
<!ATTLIST run-as id ID #IMPLIED>
<!ATTLIST security-identity id ID #IMPLIED>
<!ATTLIST security-role id ID #IMPLIED>
<!ATTLIST security-role-ref id ID #IMPLIED>
<!ATTLIST session id ID #IMPLIED>
<!ATTLIST session-type id ID #IMPLIED>
<!ATTLIST small-icon id ID #IMPLIED>
<!ATTLIST subscription-durability id ID #IMPLIED>
<!ATTLIST trans-attribute id ID #IMPLIED>
<!ATTLIST transaction-type id ID #IMPLIED>
<!ATTLIST unchecked id ID #IMPLIED>
<!ATTLIST use-caller-identity id ID #IMPLIED>
