Hi Florian,

I haven't tried out your example yet, I'll take a look at it as soon as
I have a chance to. It looks like there might be a namespace issue. I
think your issue brings up the point of needing an additional method as
such:

Schema#getSimpleType(String name, String namespace);

Your solution was to pass in the QName, but this could be a problem, as
the prefix in the QName might not be same prefix defined in the imported
schema. So the namespace should be looked up first in the main schema,
and then both the local-name and namespace passed into the getSimpleType
method of the imported schema.

I'll look at it once I have some time.

Thanks,

--Keith

"Kirchhoff, Florian" wrote:
> 
> I am reposting this as this seems to be a genuine bug. Any feedback?
> 
> > -----Original Message-----
> > From: Kirchhoff, Florian [mailto:[EMAIL PROTECTED]]
> > Sent: Thursday, June 06, 2002 3:35 PM
> > To: [EMAIL PROTECTED]
> > Subject: [castor-dev] Restriction base type not found if imported
> >
> >
> > Hi.
> >
> > I am using castor-0.9.3.19-xml to compile a schema using
> > SourceGenerator. I have a schema A that imports another
> > schema B. In A I have a complex type "extension" that is a
> > restriction of a complexType baseT. baseT is from a different
> > namespace since it was imported (schema are show at the end).
> >
> > SourcGenerator fails with this error:
> > the simple type 'baseT' is not a built-in type as defined in
> > XML Schema specification.
> >
> > Looking at the code I think I see where the problem lies.
> > Here is the calling sequence:
> >
> > The ComplexContentRestrictionUnmarshaller constructor calls:
> >
> > _schema.getType("qb:baseT")
> >
> > which calls
> >
> > getSimpleType("qb:baseT");
> >
> > which calls
> >
> > Schema schema = getImportedSchema(ns);
> > schema.getSimpleType(canonicalName);
> >
> > Where ns is "http://www.q.com/XMLSchema/BIM"; and
> > canonicalName is "baseT".
> >
> > Now in getSimpleType (now for the imported Schema object
> > (b.xsd)) name has no namespace prefix so the namespace is
> > assumed (in this case
> > "http://www.w3.org/2001/XMLSchema";) and the call fails
> > because no http://www.w3.org/2001/XMLSchema:baseT type is known.
> >
> > Doing this in getSimpleType solves the problem, but I am not
> > sure it's the right thing to do:
> >
> > Schema schema = getImportedSchema(ns);
> > schema.getSimpleType(name); // look up the fully qualified name (with
> > prefix)
> >
> > How can this issue be fixed?
> >
> > Thanks.
> >
> > Florian Kirchhoff
> >
> > ==== a.xsd ====
> > <?xml version = "1.0" encoding = "UTF-8"?>
> > <schema xmlns="http://www.w3.org/2001/XMLSchema";
> >    targetNamespace="http://www.q.com/XMLSchema";
> >    xmlns:qb="http://www.q.com/XMLSchema/BIM";
> >    xmlns:qw="http://www.q.com/XMLSchema";
> >    xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> >    elementFormDefault = "qualified">
> >
> >   <import namespace="http://www.q.com/XMLSchema/BIM";
> > schemaLocation = "b.xsd"/>
> >
> >         <complexType name="extension">
> >             <complexContent>
> >               <restriction base = "qb:baseT">
> >                 <sequence>
> >                   <element name = "Code" minOccurs = "0">
> >                     <simpleType>
> >                       <restriction base = "string">
> >                         <enumeration value = "GdCust"/>
> >                       </restriction>
> >                     </simpleType>
> >                   </element>
> >                 </sequence>
> >               </restriction>
> >             </complexContent>
> >           </complexType>
> >
> >   <element name = "foo" type="qw:extension"/>
> >
> > </schema>
> >
> > === b.xsd ===
> > <?xml version = "1.0" encoding = "UTF-8"?>
> > <schema xmlns="http://www.w3.org/2001/XMLSchema";
> >        targetNamespace="http://www.q.com/XMLSchema/BIM";
> >        xmlns:qb="http://www.q.com/XMLSchema/BIM";
> >        xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> >        elementFormDefault = "qualified">
> >
> >   <complexType name="baseT">
> >     <sequence>
> >       <element name="Code" type = "string" minOccurs = "0"/>
> >     </sequence>
> >   </complexType>
> >
> > </schema>
> >
> 
> -----------------------------------------------------------
> If you wish to unsubscribe from this mailing, send mail to
> [EMAIL PROTECTED] with a subject of:
>         unsubscribe castor-dev

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to