On Jan 2, 2007, at 7:58 AM, Dominique Devienne wrote:

On 12/30/06, Trevor Harmon <[EMAIL PROTECTED]> wrote:
I'm trying to use Saxon instead of the built-in Xalan processor for
the Xslt task. Supposedly, all I have to do is specify a classpath
when calling the task [1], but I've never been able to get this to
work. Ant always finds the built-in processor in its lib directory.

Using the excellent Saxon XSLT processor with Ant is discussed in Ant Wiki.

There's a bug on that page: ${antHome} should be ${ant.home}. But it's not necessary to specify ant-trax.jar in the classpath anyway.

To answer Jay, Ant uses the JDK-provided TraX API to locate an XSLT
processor, which obeys the discovery rules prescribed by TraX. In
short, if Saxon is first in the classpath, it should be the processor
picked up by default.

This is exactly what was causing my problem. Turns out xalan-j was already on my CLASSPATH environment variable, so Ant was always finding it first, no matter what I specified in the classpath attribute of Xslt. Ugh...classpath hell...

Unfortunately, it's not so easy to fix this because I use Fink, and its ant-optional package, which is required for any of Ant's optional tasks, depends on xalan-j.

Using an explicit factory overrides this default behavior. --DD

Okay, that should fix my Fink problem, except I can't get it to work. I've created a test case that's just like the Ant Wiki code, except I've specified net.sf.saxon.TransformerFactoryImpl in the <factory> element. But when I do that, I always get java.lang.ClassNotFoundException. I can work around it by explicitly putting Saxon's JAR in the -lib command-line parameter, or in my CLASSPATH environment variable, but then that defeats the whole point of a factory override.

Here's the test case:

http://vocaro.com/trevor/files/saxon-test.zip

How do I get the override behavior you describe, instead of a ClassNotFoundException? I'm using Ant 1.7.0. Thanks,

Trevor


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to