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]