- From: Arthur Ryman <ryman@ca.ibm.com>
- Date: Wed, 7 Dec 2005 17:26:43 -0500
- To: Amelia A Lewis <alewis@tibco.com>
- Cc: www-ws-desc@w3.org, www-ws-desc-request@w3.org
- Message-ID: <OFEC82EA56.068C2839-ON852570D0.007A8DAF-852570D0.007B4A09@ca.ibm.com>
Amy, The truth is that WSDL 2.0 does not really place much restriction on any extension. You may recall that I once proposed imposing some simple structure, like "extension property names MUST be QNames", but got shot down. At the moment, it is completely up to the extension author to define its semantics and ensure that it hangs together with the rest of the specs. If someone defines a terrible extension, no one else will support it. The predefined binding extensions are pretty tame and let's hope that other extension authors will use them as models of Best Practice. Arthur Ryman, IBM Software Group, Rational Division blog: http://ryman.eclipsedevelopersjournal.com/ 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 Amelia A Lewis <alewis@tibco.com> Sent by: www-ws-desc-request@w3.org 12/07/2005 04:00 PM To Arthur Ryman/Toronto/IBM@IBMCA cc www-ws-desc@w3.org Subject Re: Do <import> and <include> support extensibility elements? Hmmm. On Wed, 7 Dec 2005 15:23:07 -0500 Arthur Ryman <ryman@ca.ibm.com> wrote: >There is no requirement that an extension element directly affect the >component model. Some extension elements could just affect how the >component model is created, e.g. like <import> and <include> do >already. How is this "not directly affecting" the component model? I find myself a little uncomfortable with extensible import/include. Right now, we have a "types" element, which is not a component, but it acts as a container for element declaration and type definition components. We have no "schema" components; we treat schema element declarations and type definitions as components. Now, what happens if there is an extension that defines a "component" in the <types> element information item? What is its scope? Does it define that itself? Can it, for instance, claim to apply to *only* those element declaration and type definition components which are *in this types element information item*? Because import and include are up a level, they provide still more potential for problems, although they also point out some existing potential problems. A WSDL component model has a *single* description component. During import/include, all of the components defined in imported/included descriptions are, presumably, more or less "promoted" into the containing WSDL. Is that right? We know how to do this for interface, binding, and service: those are straightforward. But ... suppose one WSDL has some form of assertion at the description level ("construct components with a left-handed monkey-wrench") and another WSDL has a contrary assertion ("components must not be constructed by left-handed wenches, even if they're monkeys")[1]. That is, these extensions are defined as immediate children of the description component in their respective WSDLs, and are scoped to influence something in the construction of all components in the containing description. So, left-handed monkeys import no-left-handed wenches. What now? *What is the scope* of these extensions? Are extensions scoped by syntax (containing element information item)? Or are they scoped by components (containing component)? Is there a difference in how this works between an include and an import? We already dealt with this once, I think (the question of extension scope), but was that only for the simple case, a single description element information item with no imports/includes? My concern here is one of predictability. Suppose that we have the left-handed monkey-wrench directive. If it appears only in the imported WSDL, does it apply only to the description element information item in the imported WSDL, or to both that one and its parent? Itself, its parent, and all of its siblings? What about children of its siblings? If an import can have an effect on its parent in this fashion, is this recursive? Depending on how implementors answer these questions, you get different results. Now, I'll grant you that this is not directly related to the issue of extensibility of import/include EIIs[2], since the problem exists without import/include EIIs being extensible, due to the extensibility of the description component (when is a component not a component? when it's an imported or included description element information item). The reverse is equally problematic, though. That is, what should the scope of a left-handed monkey-wench directive be, if it's "inside" an import element information item? Just that import? Its parent WSDL? Its parent and all siblings? If an extension element information item *does* define an extension component, how many levels of "promotion" can there be? An extension component defined inside a types element information item, an import, or an include presumably has, as a parent, its containing description component ... unless that description component doesn't exist, in which case .... Well, a component defined inside an import element information item *could* be (by executive fiat) declared to have as its parent the description component which is imported. Oh, wait. There isn't one. Uh. I find that I have some questions about extensibility ... or perhaps, more accurately, about the interaction of extensibility defined in terms of the infoset and our component model. [1] Uh. Sorry. You didn't really expect me to write this many paragraphs with a *straight face*, did you? [2] You know, EIIs that don't define WSDL components could be designated differently. For instance, Extended Internal Element Information Objects (EIEIO)[3]. [3] Ow! Ow! I'm *sorry*! *Moooom*! Amy! -- Amelia A. Lewis Senior Architect TIBCO/Extensibility, Inc. alewis@tibco.com
Received on Wednesday, 7 December 2005 22:30:31 UTC