You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Daniel Rabe <dr...@Eloquent.com> on 2003/03/04 04:06:04 UTC

Problem with spaces in directory paths

We're running into a problem using Xerces/Xalan when our XSL files reside in
a directory that contains a space in the name (like "Program Files"). The
problem seems to happen when the following conditions are met:

- The XSL file uses the document() function to load a secondary XML file (in
this case, localization strings). The secondary XML file gets loaded okay.

- The secondary XML file contains entities to load other XML files, for
example:
<!ENTITY english SYSTEM "test_msg_en.xml">
... later referenced as...
&english;

If the XML and XSL files are all in directories that don't have spaces,
everything works fine... but when you ship a product like ours, it's
typically installed into "Program Files". 

The error is
javax.xml.transform.TransformerException: java.net.MalformedURLException: no
protocol: test_msg_en.xml

I've been able to duplicate a very similar problem using the
org.apache.xalan.xslt.Process class from the command line.
The command line I'm using is:
%JAVA_HOME%\bin\java -showversion org.apache.xalan.xslt.Process -in test.xml
-xsl "sub dir\test.xsl"

In this scenario, "test.xml" is in the current working directory (which
contains no spaces in its path), and "test.xsl" and its associated files are
in the subdirectory "sub dir". If I use "subdir" (no spaces), everything
works fine. I've tried using "sub+dir" and "sub%20dir", but none of those
work.

This sample scenario is a little different from our original code because
it's not trying to resolve the entity (the &english from above), so I'm not
sure it's going through the same code path... however, any insight into how
to work around this problem would be appreciated.

The specific error in this case is:
(Location of error unknown)XSLT Error
(javax.xml.transform.TransformerConfigurationException):
javax.xml.transform.TransformerException: java.net.MalformedURLException: no
protocol: sub dir\test.xsl

Config info:
Xerces-J 2.2.1 and Xalan 2.4.1 on Windows 2000 or Windows XP.

Thanks!
Daniel Rabe