- From: David Booth <dbooth@w3.org>
- Date: Fri, 15 Apr 2005 20:21:42 -0400
- To: Arthur Ryman <ryman@ca.ibm.com>, Martin Gudgin <mgudgin@microsoft.com>
- Cc: www-ws-desc@w3.org
Arthur & Gudge, It sounds like you are saying that: 1. The merging of components *is* transitive with import (as I had concluded). So if A imports B imports C, and I'm analyzing WSDL document A, then the components for A include all the components from B and C. HOWEVER . . . 2. The visibility of components is *not* transitive with import. And (as Arthur explained to me offline) the visibility of import is controlled at the XML Infoset level -- not at the component level -- by section 4.2. If I'm now understanding you properly, I would observe: 1. Section 4.2 really needs clarification. It isn't at all clear (to me at least) how the visibility of components is being restricted for import, especially given that this visibility is not controlled at the component model level. In fact, it seems very odd to me to talk about controlling the visibility of *components* at the XML Infoset level, since components don't exist at the XML Infoset level. 2. It seems bizarre to me that the {interfaces} property of A would have components from C that are not visible to A. The effect of having all of B's and C's components in A's component model (even though A does not import C) is that when I read a sentence in another part of the spec, such as the following from sec 2.9.2.2 on bindings: [[ The interface attribute information item refers, by QName, to an Interface component. ]] I would (naively) assume that if an Interface component exists in the {interfaces} property, I can refer to it by its QName. It is not at all obvious that another rule in another corner of the spec (i.e. sec 4.2) is supposed to take precedence and limit the visibility of the QName reference in sec 2.9.2.2 to only the directly imported *subset* of those Interface components in my {interfaces} property. I think it would be considerably clearer if the component model for a "WSDL 2.0 document"*** (see below) would consist of all and *only* those components that are supposed to be visible to that WSDL 2.0 document (which in the A-imports-B-imports-C example would include components that originated from B but NOT those that originated from C). Is there some reason why you think this approach would be inadequate? *** By "WSDL 2.0 document" I specifically mean a description element information item that conforms to the WSDL 2.0 specification -- I do NOT mean a single physical document. On Fri, 2005-04-15 at 11:42, Arthur Ryman wrote: > David, > > I disagree. Imports are not for the same namespace. All components get > added to the component model, not just those in the same namespace. > The <wsdl:import> statement is just an assertion that the definitions > in the current document refer to some other namespace. > > 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/ > > > David Booth <dbooth@w3.org> > Sent by: www-ws-desc-request@w3.org > > 04/14/2005 09:36 PM > To > Martin Gudgin > <mgudgin@microsoft.com> > cc > www-ws-desc@w3.org > Subject > RE: > Contradictions > regarding > transitivity of > wsdl:import > > > > > > I think I've located the problem. Sec 4.2 says: > [[ > Components in directly imported descriptions are part of the component > model of the importing description. > ]] > In the A-imports-B-imports-C example, if I'm determining what > components > A imports from B, "the importing description" in the above sentence > would be A and the "directly imported descriptions" of A would be {B}. > Substituting these into the sentence above yields: > [[ > Components in {B} are part of the component model of the A. > ]] > which is *not* what we want, since the components in B clearly include > components that originated from C (which would thus make import > transitive), whereas we only want those components in B that > *originated* from B (i.e., non-transitive). > > I think 4.2 needs to be changed to say something like: > [[ > Each component in the {interfaces}, {bindings} or {service} property > of > the imported document is added to the {interfaces}, {bindings} or > {service} property of the importing document (respectively), if and > only > if the namespace part of the {name} property of that component is > identical to the value of the namespace attribute information item of > the import element information item. In other words, only those > components that are "in the namespace" that was specified in the > namespace attribute information item of the import element information > item are imported. > ]] > > The editors may be able to come up with a simpler (but still accurate) > way of expressing that, but I think it captures the intended effect, > of > causing import be non-transitive. > > -- > > David Booth > W3C Fellow / Hewlett-Packard > -- David Booth W3C Fellow / Hewlett-Packard
Received on Saturday, 16 April 2005 00:21:43 UTC