sunfull 发表于 2017-5-19 09:38:19

A perl script for XSLT using MSXML

  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 XSLT


foreach my $key(keys %$argsHash) {


$xsltProc->addParameter($key, $argsHash->{$key});


}




$xsltProc->transform() or die "Faied to transform.\n";


my $result = $xsltProc->{output};




$result;

}
页: [1]
查看完整版本: A perl script for XSLT using MSXML