qname interpretation in included files

I have a question about qname interpretation in included files.  In short,
my question is: What namespace bindings are in effect when we interpret
the qnames in an attribute, such as the type attribute of xs:element.  
It doesn't seem to be the same as the bindings that are on the node,
for the reasons I will explain below.

Suppose I have a generic schema with no target namespace that I
am attempting to reuse in a number of contexts.  Suppose it
declares a complex type 'flight-plan', and an abstract element of
that type with the same name.  (I am just making up these type names,
so don't try to read any meaning in them)

flight-plan.xsd:
<xs:schema 
	xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	elementFormDefault="qualified" 
	attributeFormDefault="unqualified">

        <xs:complexType name="flight-plan"/>
        <xs:element name="flight-plan" type="flight-plan" abstract="true"/>

</xs:schema>

Now I try to use that schema from this other schema:

airplane.xsd:
<xs:schema 
	xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	xmlns="my-namespace"
	targetNamespace="my-namespace"
	elementFormDefault="qualified" 
	attributeFormDefault="unqualified">

        <xs:include schemaLocation="flight-plan.xsd"/>

        <xs:complexType name="flight">
                <xs:complexContent>
                        <xs:extension base="flight-plan">
                                <xs:attribute name="number" type="xsd:double"/>
                        </xs:extension>
                </xs:complexContent>
        </xs:complexType>

</xs:schema>

Now here is my question.  It is clear that the complexType flight-plan
will be instantiated as {my-namespace}flight-plan due to the targetNamespace.  
Furthermore, I assume that the type which "flight" is extending 
is {my-namespace}flight-plan due to the xmlns="". 

However, it is not clear to me what type the abstract element 
"flight-plan" in the included file is suppoesd to be extending.  The 
intention would seem to be {my-namespace}flight-plan, however, it seems
like the type attribute on the 'flight-plan' element has no default
namespace binding on it, so it would in fact be interpreted as {}flight-plan.

So my question again is: what namespace bindings apply on the interpretation of
qname attributes?  It can't be the bindings on the node that the attribute
is on, it seems, because that would lead to {}flight-plan.  But it isn't
targetNamespace, I don't think, as the schemas I have seen use both 
xmlns="my-namespace" and targetNamespace="my-namespace" as quite independent
entities.

Thank you!


niko

Received on Thursday, 30 January 2003 12:16:58 UTC