Last version: https://gist.github.com/1053576
sub TransformWithArgs {my ( $xsltFile , $xmlFile , $argsHash ) = @_ ;
my $template = Win32:: OLE -> new ( 'MSXML2.XSLTemplate.4.0' )or die "Couldn't create MSXML2.XSLTemplate object.\n" ;
my $xsltDoc = Win32:: OLE -> new ( 'MSXML2.FreeThreadedDOMDocument.4.0' )or die "Couldn't create MSXML2.FreeThreadedDOMDocument.4.0 object.\n " ;
$xsltDoc -> { async } = "false" ;$xsltDoc -> { resolveExternals } = "false" ;$xsltDoc -> load ( $xsltFile );
$template -> { stylesheet } = $xsltDoc ;
my $xsltProc = $template -> createProcessor ();
my $xmlDoc = Win32:: OLE -> new ( "Msxml2.DOMDocument.4.0" );$xmlDoc -> load ( $xmlFile );$xmlDoc || die "Failed to load $xmlFile\n" ;
# Note: ? The code can not work here: $xsltProc->{input} = $docXhtml;$xsltProc -> LetProperty ( 'input' , $xmlDoc );
# Add parametes of XSLTforeach my $key ( keys %$argsHash ) {$xsltProc -> addParameter ( $key , $argsHash -> { $key });}
$xsltProc -> transform () or die "Faied to transform.\n" ;my $result = $xsltProc -> { output };
$result ;}