NAME XML::Saxon::XSLT2 - process XSLT 2.0 using Saxon 9.x. SYNOPSIS use XML::Saxon::XSLT2; # make sure to open filehandle in right encoding open(my $input, '<:encoding(UTF-8)', 'path/to/xml') or die $!; open(my $xslt, '<:encoding(UTF-8)', 'path/to/xslt') or die $!; my $trans = XML::Saxon::XSLT2->new($xslt, $baseurl); my $output = $trans->transform($input); print $output; my $output2 = $trans->transform_document($input); my @paragraphs = $output2->getElementsByTagName('p'); DESCRIPTION This module implements XSLT 1.0 and 2.0 using Saxon 9.x via Inline::Java. It expects Saxon to be installed in either '/usr/share/java/saxon9he.jar' or '/usr/local/share/java/saxon9he.jar'. Future versions should be more flexible. The saxon9he.jar file can be found at - just dowload the latest Java release of Saxon-HE 9.x, open the Zip archive, extract saxon9he.jar and save it to one of the two directories above. Use Line use XML::Saxon::XSLT2; You can include additional parameters which will be passed straight on to Inline::Java, like this: use XML::Saxon::XSLT2 EXTRA_JAVA_ARGS => '-Xmx256m'; Constructor "XML::Saxon::XSLT2->new($xslt, [$baseurl])" Creates a new transformation. $xslt may be a string, a file handle or an XML::LibXML::Document. $baseurl is an optional base URL for resolving relative URL references in, for instance, links. Otherwise, the current directory is assumed to be the base. Methods "$trans->parameters($key=>$value, $key2=>$value2, ...)" Sets transformation parameters prior to running the transformation. Each key is a parameter name. Each value is the parameter value. This may be a scalar, in which case it's treated as an xs:string; a DateTime object, which is treated as an xs:dateTime; a URI object, xs:anyURI; a Math::BigInt, xs:long; or an arrayref where the first element is the type and the second the value. For example: $trans->parameters( now => DateTime->now, madrid_is_capital_of_spain => [ boolean => 1 ], price_of_fish => [ decimal => '1.99' ], my_link => URI->new('http://example.com/'), your_link => [ uri => 'http://example.net/' ], ); The following types are supported via the arrayref notation: float, double, long (alias int, integer), decimal, bool (alias boolean), string, qname, uri, date, datetime. These are case-insensitive. "$trans->transform($doc, [$output_method])" Run a transformation, returning the output as a string. $doc may be a string, a file handle or an XML::LibXML::Document. $output_method may be 'xml', 'xhtml', 'html' or 'text' to override the XSLT output method. "$trans->transform_document($doc, [$output_method])" Run a transformation, returning the output as an XML::LibXML::Document. $doc may be a string, a file handle or an XML::LibXML::Document. $output_method may be 'xml', 'xhtml', 'html' or 'text' to override the XSLT output method. This method is slower than "transform". "$trans->messages" Returns a list of string representations of messages output by during the last transformation run. "$trans->media_type($default)" Returns the output media type for the transformation. If the transformation doesn't specify an output type, returns the default. "$trans->doctype_public($default)" Returns the output DOCTYPE public identifier for the transformation. If the transformation doesn't specify a doctype, returns the default. "$trans->doctype_system($default)" Returns the output DOCTYPE system identifier for the transformation. If the transformation doesn't specify a doctype, returns the default. "$trans->version($default)" Returns the output XML version for the transformation. If the transformation doesn't specify a version, returns the default. "$trans->encoding($default)" Returns the output encoding for the transformation. If the transformation doesn't specify an encoding, returns the default. BUGS Please report any bugs to . SEE ALSO XML::LibXSLT is probably more reliable, and allows you to define your own XSLT extension functions. However, the libxslt library that it's based on only supports XSLT 1.0. Inline::Java. . AUTHOR Toby Inkster . COPYRIGHT Copyright 2010-2011 Toby Inkster This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.