Ainsi parlait Edwin Goei : > Guillaume Rousse wrote: > > Hello. > > I'm trying to resolve problem concerning use of crimson with argouml. > > Latest CVS version loads document fine using xerces-j 1.4.4, but fails > > using crimson 1.1.3, with following message: "unable to resolve relative > > URI with no base URI" > > > > Here is code snipplet: > > public abstract class SAXParserBase extends HandlerBase { > > [...] > > SAXParserFactory factory = SAXParserFactory.newInstance(); > > factory.setNamespaceAware(false); > > factory.setValidating(false); > > try { > > SAXParser parser = factory.newSAXParser(); > > InputSource input = new InputSource(is); > > parser.parse(input,this); > > } > > [...] > > } > > I found that resolveEntity() callback occurs using xerces-j, but not with > > crimson. I tried to register explicitly the class as entity resolver : > > parser.getXMLReader().setEntityResolver(this); > > No more success. > > Does your instance doc contains a relative URI reference to a DTD? If > so, then the parser cannot resolve it b/c the InputSource does not have > an associated URI. You might try InputSource.setSystemID() to set the > base URI of the instance doc. The document has relative references to a dtd and other documents, but all documents comes from a compressed file, and the dtd is part of the application archive, so i doubt a SystemID() will be of any help there. The custom EntityResolver is the correct solution, but i can't understand why only xerces-j uses it, and not crimson. -- Guillaume Rousse <[EMAIL PROTECTED]> GPG key http://lis.snv.jussieu.fr/~rousse/gpgkey.html
--------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]