Just some further thoughts.
Your DTDResolver class is very confusing because you have publicId as both a
field in the class and as a method parameter to the resolveEntity method.
Simplify your DTDResolver class to look like this:
class DTDResolver implements EntityResolver
{
public InputSource resolveEntity (String publicId, String systemId)
{
InputStream inputStream = null;
InputSource source = null;
try
{
System.out.println("publicID is: " + publicId);
System.out.println("systemID is: " + systemId);
if(StringUtils.isNotEmpty(publicId))
{
// Next line should be the URL you actually want
URL url = new URL(publicId);
System.out.println("URL is: " + url);
inputStream = url.openStream();
System.out.println("got the inputstream");
source = new InputSource(new InputStreamReader(inputStream));
}
else
{
System.out.println("publicId is not specified!!!");
}
}
catch (Exception e)
{
System.out.println("Caught exception " + e);
e.printStackTrace();
}
}
} // end DTDResolver class
BTW, InputSource can take in the inputStream directly. No need to construct
the InputStreamReader yourself.
HTH,
Gary
> -----Original Message-----
> From: Gary L Peskin [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, December 17, 2003 11:34 AM
> To: 'Pramodh Peddi'; [EMAIL PROTECTED]
> Subject: RE: resolving DTDs while transforming
>
>
> Pramodh --
>
> The entity resolver is not called by your code but by the
> parser itself when it encounters the !DOCTYPE declaration.
> You shouldn't be calling any of the setXXX methods in
> DTDResolver yourself.
>
> Does your DTDResolver.resolveEntity method ever get called?
> Does the java statement
>
> System.out.println("publicID is: " + this.publicId);
>
> result in any output?
>
> I'd also add in a System.out.println() for the systemID.
>
> Step 1 is to determine if the method is even getting called.
> If so, we'll need to look at both arguments passed into that method.
>
> HTH,
> Gary