Hi Webb,

As I understand it, relative URIs are relative to the resource in which
they are referenced (that's not necessarily the resource in which they're
declared), so if you're referencing schema 2 from schema 1, the URI for
schema 2 is relative to schema 1, not your instance document.

Also, DefaultHandler is just a convenience class. It's methods return
null, or are no-ops, so thus the entity resolver method of this class does
nothing. You have to extend DefaultHandler, and write an implementation
for resolveEntity if you want it to do more than that.

I hope that helps.

On Fri, 20 Jun 2003, Webb Roberts wrote:

> 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]
>
>

--------------------
Michael Glavassevich
[EMAIL PROTECTED]

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

Reply via email to