Why don't you do: System.out.println(getServletContext().getRealPath(XML_WORK_PATH));
And see what it tells you. I'd be curious to see what you're passing to the StreamSource constructor, and how it differs from my string. Jay -----Original Message----- From: Franklin Phan [mailto:[EMAIL PROTECTED] Sent: Thursday, August 25, 2005 4:52 PM To: Tomcat Users List Subject: Re: Malformed URL Exception: unknown protocol: c To make things a bit more puzzling, I have a different app inside the same Tomcat 4.1.18 that uses the same XSL Transform class under its own web app context. That app works without a hitch. Why is that? Jay Burgess wrote: > First, I assume you mean CLASSPATH and /lib, or PATH and /bin, but not > CLASSPATH > and /bin? > > Second, your situation has me puzzled. Mark's answer appears correct, as > "unknown protocol: c" is typically the "C:\" of a Windows filesystem path. > And > checking the documentation, StreamSource requires a URI, so a windows > filesystem > path won't work. > > However...my code does something very similar, and it works. The only > difference > is that I'm doing it for a StreamResult, not a StreamSource: > > String root = getServletContext().getRealPath(""); > String xmlFileName = root + File.separator + "WEB-INF" + > File.separator + "TestData.xml"; > TransformerFactory.newInstance().newTransformer().transform( > new DOMSource(buffer), > new StreamResult(xmlFileName)); // DOM into XML > > I just threw in a quick println(), and "xmlFileName" is equal to > "C:\tomcat-5.0.19\webapps\TestApp\WEB-INF\TestData.xml". > > Can anyone explain why mine works and Franklin's fails? Maybe I'm missing > something obvious. > > Jay > > | Jay Burgess [Vertical Technology Group] > | "Essential Technology Links" > | http://www.vtgroup.com/ > > > -----Original Message----- > From: Mark Thomas [mailto:[EMAIL PROTECTED] > Sent: Thursday, August 25, 2005 4:21 PM > To: Tomcat Users List > Subject: Re: Malformed URL Exception: unknown protocol: c > > I assume becuase the url you pass it starts c:\ as that is the start > of the XML_WORK_PATH. You need to prefix it with file:/// (or however > many slashes you need to get this to work in windows). > > Mark > > Franklin Phan wrote: > >>I use Windows XP Pro. My JAVA_HOME environment variable points to >>c:\j2sdk1.4.2_05. The CLASSPATH is set to have as the first element >>"%JAVA_HOME%\bin". I've written an XSL Transform servlet that makes use >>of the package javax.xml.transform. Why do I get the following error: >> >>javax.servlet.ServletException: >>javax.xml.transform.TransformerConfigurationException: >>javax.xml.transform.TransformerException: >>java.net.MalformedURLException: unknown protocol: c >> >>The four lines above actually appear altogether in one line. And the >>error appears to be due to the following piece of code where I'm trying >>to get the path to a folder on the local drive to access a file: >> >>String XML_WORK_PATH = "/WEB-INF/work_xml"; >>TransformerFactory tFactory = TransformerFactory.newInstance(); >>Transformer transformer = >> tFactory.newTransformer(new >> > > javax.xml.transform.stream.StreamSource(getServletContext().getRealPath(XML_WORK_PATH) > > >>+ "\\" + xslParam)); //xslParam is an XSL file name >> >> >>The Malformed URL Exception does not occur on another machine running >>Windows XP Server. >> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]