Listing 1
import java.io.*;
import javax.servlet.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
public class ServletContextURIResolver implements URIResolver {
private String realPath = "";
public ServletContextURIResolver(ServletContext context, String virtualPath) {
this.realPath = context.getRealPath(virtualPath);
}
public Source resolve(String href, String base) throws TransformerException {
try {
return new StreamSource(new File(this.realPath + href));
} catch (Throwable t) { /* do nothing */ }
return null;
}
}
Listing 2
public Source resolve(String href, String base) throws TransformerException {
IKeyParser parser = getKeyParser();
URIResolver resolver = null;
try {
resolver = getFactory().create(parser.getKey(href, base));
} catch (Throwable t) {
try {
resolver = getFactory().createDefault();
} catch (CreationException ex) {
throw new TransformerException(ex);
}
}
return resolver.resolve(parser.getHref(href, base), parser.getBase(href, base));
}
Listing 3
TransformerFactory tFactory = TransformerFactory.newInstance();
ServletContext sContext = getServletContext();
URIResolver dResolver = new ServletContextURIResovler(sContext);
IURIResolverBuilder dBuilder = new SingleInstanceURIResolverBuilder(dResolver);
BuilderURIResolverFactory dFactory = new BuilderURIResolverFactory(dBuilder);
URIResolver rsResolver = new RemoteStyleURIResolver("http://www.crosslogic.com");
dFactory.addBuilder("remote:style", new SingleInstanceURIResolverBuilder(rsResolver));
factory.setURIResolver(new DispatchingURIResolver(dFactory));