I am running up against some strange behavior from Xerces-java 2.4.0.
Basically, I am specifying schema locations with an attribute in the XML instance, and it is not resolving the locations of the schemas as I would expect. I have the following files:
./instance-fails.xml ./instance-validates.xml ./xsd/schema1.xsd ./xsd/schema2.xsd
Schema 1 references schema 2 via an import with no schemaLocation. The instance that I would expect to validate follows (instance-fails.xml):
<s1:document
xmlns:s1='http://something.com/schema1'
xmlns:s2='http://something.com/schema2'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://something.com/schema1 xsd/schema1.xsd
http://something.com/schema2 xsd/schema2.xsd'>
<s2:document/>
</s1:document>But, that one gives me the error:
WARNING in parsing file "file:///..../xsd/schema1.xsd", line 5 src-import.0: Failed to read imported schema document 'xsd/schema2.xsd'.
However, if the instance is modified as follows (instance-validates.xml):
<s1:document
xmlns:s1='http://something.com/schema1'
xmlns:s2='http://something.com/schema2'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://something.com/schema1 xsd/schema1.xsd
http://something.com/schema2 schema2.xsd'>
<s2:document/>
</s1:document>It validates. It seems that the filename for schema2 has to be relative to schema1, instead of relative to the XML instance. The only change is the filename for schema2.
Schema 1 is (xsd/schema1.xsd):
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace='http://something.com/schema1' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:s2='http://something.com/schema2'> <xsd:import namespace='http://something.com/schema2'/> <xsd:element name="document"> <xsd:complexType> <xsd:sequence> <xsd:element ref='s2:document'/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
Schema 2 is (xsd/schema2.xsd):
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema targetNamespace='http://something.com/schema2' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> <xsd:element name="document"/> </xsd:schema>
The validator I am using is available, as a source and compiled Jar, from http://justicexml.gtri.gatech.edu/tools/index.html. It is using the EntityResolver from org.xml.sax.helpers.DefaultHandler.
Thanks, Webb
--
Oh, this is the best pizza in a cup ever. This guy is unbelievable. He ran the old Cup 'o Pizza guy out of business. People come from all over to eat this.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
