[xsl] "Illegal character in authority" error running java Saxon under Windows

Subject: [xsl] "Illegal character in authority" error running java Saxon under Windows
From: "Sam Wilmott" <sam@xxxxxxxxxx>
Date: Tue, 19 Feb 2008 23:13:55 -0500
I'm using the Java version of Saxon-B 8.9 and Saxon-B 9.0.02 on both Mac OS X 10.5 and Windows XP Pro for processing XML documents using XSLT 2.0. I'm running Saxon in command-line form in both cases (CMD in Windows and Terminal in Mac OS).

I'm having a problem with an input XML document whose DTD contains an NDATA entity declared like this:

<!ENTITY xxxxx PUBLIC "-//xxxxxx//XXXX xxxxxx//EN"
"//xx-xxx-xxxxxx x/xxxxx/xxx/xxx/xxxxxx/xxxxxxx/xxxx/xxxxx/xxxxxx/xxxxxxxxxxxx.jpg"
NDATA XXXX>


whose name is used as the value of an attribute that's declared like this:

entname ENTITY #REQUIRED

e.g. it's used like this:

<xxx entname="xxxxx"/>

The XSLT 2.0 script runs just fine under Mac OS, but under Windows the program terminates with an error message like this (I've stripped out a long list of nested method names, but that's all):

java.lang.IllegalArgumentException
at ...
Caused by: java.net.URISyntaxException: Illegal character in authority at index 2: //xx-xxx-xxxxxx x/xxxxx/xxx/xxx/xxxxxx/xxxxxxx/xxxx/xxxxx/xxxxxx/xxxxxxxxxxxx.jpg
at ...
Fatal error during transformation: java.lang.IllegalArgumentException: (no message)



Note that there's a space in the SYSTEM name of the entity. If I remove it, the XSLT script runs just fine. So it looks like the space is the "Illegal character".


Does anyone know what's going on here? Most importantly, I would like to process documents with entity declarations like the above without having to change the source XML documents by removing spaces in entity SYSTEM names. Is there a way of doing that?

------------
Sam Wilmott
sam@xxxxxxxxxx
www.wilmott.ca


Current Thread