Relative path in multiple import/include failed when reading a schema
---------------------------------------------------------------------

                 Key: XMLSCHEMA-8
                 URL: https://issues.apache.org/jira/browse/XMLSCHEMA-8
             Project: XmlSchema
          Issue Type: Bug
    Affects Versions: XmlSchema 1.4.7
            Reporter: Jemini Sam


When we want to load a schema with import/include on cascade, if the 
*schemaLocation* is a relative path, the *SchemaBuilder* class fails to find 
schemas which aren't in the same directory of the schema to load.

For example, if we have 3 schemas :
- s1.xsd in directory a/b/c which imports s2.xsd in a/b
- and s2.xsd which includes or imports s3.xsd in the same directory

a/b/c/s1.xsd
a/b/s2.xsd
a/b/s3.xsd

And we want to read the schema s1.xsd :
{code}
String sourceXSD = "resources/schemas/a/b/c/s1.xsd";
InputStream is;
try {
        is = new FileInputStream(sourceXSD);
        XmlSchemaCollection schemaCol = new XmlSchemaCollection();
        schemaCol.setBaseUri(new File(sourceXSD).getParent().replaceAll("\\\\", 
"/"));
        DefaultURIResolver schemaResolver = (DefaultURIResolver) 
schemaCol.getSchemaResolver();
        System.out.println("schemaResolver.toString(): " + 
schemaResolver.getCollectionBaseURI());
        XmlSchema schema = schemaCol.read(new StreamSource(is), null);
} catch (FileNotFoundException e) {
        e.printStackTrace();
}
{code}

We have an exception on s3.xsd schema which is not found in directory a/b/c.

See the sources of the example attached.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to