Hi Lisa,

Since the schemaLocation attribute is only a hint, schema processors are 
allowed to ignore all but the first import for a given namespace. This is 
what Xerces-J does by default. To instruct the parser to read from all the 
schema locations specified for a given namespace you need to set the 
honour-all-schemaLocations [1] feature to true.

Thanks.

[1] 
http://xerces.apache.org/xerces2-j/features.html#honour-all-schemaLocations

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

Lisa Bahler <[EMAIL PROTECTED]> wrote on 12/02/2005 04:15:22 
PM:

> I am using Xerces 2.7.1.
> 
> A schema associated with one namespace is trying to import multiple 
> schemas that are each associated with another namespace.  Only the first 

> in a sequence of imports appears to be processed.  (The same thing 
> happens if the sequence contains both includes and imports; the first 
> such element, whether an import or include, is the only one that appears 

> to be processed.)
> 
> When types from the schemas associated with all but the first import or 
> include are encountered in the top level schema, I see a lot of 
> unresolved references.
> 
> A sequence of includes works properly, by the way.  The issue is 
> encountered only if imports are involved.
> 
> I created a simplified version of what I am seeing.  I have 3 schemas, 
> all in the same directory.
> 
> Top.xsd:
> 
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
> > targetNamespace="topLevelNS" elementFormDefault="qualified" 
> > attributeFormDefault="unqualified" xmlns="topLevelNS"
> > xmlns:b = "bottomLevelNS">
> >     <xs:import namespace="bottomLevelNS" schemaLocation="A.xsd"/>
> >     <xs:import namespace="bottomLevelNS" schemaLocation="B.xsd"/>
> >
> >     <xs:element name="root">
> >         <xs:complexType>
> >             <xs:sequence>
> >                 <xs:element name="A" type="b:AType"/>
> >                 <xs:element name="B" type="b:BType"/>
> >             </xs:sequence>
> >         </xs:complexType>
> >     </xs:element>
> > </xs:schema>
> 
> 
> A.xsd:
> 
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
> > targetNamespace="bottomLevelNS" elementFormDefault="qualified" 
> > attributeFormDefault="unqualified" xmlns="bottomLevelNS">
> >     <xs:simpleType name="AType">
> >         <xs:restriction base="xs:string"/>
> >     </xs:simpleType>
> > </xs:schema>
> 
> B.xsd:
> 
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
> > targetNamespace="bottomLevelNS" elementFormDefault="qualified" 
> > attributeFormDefault="unqualified" xmlns="bottomLevelNS">
> >     <xs:simpleType name="BType">
> >         <xs:restriction base="xs:string"/>
> >     </xs:simpleType>
> > </xs:schema>
> 
> When I validate Top.xsd, I see:
> 
> > ERROR  - Line 11 [42] {Top.xsd}: src-resolve: Cannot resolve the name 
> > 'b:BType' to a(n) 'type definition' component.
> 
> 
> When I change the order of the imports, I see that b:AType is not 
> resolved instead.
> 
> I am obviously not understanding something here, since I believe that 
> Top.xsd is valid.  Would someone please help me?
> 
> Thanks,
> Lisa
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to