http://www.perlmonks.org?node_id=1041109


in reply to Re: Using XML::Saxon::XSLT2 Errors
in thread Using XML::Saxon::XSLT2 Errors

It is already configurable. Look a few lines further down at the import method:

sub import { my ($class, @args) = @_; shift @args if @args && exists $args[0] && defined $args[0] && $args[0] =~ + /^[\d\.\_]{1,10}$/; Inline->import(Java => 'DATA', CLASSPATH=>$classpath, @args); }

So the CLASSPATH => $classpath can be overridden by passing arguments to import a la:

use XML::Saxon::XSLT2 CLASSPATH => "/path/to/saxonb.jar";

There is an example of providing arguments to the import method in the documentation (though not the CLASSPATH argument).

However I've not played with it much. If your application contains multiple instances of "use XML::Saxon::XSLT2" it's probably only the first one that counts. To be sure, you can supply the path on the command line like:

perl -MXML::Saxon::XSLT2=CLASSPATH,/path/to/saxonb.jar myscript.pl

PS: patches would be appreciated for this issue (or indeed for RT#66278 which is a long running one).

package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

Replies are listed 'Best First'.
Re^3: Using XML::Saxon::XSLT2 Errors
by runrig (Abbot) on Jun 28, 2013 at 21:28 UTC
    Ah, I was misled by this comment in the docs:
    It expects Saxon to be installed in either '/usr/share/java/saxon9he.jar' or '/usr/local/share/java/saxon9he.jar'.

    Anyway, I'm unlikely to submit any patches since I'm not the one trying to use the library :-)

Re^3: Using XML::Saxon::XSLT2 Errors
by Anonymous Monk on Jul 17, 2017 at 11:53 UTC
    Thanks for explaining this. But how can I install the module? The code below from Makefile.PL seems to prevent the module from installation if the jar is not in one of the preset locations.
    my %dynamic_config; do { unless (-e '/usr/share/java/saxon9he.jar' or -e '/usr/local/share/java/saxon9he.jar' or -e '/usr/share/java/saxonb.jar' or -e '/usr/local/share/java/saxonb.jar' or -e '/usr/local/share/java/classes/saxon9he.jar') { warn "Need saxon9he.jar or saxonb.jar to be installed in /usr/shar +e/java or /usr/local/share/java or /usr/local/share/java/classes."; exit 0; }

      Edit the Makefile.PL and then install it?