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]

Reply via email to