Re: Clarification for use of xs:include

Liu, Kevin wrote:
> part 1 section 3.1.2 states:
> "Inside an embedded XML schema, the |xs:import| and |xs:include| 
> /element information item/s MAY be used to refer to other XML schemas 
> embedded in the same WSDL description, provided that an appropriate 
> value is specified for their |schemaLocation| /attribute information 
> item/s. The semantics of such /element information item/s are governed 
> solely by the XML Schema specification [XML Schema: Structures 
> <>]." It 
> doesn't say anything about what's the "appropriate value" and implies 
> that it's the question for schema spec.
> I searched our mail archival, there were many messages exchanged about 
> this but seems no conclusion was drawn about what the "appropriate 
> value" should be for @schemalocations in the following example? 
> <type>
>     <xs:schema targetNamespace = "a"> ....</schema>
>     <xs:schema targetNamespace = "b">
>         <xs:import namespace = "a" schemalocation = "???"/> ...
>     </schema>
>     <xs:schema targetNamespace = "a">
>         <xs:include  schemalocation = "???"/> ...
>     </schema>
> <type>
> Some suggested that for the xs:import in "b", the @schemalocation 
> should not present (it's optional anyway).  But nothing has been said 
> about the case for the second "a" which xs:includes the first "a". is it 
> legal (the spec quoted above implies yes)? if so, what's the right value 
> for xs:include@schemaLocation(not it's a required attribute ) ?  
> Any one can help? Since this a confusing area, I am thinking to include 
> something in the Primer.

How about using the "id" attribute and a fragment identifier? E.g.

     <xs:schema targetNamespace = "a" id="a"> ....</schema>

     <xs:schema targetNamespace = "b">
         <xs:import namespace = "a" schemalocation = "#a"/> ...

     <xs:schema targetNamespace = "a">
         <xs:include  schemalocation = "#a"/> ...



Received on Monday, 13 September 2004 17:21:25 UTC