W3C home > Mailing lists > Public > www-ws-desc@w3.org > October 2002

RE: Importing schemata into WSDL

From: Martin Gudgin <mgudgin@microsoft.com>
Date: Mon, 14 Oct 2002 20:56:45 -0700
Message-ID: <92456F6B84D1324C943905BEEAE0278E02D308E5@RED-MSG-10.redmond.corp.microsoft.com>
To: "Don Mullen" <donmullen@tibco.com>
Cc: "Jacek Kopecky" <jacek@systinet.com>, "WS Description WG" <www-ws-desc@w3.org>

I've been thinking a bit more about this. How about

<wsdl:types>
  <xs:import namespace='http://example.org/foo' />
  <xs:import namespace='http://example.org/bar' />

  <xs:schema targetNamespace='http://example.org/baz' >
    <xs:import namespace='http://example.org/quux' />
  </xs:schema>
</wsdl:types>

and say that schema components in foo, bar and baz are visible to WSDL
components but schema components in quux are only visible to the inline
schema. Schema components in foo and bar are NOT visible to the inline
schema.

Gudge

> -----Original Message-----
> From: Don Mullen [mailto:donmullen@tibco.com] 
> Sent: 11 October 2002 19:54
> To: Martin Gudgin
> Cc: Jacek Kopecky; WS Description WG
> Subject: RE: Importing schemata into WSDL
> 
> 
> 
> Martin:
> 
> I understand how you can argue this position.  In XML Schema 
> spec (part 1), section 4.2.3, we have:
> 
> "The *schema components* (that is {type definitions}, 
> {attribute declarations}, {element declarations}, {attribute 
> group definitions}, {model group definitions}, {notation 
> declarations}) of a schema corresponding to a <schema> 
> element information item with one or more <import> element 
> information items must include not only definitions or 
> declarations corresponding to the appropriate members of its 
> [children], but also, for each of those <import> element 
> information items for which clause 2 above is satisfied, a 
> set of *schema components* identical to all the *schema 
> components* of I." 
> 
> So all the schema components that are <import>ed are 
> available to reference by the importing schema.  In addition, 
> an XML instance document that uses the a.xsd schema must be 
> able to access components within all three namespaces.
> 
> <aNS:x xsi:schemaLocation"a.xsd" xmlns:aNS="fooA" 
> xmlns:bNS="fooB" xmls:cNS="fooC">  <bNS:y>
>   <cNS:z/>
>  </bNS:y>
> </aNS:x>
> 
> However, as you indicated below, a.xsd can't reference c.xsd, 
> even though b.xsd <import>ed c.xsd.  So by that argument, I 
> don't see why bar.wsdl should be able to reference anything 
> in b.xsd if a.xsd is included inline within <types>.  I would 
> think it should mirror XML Schema, and require a separate 
> <import> of b.xsd in order to reference those components 
> directly. I guess I see a difference between reference the 
> component definitions (as referenced in schemas or wsdls), 
> and actual use of the components in an instance doc.
> 
> Don
> 
> > -----Original Message-----
> > From: Martin Gudgin [mailto:mgudgin@microsoft.com]
> > Sent: Friday, October 11, 2002 8:44 PM
> > To: Jacek Kopecky; WS Description WG
> > Subject: RE: Importing schemata into WSDL
> > 
> > Jacek,
> > 
> > I'm afraid I disagree with your analysis of how schema 
> import works. 
> > Here's why.
> > 
> > Taking your example:
> > 
> > Given three schema documents a.xsd, b.xsd and c.xsd with
> > three separate
> > target namespaces, where a.xsd imports b.xsd imports c.xsd it is my
> > understanding that the following statements are true:
> > 
> > 1.  The resulting schema contains components from all three 
> namespaces
> > 
> > 2.  Components in namespace a can only reference components
> > in namespace
> > a and/or namespace b
> > 
> > 3.  Components in namespace b can only reference components
> > in namespace
> > b and/or namespace c
> > 
> > 4.  Components in namespace c can only reference other 
> components in 
> > namespace c.
> > 
> > Note that the reason components in namespace a cannot reference 
> > components in namespace c ( point 2 ) is because a.xsd does 
> not have 
> > an import for namespace c and the schema spec is very clear that
> > you cannot
> > reference things in a namespace you have not imported ( same 
> > applies to
> > points 3 and 4 ).
> > 
> > However, the critical point from the POV of the component
> > model for WSDL
> > is point 1. All we need to say is that for any <xs:schema> 
> element in
> > <wsdl:types> ALL the schema components directly defined in the
> > <xs:schema> and those directly imported are visible to the 
> rest of the
> > WSDL components and can be referenced. Strictly speaking we 
> could also
> > say that you can reference components in other namespaces the are
> > imported at a deeper level, because those components ARE 
> present, but
> > there would be no way of knowing about them in the WSDL 
> > itself without a
> > priori knowledge of the schemas you were directly importing.
> > 
> > Gudge
> > 
> > > -----Original Message-----
> > > From: Jacek Kopecky [mailto:jacek@systinet.com]
> > > Sent: 11 October 2002 18:16
> > > To: WS Description WG
> > > Subject: Importing schemata into WSDL
> > > 
> > > 
> > > 
> > > Hi all, 8-)
> > > 
> > > in WSDL 1.1 the import statement allowed importing schema
> > > documents. In WSDL 1.2 we are apprarently moving in the 
> > > direction of disallowing this, but we acknowledge it must be 
> > > possible to import an external schema into a WSDL definitions 
> > > document somehow.
> > > 
> > > What I've heard from Gudge is that it is possible to import a
> > > schema at http://example.org/schema.xs (with the same target 
> > > namespace) using
> > > 
> > > <wsdl:types>
> > >   <xs:schema>
> > >     <xs:import namespace="http://example.org/schema.xs"
> > >                location="http://example.org/schema.xs"/>
> > >   </xs:schema>
> > > </wsdl:types>
> > > 
> > > I have a problem with this because IMHO this violates XML
> > > Schema import semantics. Let me explain:
> > > 
> > > Let's assume I have three schemas, a.xs, b.xs and c.xs, with
> > > different target namespaces; where a.xs only imports b.xs and 
> > > b.xs imports c.xs. On the component level; a.xs then contains 
> > > all the type and element definitions from a.xs and all the 
> > > type and element definitions from b.xs are accessible in a.xs. 
> > > 
> > > Note that no definitions from c.xs are visible in a.xs - this
> > > is logical because the fact that b.xs imports c.xs is just an 
> > > implementation detail of b.xs and should not be propagated 
> > > outside of b.xs. In other words, a.xs must not be affected by 
> > > a change to b.xs that only removes the import and redefines 
> > > those definitions (still in b.xs) that used definitions from c.xs.
> > > 
> > > What I think this means is that an xs:schema element
> > > (together with any
> > > contents) is a syntactic representation of the set of type 
> > > and element definitions contained within.
> > > 
> > > I think it's apparent from the paragraph above that WSDL
> > > should not know about imports in wsdl:types/xs:schema. I.e. a 
> > > schema cannot be imported into a WSDL definitions document by 
> > > importing it in a contained schema.
> > > 
> > > I think that we'll have to reallow our import statement to
> > > import schemas (which should be doable in a safe way, I 
> > > believe) or we should introduce a typesImport statement that 
> > > would serve to import external schemata, as the types 
> > > statement serves to provide (import) internal schemata.
> > > 
> > > Hope it makes sense,
> > > 
> > >                    Jacek Kopecky
> > > 
> > >                    Senior Architect, Systinet Corporation
> > >                    http://www.systinet.com/
> > > 
> > > 
> > > 
> > > 
> > 
> > 
> 
Received on Monday, 14 October 2002 23:57:18 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:21 GMT