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]



Reply via email to