Re: Can one inline schema import definitions from a second inline schema?

Jonathan Marsh wrote:

> I've raised a question on the intent of R2004 in the BP - I had 
> assumed it was focused on ensuring the right version of Schema was 
> used, and it may be that disallowing imports between multiple inline 
> schemas is an unintended side-effect of the language.
>

My BP resources indicate that the intention was to disallow importing of 
an inlined schema from a WSDL document. This definitely covers 
disallowing imports between inline schemas because the importing 
document is WSDL and the schema imported is inlined in a WSDL document 
(whose document root is not schema). In this specific case (just like 
the base method of a recursive function call :-)), the WSDL documents 
happen to be the same. Therefore, I conclude that this case is 
completely forbidden R2004.


--umit


>  
>
> ------------------------------------------------------------------------
>
> From: www-ws-desc-request@w3.org [mailto:www-ws-desc-request@w3.org] 
> On Behalf Of Anne Thomas Manes
> Sent: Saturday, October 18, 2003 5:46 AM
> To: Martin Gudgin; www-ws-desc@w3.org
> Subject: RE: Can one inline schema import definitions from a second 
> inline schema?
>
>  
>
> Regarding xs:import location pointing to a file with <schema> root 
> element:
>
> I don't believe that the schema spec requires that, but the WS-I BP 
> does. R2004:
>
>
>         5.1.2 WSDL and Schema Import
>
> Some examples in WSDL 1.1 incorrectly show the WSDL import statement 
> being used to import XML Schema definitions. The Profile clarifies use 
> of the import mechanisms to keep them consistent and confined to their 
> respective domains. Imported schema documents are also constrained by 
> XML version and encoding requirements consistent to those of the 
> importing WSDL documents.
>
> R2001 A DESCRIPTION MUST only use the WSDL "import" statement to 
> import another WSDL description.
>
> R2002 To import XML Schema Definitions, a DESCRIPTION MUST use the XML 
> Schema "import" statement.
>
> R2003 A DESCRIPTION MUST use the XML Schema "import" statement only 
> within the xsd:schema element of the types section.
>
> R2004 A DESCRIPTION MUST NOT use the XML Schema "import" statement to 
> import a Schema from any document whose root element is not "schema" 
> from the namespace "http://www.w3.org/2001/XMLSchema".
>
> Anne
>
> At 06:10 AM 10/18/2003, you wrote:
>
>
>  
>
>> -----Original Message-----
>> From: Lawrence Mandel [mailto:lmandel@ca.ibm.com]
>> Sent: 17 October 2003 19:08
>> To: Amelia A. Lewis
>> Cc: Arthur Ryman; Martin Gudgin; paul.downey@bt.com;
>> sanjiva@watson.ibm.com; www-ws-desc@w3.org; www-ws-desc-request@w3.org
>> Subject: Re: Can one inline schema import definitions from a
>> second inline schema?
>>
>>
>>
>>
>>
>> I agree that using the schema language as intended is the best option.
>> However, the xs:import element was not designed with the idea
>> of importing a schema that is located in the same physical
>> file as the schema that is importing it. Existing schema
>> processors do not know how to resolve inline schemas by
>> default and will have to be configured to do so.
>
> Why? If I were a WSDL processor, I'd just load up my favorite schema
> processor and pass it the two schema elements.
>
>
>> Not
>> clarifying the correct way to import an inline schema will
>> result in different takes on how to import an inline schema.
>
> XML Schema already deals with this by allowing xs:import with no
> schemaLocation.
>
>> This is a potential interoperability problem that can be
>> addressed at the WSDL specification level (rather then
>> leaving this for the WS-I Basic Profile). If this is not
>> clarified, what will it mean if someone has an import
>> statement such as
>>
>> <xs:import namespace="http://mynamespace"
>> schemaLocation="mywsdl.wsdl"/>
>
> I seem to remember the schema spec saying something about a
> schemaLocation resolving to something with <xs:schema> as its top-level
> element. Anyone else have a similar recollection?
>
>>
>> Will that resolve http://mynamespace <http://mynamespace/> to another 
> inline
>> schema? Will the following be valid?
>>
>> <xs:import namespace="http://mynamespace"
>> schemaLocation="http://mynamespace <http://mynamespace/>"/>
>
> A schema processor is at liberty to ignore schemaLocation on import, so
> this could resolve locally.
>
>>
>> Or is the correct way
>>
>> <xs:import namespace="http://mynamespace <http://mynamespace/>"/>
>
> All the above are legal. Only the latter would resolve to 'a schema the
> schema processor got by some unknown mechanism' ( i.e. another inline
> schema )
>
>>
>> I tend to think that not including a schemaLocation is the
>> correct way but there is currently nothing that will prevent
>> others from using one of the other two import statements. 
>> Because WSDL is using XML Schema in a way that it was not
>> intended to be used
>
> Who says? I think this was absolutely one of the ways schema was
> intended to be used.
>
>> the WSDL specification should make
>> clarifications to XML Schema where needed.
>>
>> Alternatively, if the goal is to use XML Schema as it was
>> designed,
>
> XML Schema was designed to allow a schema processor to construct a
> schema in any way it saw fit. External documents, element nodes from a
> DOM etc.
>
>> inline schemas should not be allowed at all and all
>> schemas should be defined in external documents and imported
>> into WSDL documents. This approach will maintain the
>> independence and integrity of XML Schema and reduce the
>> amount of clarifications the WSDL specification needs to make
>> as a result of using XML Schema internally in WSDL documents.
>
> I'm still not convinced any such clarification is necessary
>
> Gudge
>
>>
>> Comments?
>>
>> Lawrence Mandel
>>
>> Software Developer
>> WebSphere Studio Application Developer - XML Tools
>> Phone: 905 - 413 - 3814   Fax: 905 - 413 - 4920
>> lmandel@ca.ibm.com
>>
>>
>>                                                              
>>             
>>              "Amelia A. Lewis"                               
>>             
>>              <alewis@tibco.com                               
>>             
>>              >                                               
>>           To
>>                                        paul.downey@bt.com    
>>             
>>              10/17/2003 12:03                                
>>           cc
>>              PM                        mgudgin@microsoft.com,
>>             
>>                                       
>> sanjiva@watson.ibm.com, Arthur     
>>                                       
>> Ryman/Toronto/IBM@IBMCA, Lawrence  
>>                                       
>> Mandel/Toronto/IBM@IBMCA,          
>>                                        www-ws-desc@w3.org,   
>>             
>>                                       
>> www-ws-desc-request@w3.org         
>>                                                              
>>      Subject
>>                                        Re: Can one inline
>> schema import   
>>                                        definitions from a
>> second inline   
>>                                        schema?               
>>             
>>                                                              
>>             
>>                                                              
>>             
>>                                                              
>>             
>>                                                              
>>             
>>                                                              
>>             
>>                                                              
>>             
>>
>>
>>
>>
>> Do we need to do so?
>>
>> The current language of the specification seems fairly
>> straightforward.
>> We permit, as immediate children of types, when W3C XML
>> Schema is used (and it is the only schema language required
>> to be supported by all WSDL processors), both xs:schema and
>> xs:import.  We *do not* constrain the semantics of these
>> child elements, except to change @targetNamespace to REQUIRED
>> (for embedded and imported schemata both).
>>
>> We should not, in my opinion, overconstrain W3C XML Schema. 
>> We have already forbidden the use of chameleon schemata,
>> which removes an enormous burden on processors; support for
>> that [mis?]feature would have placed an unacceptable burden
>> on the WSDL processor, since we would have had to define the
>> semantics of chameleon schemata in a context never
>> anticipated (the idea that a WSDL targetNamespace could apply
>> to an imported/embedded schema makes for all sorts of really
>> interesting and sometimes quite surprising interactions).
>>
>> In so far as is possible, we should *not* change semantics of
>> W3C XML Schema, in my opinion.  The value of requiring it as
>> a supported schema language lies in the re-use of existing
>> schema processors.  If we begin to place further constraints
>> upon it, it stops being the language supported by existing
>> processors, and requires a whole new generation of processors
>> customized for schema-in-WSDL-context.
>>
>> The idea behind embedding and importing schema, as I
>> understand it, is to rule that whole complex area *out of
>> scope* for the WSD WG.  Writing a schema language is *hard*,
>> we need to reuse, not reinvent, and not revise.  This allows
>> us to focus on what we [should?] do best.
>>
>> Amy!
>> On Fri, 17 Oct 2003 16:39:32 +0100
>> paul.downey@bt.com wrote:
>>
>> >
>> > isn't this an issue about how multiple inline schemas reference each
>> > other in a   single WSDL document ?
>> >
>> > AIUI it's just a matter of formally stating what appears to be a
>> > common practice.
>> >
>> > Paul
>> >
>> > -----Original Message-----
>> > From: Martin Gudgin [mailto:mgudgin@microsoft.com]
>> > Sent: 17 October 2003 16:36
>> > To: Downey,PS,Paul,XSJ67A C; sanjiva@watson.ibm.com;
>> ryman@ca.ibm.com
>> > Cc: lmandel@ca.ibm.com; www-ws-desc@w3.org;
>> www-ws-desc-request@w3.org
>> > Subject: RE: Can one inline schema import definitions from a second
>> > inline schema?
>> >
>> >
>> > Given that xs:import is defined by XML Schema and NOT WSDL, I don't
>> > see how WSDL can really constrain it in any way.
>> >
>> > Gudge
>> >
>> > > -----Original Message-----
>> > > From: paul.downey@bt.com [mailto:paul.downey@bt.com]
>> > > Sent: 17 October 2003 16:35
>> > > To: sanjiva@watson.ibm.com; Martin Gudgin; ryman@ca.ibm.com
>> > > Cc: lmandel@ca.ibm.com; www-ws-desc@w3.org;
>> > > www-ws-desc-request@w3.org Subject: RE: Can one inline
>> schema import
>> > > definitions from a second inline schema?
>> > >
>> > > i don't think the BP doesn't preclude more than 1 schema
>> within the
>> > > types section - though i couldn't see anything about referencing
>> > > between inline schemas.
>> > >
>> > > FWIW, quite a few existing kits (including .NET) will
>> generate WSDL
>> > > 1.1 with multiple inline schemas which reference each other using
>> > > <import namespace="blah"> - with a missing schemaLocation ..
>> > >
>> > > maybe the anonymous schemaLocation should be supported/precluded
>> > > explicitly in WSDL 1.2 ?
>> > >
>> > >
>> > > --
>> > > Paul Sumner Downey
>> > > Web Services Integration
>> > > BT Exact
>> > >
>> > >
>> > >
>> > >
>> > > -----Original Message-----
>> > > From: Sanjiva Weerawarana [mailto:sanjiva@watson.ibm.com]
>> > > Sent: 17 October 2003 16:02
>> > > To: Martin Gudgin; Arthur Ryman
>> > > Cc: Lawrence Mandel; www-ws-desc@w3.org;
>> www-ws-desc-request@w3.org
>> > > Subject: Re: Can one inline schema import definitions
>> from a second
>> > > inline schema?
>> > >
>> > >
>> > >
>> > > Didn't we discuss this a while back and say only *1*
>> schema within
>> > > <types>?? Or maybe that WSI BP that does that?
>> > >
>> > > Sanjiva.
>> > >
>> > > ----- Original Message -----
>> > > From: "Arthur Ryman" <ryman@ca.ibm.com>
>> > > To: "Martin Gudgin" <mgudgin@microsoft.com>
>> > > Cc: "Lawrence Mandel" <lmandel@ca.ibm.com>; <www-ws-desc@w3.org>;
>> > > <www-ws-desc-request@w3.org>
>> > > Sent: Friday, October 17, 2003 7:56 PM
>> > > Subject: RE: Can one inline schema import definitions
>> from a second
>> > > inline schema?
>> > >
>> > >
>> > > > Gudge,
>> > > >
>> > > > I agree to some extent, but AFAIK, WSDL is the only application
>> > > > that inlines <schema>. I think the XSD spec assumes you have a
>> > > single <schema>
>> > > > per document, i.e. <schema> is the root element. So
>> > > processing not one,
>> > > > but two or more inline schemas is a bit of a shock for your
>> > > typical XSD
>> > > > processor. So probably the "reasonable" behavior you
>> describe is
>> > > > undefined.
>> > > >
>> > > > I think it would promote interoperability if the WSDL 1.2
>> > > was clear on
>> > > > this point, one way or the other. From your response, I
>> > > assume you would
>> > > > support the use of more than one inline <schema> in the
>> > > <types> element.
>> > > >
>> > > > Arthur Ryman
>> > > >
>> > > >
>> > > >
>> > > >
>> > > > "Martin Gudgin" <mgudgin@microsoft.com> Sent by:
>> > > > www-ws-desc-request@w3.org
>> > > > 10/17/2003 06:17 AM
>> > > >
>> > > >
>> > > >         To:     Lawrence Mandel/Toronto/IBM@IBMCA,
>> > > <www-ws-desc@w3.org>
>> > > >         cc:
>> > > >         Subject:        RE: Can one inline schema import
>> > > definitions from
>> > > a second inline schema?
>> > > >
>> > > >
>> > > >
>> > > >
>> > > > To be frank, I think this has very little to do with
>> WSDL. It is
>> > > > perfectly coherent for a schema processor, on encountering
>> > > <xsd:import
>> > > > namespace='http://namespace1' /> to say to itself, ah, I
>> > > have a schema
>> > > > for that namespace, I'll use that here. Likewise, when it
>> > > > encounters<xsd:import namespace='http://namespace2 
> <http://namespace2/>' /> it would
>> > > > say,
>> > > ah, not seen
>> > > > that namespace yet, I'll wait and see what happens.
>> > > >
>> > > > Gudge
>> > > >
>> > > > > -----Original Message-----
>> > > > > From: www-ws-desc-request@w3.org
>> > > > > [mailto:www-ws-desc-request@w3.org] On Behalf Of
>> Lawrence Mandel
>> > > > > Sent: 16 October 2003 23:19
>> > > > > To: www-ws-desc@w3.org
>> > > > > Subject: Can one inline schema import definitions
>> from a second
>> > > > > inline schema?
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > >
>> > > > > Hello,
>> > > > >
>> > > > > We have customers that do the following in WSDL 1.1:
>> > > > >
>> > > > > <types>
>> > > > >  <schema targetNamespace="http://namespace1" xmlns=
>> > > > > "http://www.w3.org/2001/XMLSchema"
>> > > > > xmlns:two="http://namespace2 <http://namespace2/>">
>> > > > >    <import namespace="http://namespace2 <http://namespace2/>"/>
>> > > > >    <complexType name="myComplexType">
>> > > > >     <sequence>
>> > > > >      <element name="myElement" type="two:B"/>
>> > > > >     </sequence>
>> > > > >    </complexType>
>> > > > >    <complexType name="A">
>> > > > >     <sequence>
>> > > > >      <element name="elementA" type="xsd:string"/>
>> > > > >     </sequence>
>> > > > >    </complexType>
>> > > > >   </schema>
>> > > > >   <schema targetNamespace="http://namespace2 
> <http://namespace2/>" xmlns=
>> > > > > "http://www.w3.org/2001/XMLSchema"
>> > > > > xmlns:one="http://namespace1 <http://namespace1/>">
>> > > > >    <import namespace="http://namespace1 <http://namespace1/>"/>
>> > > > >    <complexType name="myComplexType">
>> > > > >     <sequence>
>> > > > >      <element name="myElement" type="one:A"/>
>> > > > >     </sequence>
>> > > > >    </complexType>
>> > > > >    <complexType name="B">
>> > > > >     <sequence>
>> > > > >      <element name="elementB" type="xsd:string"/>
>> > > > >     </sequence>
>> > > > >    </complexType>
>> > > > >   </schema>
>> > > > > </types>
>> > > > >
>> > > > > The customers say that this is not explicitly
>> forbidden by the
>> > > > > WSDL 1.1 specification and I can't find anything that forbids
>> > > > > this in the WSDL 1.1 specification.  However, there
>> is nothing
>> > > > > in the WSDL 1.1 specification that states how to
>> import a schema
>> > > > > defined in the same types section but with a different
>> > > > > namespace.
>> > > > >
>> > > > > Is this allowed according to the WSDL 1.2
>> specification?  If so,
>> > > > > what is the correct way to import one inline schema
>> > > into another?
>> > > > >
>> > > > > Thanks,
>> > > > >
>> > > > > Lawrence Mandel
>> > > > >
>> > > > > Software Developer
>> > > > > WebSphere Studio Application Developer - XML Tools
>> > > > > Phone: 905 - 413 - 3814   Fax: 905 - 413 - 4920
>> > > > > lmandel@ca.ibm.com
>> > > > >
>> > > > >
>> > > > >
>> > > >
>> > > >
>> > > >
>> > > >
>> > >
>> > >
>> > >
>> >
>> >
>>
>>
>> --
>> Amelia A. Lewis
>> Architect, TIBCO/Extensibility, Inc.
>> alewis@tibco.com
>>
>>
>>
>>
>
>

-- 
Umit Yalcinalp                                  
Consulting Member of Technical Staff
ORACLE
Phone: +1 650 607 6154                          
Email: umit.yalcinalp@oracle.com

Received on Wednesday, 22 October 2003 21:35:43 UTC