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]
