RE: Comments on Web Services Description Language (WSDL) Version 2.0 Part 0: Primer

Dennis,

Here is a summary of the options, as I understand them, for 
using XML Schema to introduce a pair of in/out elements into 
a WSDL document:


1) inline the schema, no problems!

  <xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
     targetNamespace="http://example.com/bar" >
     <element name="in" type="xs:string"/>
     <element name="out" type="xs:string"/>
  </xs:schema>

2) import the external schema into a schema with the same
   targetNamespace - doesn't work since the targetNamespace is 
   already known to the processor

   <xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
     targetNamespace="http://example.com/bar" >
     <xs:import namespace="http://example.com/bar" schemaLocation="bar.xsd"/>
   </xs:schema>

3) import the external schema into a wrapper namespace
   - This doesn't work because the imported bar symbols 
     aren't visible outside the wrapper namespace:
   
  <xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
     targetNamespace="http://example.com/wrapper" >
     <xs:import namespace="http://example.com/bar" schemaLocation="bar.xsd"/>
  </xs:schema>

4) include the external schema into the bar namespace
 - works OK, though a little contrived IMO

  <xs:schema xmlns="http://www.w3.org/2001/XMLSchema"
      targetNamespace="http://example.com/bar" >
      <xs:include namespace="http://example.com/bar" schemaLocation="bar.xsd"/>
  </xs:schema>
 
5) use the WSDL 2.0 ability to <xs:import directly under <types>


So, AIUI, you are contending that option 3 should in fact work. I think
the consensus of the WG is that xs:import isn't transitive, the most 
succinct explanation I have to hand is here:
http://lists.w3.org/Archives/Public/xmlschema-dev/2002Apr/0211.html

If there has been a misunderstanding of the schema specification, then
it is embodied in current toolkits. You can confirm for yourself with the
attached example WSDL 1.1 documents.

As to a wrapper schema being 'cleaner', well, AIUI you will be able to 
publish WSDL 2.0 documents using option 4, but I personally like the direct 
<xs:import under <types>, even though it is specifically excluded by 
the WS-I Basic Profile.

Paul




> -----Original Message-----
> From: www-ws-desc-request@w3.org [mailto:www-ws-desc-request@w3.org]On
> Behalf Of Dennis Sosnoski
> Sent: 20 September 2005 07:08
> To: www-ws-desc@w3.org
> Subject: Comments on Web Services Description Language (WSDL) Version
> 2.0 Part 0: Primer
> 
> 
> 
> I'm puzzled at the use of a special mechanism for importing 
> XML schemas, 
> as discussed in 2.3.2. AFAIKS, the same effect can be had by 
> just using 
> a simple xs:schema wrapper element:
> 
>   <xs:schema>
>     <xs:import .../>
>   </xs:schema>
> 
> This is a cleaner approach than just in-lining the xs:import and 
> xs:include, since it minimizes the number of different ways 
> of doing the 
> same thing. From the comment at the end of 2.3.1, it seems 
> that there's 
> a misunderstanding of how schema operates here. As I understand it, 
> imported schema definitions become part of the schema and 
> have the same 
> visibility as definitions made directly under the including 
> schema. In 
> support of this interpretation, section 4.2.3 of Schema Part 1 
> (http://www.w3.org/TR/xmlschema-1/#composition-schemaImport) 
> ends with:
> 
> The ·schema components· 
> <http://www.w3.org/TR/xmlschema-1/#key-component> (that is {type 
> definitions} <http://www.w3.org/TR/xmlschema-1/#type_definitions>, 
> {attribute declarations} 
> <http://www.w3.org/TR/xmlschema-1/#attribute_declarations>, {element 
> declarations} 
> <http://www.w3.org/TR/xmlschema-1/#element_declarations>, 
> {attribute group definitions} 
> <http://www.w3.org/TR/xmlschema-1/#attribute_group_definitions
> >, {model 
> group definitions} 
> <http://www.w3.org/TR/xmlschema-1/#model_group_definitions>, 
> {notation 
> declarations} 
<http://www.w3.org/TR/xmlschema-1/#notation_declarations>) 
of a schema corresponding to a <schema> 
<http://www.w3.org/TR/xmlschema-1/#element-schema> element information 
item with one or more <import> 
<http://www.w3.org/TR/xmlschema-1/#element-import> element information 
items must include not only definitions or declarations corresponding to 
the appropriate members of its [children] 
<http://www.w3.org/TR/xml-infoset/#infoitem.element>, but also, for each 
of those <import> <http://www.w3.org/TR/xmlschema-1/#element-import> 
element information items for which clause 2 
<http://www.w3.org/TR/xmlschema-1/#c-ims> above is satisfied, a set of 
·schema components· <http://www.w3.org/TR/xmlschema-1/#key-component> 
identical to all the ·schema components· 
<http://www.w3.org/TR/xmlschema-1/#key-component> of *I*.

Given this, I don't see any possible reason why xs:imported components 
of a schema would not be available for reference by QName in the WSDL.

  - Dennis

Received on Tuesday, 20 September 2005 13:55:59 UTC