I think the problem is that you're setting the schema location property twice 
instead of just once with a string of the form: "<schema-ns> <location> 
<schema-ns> <location>"...

        -----Original Message----- 
        From: Howard Roberts [mailto:[EMAIL PROTECTED] 
        Sent: Thu 28/07/2005 09:36 
        To: [email protected] 
        Cc: 
        Subject: importing schemas
        
        

        Hi there,
        
        I'm having trouble importing multiple schemas for a project I'm working
        on.
        
        The main schema starts as below:
        
        <xs:schema targetNamespace="http://www.foo.com/xml";
        xmlns:imp="http://www.import.com/xml";
        xmlns:xs="http://www.w3.org/2001/XMLSchema";
        xmlns="http://www.foo.com/xml"; elementFormDefault="qualified">
        
        <xs:import namespace="http://www.w3.org/XML/1998/namespace";
        schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
        <xs:import namespace="http://www.import.com/xml";
        schemaLocation="http://www.import.com/schemas/xmls/importedSchema.xsd"/>
        
        ...
        
        </xs:schema>
        
        
        importedSchema.xsd also imports a schema:
        
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
                   xmlns="http://www.import.com/xml";
                   targetNamespace="http://www.import.com/xml";
                   elementFormDefault="qualified"
                   attributeFormDefault="unqualified">
        
          <xs:import namespace="http://www.w3.org/XML/1998/namespace";
                     schemaLocation="http://www.w3.org/2001/03/xml.xsd";>
          </xs:import>
        
        
        The application parsing instance documents does not have visibility of
        any of these schemas on the internet. I set the parser to reference
        local copies as below:
        
        saxReader.setFeature("http://apache.org/xml/features/validation/schema";,
        true);
        saxReader.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLan
        guage",
                         "http://www.w3.org/2001/XMLSchema";);
        saxReader.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSou
        rce",
                         mainSchema.getPath());
        saxReader.setProperty("http://apache.org/xml/properties/schema/external-
        schemaLocation",
                                 "http://www.w3.org/XML/1998/namespace"; + " " +
        xmlLangSchema.getPath());
        saxReader.setProperty("http://apache.org/xml/properties/schema/external-
        schemaLocation",
                                 "http://www.import.com/xml"; + " " +
        importedSchema.getPath());
        
        
        (where saxReader is a org.dom4j.io.SAXReader)
        
        Xerces has 2 external-schemaLocation properties set. As I've illustrated
        there are three import statements: two in the main schema document and
        one in importedSchema. It seems xerces correctly ignores the urls of the
        import statements of the main schema and uses the file system version as
        instructed, but it looks like xerces is not doing the same for the
        imported schema. Therefore, when my application attempts to parse an
        instance document the error below is found.
        
        Is this a bug in xerces, am I missing something/made a mistake, or is
        this how imported schemas are meant to work? I'm using xerces v2.6.2.
        
        Thanks in advance for any help,
        
        Howard.
        
        
        org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name
        'xml:lang' to a(n) 'attribute declaration' component.
                at
        com.foo.app.tv.xml.ErrorHandlerImpl.error(ErrorHandlerImpl.java:29)
                at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown
        Source)
                at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown
        Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDHandler.reportSchemaError(Unknow
        n Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDHandler.getGlobalDecl(Unknown
        Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDAttributeTraverser.traverseLocal
        (Unknown Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDAbstractTraverser.traverseAttrsA
        ndAttrGrps(Unknown Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDComplexTypeTraverser.traverseSim
        pleContent(Unknown Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDComplexTypeTraverser.traverseCom
        plexTypeDecl(Unknown Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDComplexTypeTraverser.traverseLoc
        al(Unknown Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDElementTraverser.traverseNamedEl
        ement(Unknown Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDElementTraverser.traverseGlobal(
        Unknown Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDHandler.traverseSchemas(Unknown
        Source)
                at
        org.apache.xerces.impl.xs.traversers.XSDHandler.parseSchema(Unknown
        Source)
                at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(Unknown
        Source)
                at
        org.apache.xerces.impl.xs.XMLSchemaLoader.processJAXPSchemaSource(Unknow
        n Source)
                at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(Unknown
        Source)
                at
        org.apache.xerces.impl.xs.XMLSchemaValidator.findSchemaGrammar(Unknown
        Source)
                at
        org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown
        Source)
                at
        org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown
        Source)
                at
        org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
        Source)
                at
        org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scan
        RootElementHook(Unknown Source)
                at
        org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDis
        patcher.dispatch(Unknown Source)
                at
        org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unkno
        wn Source)
                at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
        Source)
                at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
        Source)
                at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
                at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
        Source)
        
        
        
        
        
        
        
        
        
        
        
        
        ---------------------------------------------------------------------
        To unsubscribe, e-mail: [EMAIL PROTECTED]
        For additional commands, e-mail: [EMAIL PROTECTED]
        
        

<<winmail.dat>>

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

Reply via email to