- From: Arthur Ryman <ryman@ca.ibm.com>
- Date: Tue, 17 Sep 2002 17:29:39 -0400
- To: www-ws-desc@w3.org
This issue came up at the f2f. The WSDL 1.1 <part> element has both a type and an element attribute. The values of these attributes are an XML schema type or element respectively. This note explains why the element attribute should be dropped. The type and element attributes are mutually exclusive. These attributes interact with the SOAP, HTTP and MIME bindings in a complex way. However, the purpose of the <part> element is to describe message parts in a way that is independent of bindings. The binding specifications should describe how the message is formatted for a particular combination of transport, protocol, etc. It is therefore desirable to eliminate any binding information bias from the message description. The normal programming language concept of a data type is captured by the XML Schema notion of type. An XML Schema type can be either simple (e.g. a string or a number) or complex, e.g. contain XML elements. Clearly an XML Schema type is more general than an element. In addition, it is natural to view an element as the content model for a complex type that contains it. For example, the type of a WSDL document can be viewed as the following complex type: <schema> <complexType name="WSDLDefinitionsType"> <sequence> <element ref="wsdl:definitions"/> </sequence> </complexType> </schema> Therefore, any <part> that uses the element attribute can be replaced by an equivalent <part> the uses the type attribute where the type names the complexType that wraps the element. In fact the WSDL 1.1 spec section 2.3.1 describes how to wrap elements in a complex type in the case where different responses from an operation return different elements (e.g. a purchase order or a set of invoices). Since the WSDL author is forced to use the type attribute in this case, it seems very unwise to define bindings that place significance on the choice of element versus type. For example, the SOAP binding treats the type attribute as abstract and the element attribute as concrete. For simplicity, all message parts should be viewed as abstract in the sense that their format is only determined once a binding is given. (Of course, the binding may say that the format is XML and that it exactly matches the XML schema type identified by the message part). WSDL authors therefore lose no generality by defining message parts using the type attribute only. The only drawback is that the author may have to explicitly define a wrapper complex type for an existing element. The element attribute can therefore be viewed as syntactic sugar, but the complexity it adds to the bindings nullifies this benefit. Dropping the element attribute also requires that the SOAP, HTTP and MIME bindings be updated to reflect this change. -- Arthur Ryman
Received on Tuesday, 17 September 2002 17:30:15 UTC