- From: Arthur Ryman <ryman@ca.ibm.com>
- Date: Wed, 13 Apr 2005 11:16:50 -0400
- To: www-ws-desc@w3.org
- Message-ID: <OF463D854E.81BC6E79-ON85256FE2.00487928-85256FE2.0053EF82@ca.ibm.com>
This issue concerns how Extensions are described in Part 1, and used in
Part 2. Extensions are very important since, for example, they are the
mechanism by which bindings are defined. Part 1 is written in terms of an
Abstract Component Model. Therefore, Part 1 should specify how generic
Extensions contribute to the Component Model. Part 2 should then specify
how the defined Extensions contribute to the Component Model according to
the rules given in Part 1.
Part 1 currently states that WSDL 2.0 documents may contain elements and
attrributes from other namespaces, and that these may contribute
properties and components to the component model. I propose that Part 1 be
more precise about how extensions contribute to the component model.
Part 1 currently states:
1. An extension has a namespace that is different than the WSDL 2.0
namespace. An extension defines XML Infoset elements and attributes in its
namespace.
2. An extension MAY contribute extension properties and extension
components to the component model.
I propose we add the following:
3. An extension property is identified by a QName whose namespace name is
the extension namespace. An extension property has a type that constrains
its allowed values. An extension property type is one of the following:
an XML Schema Type,
a REQUIRED component reference
an OPTIONAL component reference
a set of zero or more component references
an extension type (as allowed by WSDL type extensibilty)
An extension property type specification therefore consists of a (name,
type) pair where:
name is the extension property QName and
type is the extension property type.
4. An extension component is identified by a QName whose namespace is the
extension namespace. An extension component contains zero or more
extension properties from its own namespace. An extension component may
itself be extensible, in which case it contains zero or more extension
components from other namespaces.
An extension component type specification therefore consists of a (name,
properties, extensible) triple where
name is the extension component type QName,
properties is a set of zero or more extension property type QNames
from its own namespace, and
extensible is a boolean that is true if and only if the extension
component type is itself extensible.
5. An extension SHOULD have an XML Schema that defines its elements and
attributes.
The reason that we should use QNames to identify extension property and
component types is to avoid name collisions in the component model. This
lets extensions compose cleanly. For example, it's possible now that two
extensions could both contribute properties to a component. QNames are
designed to manage namespaces.
The reason we should be specific about the types is to permit the
development of APIs for extensible tools.
If the above proposal is accepted, Part 2 should be updated to include the
precise extension property type and extension component type definitions.
In the course of reviewing the spec, I noticed that the language is fairly
inconsistent. Sometimes we say extension element, and sometimes we say
extensibility element. We should be consistent. I suggest we just say
extension. Also, sometimes we refer to elements and sometimes to element
and attributes. For example, bindings could be defined using attributes,
but the spec only refers to elements. We should simple say extensions to
cover both cases.
Finally, in 6.1 there is a reference to substitution groups. We dropped
that, didn't we?
The WSDL schema also defines a base type for use by extensibility
elements. Example 6-1 shows the type definition. The use of this type as a
base type is optional. The element declarations which serve as the heads
of the defined substitution groups are all of type "xs:anyType".
Arthur Ryman,
Rational Desktop Tools Development
phone: +1-905-413-3077, TL 969-3077
assistant: +1-905-413-2411, TL 969-2411
fax: +1-905-413-4920, TL 969-4920
mobile: +1-416-939-5063, text: 4169395063@fido.ca
intranet: http://labweb.torolab.ibm.com/DRY6/
Received on Wednesday, 13 April 2005 15:16:55 UTC