<!-- Last updated: 08/16/2002 13:44
All web service deployment descriptors must use the following delcaration:
<!DOCTYPE java-wsdl-mapping PUBLIC 
    "-//IBM Corporation, Inc.//DTD J2EE JAX-RPC mapping 1.0//EN" 
    "http://www.ibm.com/standards/xml/webservices/j2ee/j2ee_jaxrpc_mapping_1_0.dtd">
-->

<!--
The element describes the Java mapping to a known WSDL document.

It contains the mapping between package names and XML namespaces, 
WSDL root types and Java artifacts, and the set of mappings for 
services.

-->
<!ELEMENT java-wsdl-mapping (package-mapping+,
	java-xml-type-mapping*, exception-mapping*,
	(service-interface-mapping?,
	service-endpoint-interface-mapping+)*)>

<!-- 
The class-type element is the fully qualified class name of
a Java class.

Used in: java-xml-type-mapping
-->
<!ELEMENT class-type (#PCDATA)>

<!--
The constructor-parameter-order element defines the order
that complexType element values are applied to a Java 
exception constructor. Element names are specified for each
parameter of the constructor, including element names of
inherited types if necessary.

Used in: exception-mapping
-->
<!ELEMENT constructor-parameter-order (element-name+)>

<!--
The data-member element is a boolean indicator that a Java
variable is a public data member and not a JavaBeans property.

Used in: variable-mapping
-->
<!ELEMENT data-member EMPTY>

<!--
The element-name element defines the name of a complexType
element name attribute value.

Used in: constructor-parameter-order
-->
<!ELEMENT element-name (#PCDATA)>

<!--
The exception-mapping element defines the mapping between the
service specific exception types and the wsdl faults.

This element should be interpreted with respect to the
mapping between a method and an operation which provides the
mapping context.

Used in: service-endpoint-method-mapping
-->
<!ELEMENT exception-mapping (exception-type, wsdl-message,
	constructor-parameter-order?)>

<!--
The exception-type element defines Java type of the exception. 
It may be a service specific exception.

It must be a fully qualified class name.

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

<!--
The java-method-name element defines the name of a Java method within
an interface.

Used in: service-endpoint-method-mapping
-->
<!ELEMENT java-method-name (#PCDATA)>

<!--
The java-port-name element is the string to use as the port name in
Java.  It is used in generating the Generated Service Interface method
get<java-port-name>.

Used in: port-mapping
-->
<!ELEMENT java-port-name (#PCDATA)>

<!--
The java-variable-name defines the name of a public data member or 
JavaBeans property within a Java class. 

Used in: variable-mapping
-->
<!ELEMENT java-variable-name (#PCDATA)>

<!-- 
The java-xml-type-mapping element contains a class-type that is the 
fully qualified name of the Java class, QName of the XML root type, 
the WSDL type scope the QName applies to and the set of variable 
mappings for each public variable within the Java class.

Used in: java-wsdl-mapping
-->
<!ELEMENT java-xml-type-mapping (class-type, root-type-qname, 
	qname-scope, variable-mapping*)>

<!--
The localpart element indicates the local part of a QNAME.

Used in: wsdl-binding, wsdl-message, wsdl-port-type, 
		wsdl-service-name
-->
<!ELEMENT localpart (#PCDATA)>

<!--
The method-param-parts-mapping element defines the mapping between a
Java method parameters and a wsdl-message.

Used in: service-endpoint-method-mapping
-->
<!ELEMENT method-param-parts-mapping (param-position, param-type,
	wsdl-message-mapping)>

<!--
The method-return-value  element defines a fully qualified class name
or void type for the method's return value type.

Used in: wsdl-return-value-mapping
-->
<!ELEMENT method-return-value (#PCDATA)>

<!--
The namespaceURI element indicates a URI.

Used in: package-mapping, wsdl-binding, wsdl-message, wsdl-port-type, 
		wsdl-service-name
-->
<!ELEMENT namespaceURI (#PCDATA)>

<!--
The package-mapping indicates the mapping between java-package-name 
and XML namespace in the WSDL document.

Used in: java-wsdl-mapping
-->
<!ELEMENT package-mapping (package-type, namespaceURI)>

<!--
The package-type indicates the Java package name. It must be a fully 
qualified name.

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

<!--
The parameter-mode  element defines the mode of the parameter.
It can have only three values, IN, OUT, INOUT.

Used in: wsdl-message-mapping, wsdl-return-value-mapping
-->
<!ELEMENT parameter-mode (#PCDATA)>

<!--
The param-position element defines the position of a parameter within 
a Java method.  It must be an integer starting from 0.

Used in: method-param-parts-mapping
-->
<!ELEMENT param-position (#PCDATA)>

<!--
The param-type element defines the Java type of a parameter within a 
Java method. It must be defined by a fully qualified name of a class.

Used in: method-param-parts-mapping
-->
<!ELEMENT param-type (#PCDATA)>

<!--
The port-mapping defines the mapping of the WSDL port name attribute
to the Java name used to generate the Generated Service Interface 
method get<java-name>.

Used in: service-interface-mapping
-->
<!ELEMENT port-mapping (port-name, java-port-name)>

<!--
The port-name is the attribute value of a name attribute of a WSDL
port element.

Used in: port-mapping
-->
<!ELEMENT port-name (#PCDATA)>

<!--
The qname-scope elements scopes the reference of a QName to the WSDL
element type it applies to. The value of qname-scope may be 
simpleType, complexType, or element.

Used in: java-xml-type-mapping
-->
<!ELEMENT qname-scope (#PCDATA)>

<!--
The root-type-qname identifies the WSDL QName of an XML type.

Used in: java-xml-type-mapping
-->
<!ELEMENT root-type-qname (namespaceURI, localpart)>

<!--
The service-endpoint-interface element defines the Java type for the 
endpoint interface. The name must be a fully qualified class name.

Used in: service-endpoint-interface-mapping
-->
<!ELEMENT service-endpoint-interface (#PCDATA)>

<!--
The service-endpoint-interface-mapping defines a tuple
to specify Service Endpoint Interfaces to
WSDL port types and WSDL bindings.


An interface may be mapped to a port-type and binding multiple
times. This happens rarely.

Used in: java-wsdl-mapping
-->
<!ELEMENT service-endpoint-interface-mapping (
	service-endpoint-interface, wsdl-port-type, wsdl-binding, 
	service-endpoint-method-mapping*)>

<!--
The service-endpoint-method-mapping element defines the mapping of
Java methods to operations (which are not uniquely qualified by
qnames).

The wsdl-operation should be interpreted with respect to the portType
and binding in which this definition is embedded within. See the 
definitions for service-endpoint-interface-mapping and 
service-interface-mapping to acquire the proper context.

Used in: service-endpoint-interface-mapping
-->
<!ELEMENT service-endpoint-method-mapping (java-method-name,
          wsdl-operation, method-param-parts-mapping*,
          wsdl-return-value-mapping)>

<!--
The service-interface element defines the Java type for the service.
For static services, it is javax.xml.rpc.Service interface. For 
generated service, it would be the generated interface name.

The name must be a fully qualified class name.

Used in: service-interface-mapping
-->
<!ELEMENT service-interface (#PCDATA)>

<!--
The service-interface-mapping element defines how a Java type for 
the service interface maps to a WSDL service.

Used in: java-wsdl-mapping
-->
<!ELEMENT service-interface-mapping  (service-interface, 
	wsdl-service-name, port-mapping*)>

<!--
The soap-header element is a boolean element indicating that
a parameter is mapped to a SOAP header.

Used in: wsdl-message-mapping
-->
<!ELEMENT soap-header EMPTY>

<!--
The variable-mapping element defines the correlation between a 
Java class data member or JavaBeans property to an XML element
name of an XML root type. If the data-member element is present,
the Java variable name is a public data member.  If data-member
is not present, the Java variable name is a JavaBeans property.

Used in: java-xml-type-mapping
-->
<!ELEMENT variable-mapping (java-variable-name, data-member?,
	xml-element-name)>

<!--
The wsdl-binding element defines the wsdl binding
by a QNAME which uniquely identifies  the binding.

Used in: service-endpoint-interface-mapping
-->
<!ELEMENT wsdl-binding (namespaceURI, localpart)>

<!--
The wsdl-message  element defines a WSDL message by a QNAME.

Used in: wsdl-message-mapping, wsdl-return-value-mapping
-->
<!ELEMENT wsdl-message (namespaceURI, localpart)>

<!--
The wsdl-message-mapping element defines the mapping to a specific 
message and its part. Together they define uniquely the mapping for 
a specific parameter. Parts within a message context are uniquely 
identified with their names.

The parameter-mode is defined by the mapping to indicate whether 
the mapping will be IN, OUT, or INOUT..  The presence of the soap-header
element indicates that the parameter is mapped to a soap header only.
When absent, it means that the wsdl-message is mapped to a Java
parameter. The soap headers are interpreted in the order they are
provided in the mapping.

Used in: method-param-parts-mapping
-->
<!ELEMENT wsdl-message-mapping (wsdl-message, wsdl-message-part-name,
	parameter-mode, soap-header?)>

<!--
The wsdl-message-part-name  element defines a WSDL message part. It 
should always be interpreter with respect to a wsdl-message element.

Used in: wsdl-message-mapping, wsdl-return-value-mapping
-->
<!ELEMENT wsdl-message-part-name (#PCDATA)>

<!--
The wsdl-operation element defines an operation within a WSDL document.
It must be interpreted with respect to a port type.

Used in: service-endpoint-method-mapping
-->
<!ELEMENT wsdl-operation (#PCDATA)>

<!--
The wsdl-port-type element defines the wsdl port type
by a QNAME which uniquely identifies  the port type.

Used in: service-endpoint-interface-mapping
-->
<!ELEMENT wsdl-port-type (namespaceURI, localpart)>

<!--
The wsdl-return-value-mapping  element defines the mapping for the
method's return value. It defines the mapping to a specific message 
and its part.  Together they define uniquely the mapping for a 
specific parameter. Parts within a message context are uniquely 
identified with their names.

Used in: service-endpoint-method-mapping
-->
<!ELEMENT wsdl-return-value-mapping (method-return-value, wsdl-message,
	wsdl-message-part-name)>

<!--
The wsdl-service-name element defines the wsdl service name
by a QNAME which uniquely identifies  the service.

Used in: service-interface-mapping
-->
<!ELEMENT wsdl-service-name (namespaceURI, localpart)>

<!--
The xml-element-name element defines name attribute value of a WSDL
element within a root type.

Used in: variable-mapping
-->
<!ELEMENT xml-element-name (#PCDATA)>

<!--
The ID mechanism is to allow tools that produce additional deployment
information (i.e., information beyond the standard EJB deployment
descriptor information) to store the non-standard information in a
separate file, and easily refer from these tools-specific files to the
information in the standard deployment descriptor.
The EJB architecture does not allow the tools to add the non-standard
information into the EJB deployment descriptor.
-->
<!ATTLIST class-type id ID #IMPLIED>
<!ATTLIST data-member id ID #IMPLIED>
<!ATTLIST exception-mapping id ID #IMPLIED>
<!ATTLIST exception-type id ID #IMPLIED>
<!ATTLIST java-method-name id ID #IMPLIED>
<!ATTLIST java-port-name id ID #IMPLIED>
<!ATTLIST java-variable-name id ID #IMPLIED>
<!ATTLIST java-wsdl-mapping id ID #IMPLIED>
<!ATTLIST java-xml-type-mapping id ID #IMPLIED>
<!ATTLIST localpart id ID #IMPLIED>
<!ATTLIST method-param-parts-mapping id ID #IMPLIED>
<!ATTLIST method-return-value id ID #IMPLIED>
<!ATTLIST namespaceURI id ID #IMPLIED>
<!ATTLIST package-mapping id ID #IMPLIED>
<!ATTLIST package-type id ID #IMPLIED>
<!ATTLIST parameter-mode id ID #IMPLIED>
<!ATTLIST param-position id ID #IMPLIED>
<!ATTLIST param-type id ID #IMPLIED>
<!ATTLIST port-mapping id ID #IMPLIED>
<!ATTLIST port-name id ID #IMPLIED>
<!ATTLIST qname-scope id ID #IMPLIED>
<!ATTLIST root-type-qname id ID #IMPLIED>
<!ATTLIST service-endpoint-interface id ID #IMPLIED>
<!ATTLIST service-endpoint-interface-mapping id ID #IMPLIED>
<!ATTLIST service-endpoint-method-mapping id ID #IMPLIED>
<!ATTLIST service-interface id ID #IMPLIED>
<!ATTLIST service-interface-mapping id ID #IMPLIED>
<!ATTLIST soap-header id ID #IMPLIED>
<!ATTLIST variable-mapping id ID #IMPLIED>
<!ATTLIST wsdl-binding id ID #IMPLIED>
<!ATTLIST wsdl-message id ID #IMPLIED>
<!ATTLIST wsdl-message-mapping id ID #IMPLIED>
<!ATTLIST wsdl-message-part-name id ID #IMPLIED>
<!ATTLIST wsdl-operation id ID #IMPLIED>
<!ATTLIST wsdl-port-type id ID #IMPLIED>
<!ATTLIST wsdl-return-value-mapping id ID #IMPLIED>
<!ATTLIST wsdl-service-name id ID #IMPLIED>
<!ATTLIST xml-element-name id ID #IMPLIED>
