- From: <paul.downey@bt.com>
- Date: Tue, 20 Sep 2005 14:55:34 +0100
- To: <dms@sosnoski.com>, <www-ws-desc@w3.org>
- Message-ID: <2B7789AAED12954AAD214AEAC13ACCEF1A033543@i2km02-ukbr.domain1.systemhost.net>
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
Attachments
- application/x-zip-compressed attachment: include.zip
Received on Tuesday, 20 September 2005 13:55:59 UTC