Hi

I need some help with a problem that i ran into. I've created a simple example to demonstrate it.

There are 3 xsd files with two different targetNamespaces nsA and nsB. I pasted them at the end of this mail.
The files use imports in the following way:

xsd1(nsA) imports xsd2(nsB) imports xsd3(nsA)

A complexType (Type3) is defined in xsd3.
This is extended by a complexType (Type2) in xsd2.
This is extended by a complexType (Type1) in xsd1.

If i validate these files with XMLSpy, i get the message that these are all valid xml-schema files.
I do believe that they are valid too, but...

If i try to load xsd1 with SchemaFactory.getSchema(...) (Xerces 2.9.1) oder try to run xjc with it, i get the following error message: [ERROR] src-resolve: Cannot resolve the name 'a:Type3' to a(n) 'type definition' component.
 line 11 of file:/home/hansgerd/xml/examples/ex1/xsd2.xsd

If i uncomment the xs:include of xsd3 in xsd1 everything works fine with no error.

I don't understand what's wrong with these xsd files and why XMLSpy comes to a different result than Xerces.
Which one ist correct? XMLSpy oder Xerces?

These are the contents of my xsd files.

File: ./xsd1.xsd targetNamespace="nsA"
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
   xmlns:b="nsB" targetNamespace="nsA"
   elementFormDefault="qualified"
   attributeFormDefault="unqualified">

   <xs:import namespace="nsB" schemaLocation="xsd2.xsd"/>
<!--    <xs:include schemaLocation="xsd3.xsd"/> -->

   <xs:complexType name="Type1">
       <xs:complexContent>
           <xs:extension base="b:Type2"/>
       </xs:complexContent>
   </xs:complexType>

</xs:schema>

File: ./xsd2.xsd targetNamespace="nsB"
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
   targetNamespace="nsB"
   xmlns:a="nsA"
   elementFormDefault="qualified"
   attributeFormDefault="unqualified">

   <xs:import namespace="nsA" schemaLocation="xsd3.xsd"/>

   <xs:complexType name="Type2">
       <xs:complexContent>
           <xs:extension base="a:Type3"/>
       </xs:complexContent>
   </xs:complexType>

</xs:schema>

File: ./xsd3.xsd targetNamespace="nsA"
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
   targetNamespace="nsA"
   elementFormDefault="qualified"
   attributeFormDefault="unqualified">

   <xs:complexType name="Type3"/>

</xs:schema>

Thanks,

Hansgerd Schneider

---------------------------------------------------------------------
To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org
For additional commands, e-mail: j-users-h...@xerces.apache.org

Reply via email to