Hi, I've slightly modified org.apache.fop.app.InputHandler.fileInputSource so that it works with UNC names under Windows, such as "//host/resource/file". The problem is caused by the use of java.net.URL. Consider this example: new java.net.URL("file", null, "//host/resource/file").toString() that returns the string "file://host/resource/file" instead of the right one: "file:////host/resource/file".
I've attached the patched InputHandler.java, from FOP 0.20.3. Regards, Alberto.
/* * $Id: InputHandler.java,v 1.5 2001/08/14 08:50:47 keiron Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. */ package org.apache.fop.apps; // SAX import org.xml.sax.InputSource; import org.xml.sax.XMLReader; // Java import java.net.URL; import java.io.File; // FOP import org.apache.fop.messaging.MessageHandler; import org.apache.fop.configuration.Configuration; abstract public class InputHandler { abstract public InputSource getInputSource(); abstract public XMLReader getParser() throws FOPException; static public InputSource urlInputSource(URL url) { return new InputSource(url.toString()); } /** * create an InputSource from a File * * @param file the File * @return the InputSource created */ static public InputSource fileInputSource(File file) { /* this code adapted from James Clark's in XT */ boolean isUNC = false; String path = file.getAbsolutePath(); String fSep = System.getProperty("file.separator"); if (fSep != null && fSep.length() == 1) { path = path.replace(fSep.charAt(0), '/'); isUNC = path.startsWith("//"); } if (path.length() > 0 && path.charAt(0) != '/') path = '/' + path; try { path = new URL("file", null, path).toString(); } catch (java.net.MalformedURLException e) { throw new Error("unexpected MalformedURLException"); } if (isUNC) path = "file://" + path.substring(5, path.length()); return new InputSource(path); } /** * creates a SAX parser, using the value of org.xml.sax.parser * defaulting to org.apache.xerces.parsers.SAXParser * * @return the created SAX parser */ protected static XMLReader createParser() throws FOPException { String parserClassName = Driver.getParserClassName(); MessageHandler.logln("using SAX parser " + parserClassName); try { return (XMLReader)Class.forName(parserClassName).newInstance(); } catch (ClassNotFoundException e) { throw new FOPException(e); } catch (InstantiationException e) { throw new FOPException("Could not instantiate " + parserClassName, e); } catch (IllegalAccessException e) { throw new FOPException("Could not access " + parserClassName, e); } catch (ClassCastException e) { throw new FOPException(parserClassName + " is not a SAX driver", e); } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]