最初の間違い - Google ではなくCPAN で検索してください :)
これにより、一連の結果が表示されますが、複数の解決策があり、どの解決策が機能するか、放棄されたか、壊れているか、遅いかなど、常に明確ではないという CPAN の問題が浮き彫りになります。
そして気がかりなことに、最良の答え (または少なくとも最良の答えの 1 つ) が結果の4ページ目に表示されます:( 他の人々が示唆しているように、XML::LibXSLTは堅牢であり、仕事をします:
use XML::LibXSLT;
use XML::LibXML;
my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();
my $source = $parser->parse_file('foo.xml');
my $style_doc = $parser->parse_file('bar.xsl');
my $stylesheet = $xslt->parse_stylesheet($style_doc);
my $results = $stylesheet->transform($source);
print $stylesheet->output_string($results);
結果をファイルに出力する場合は、これを追加します
#create output file
open(my $output_xml_file_name, '>', 'test.xml');
print $output_xml_file_name "$results";
ただし、派手なことをしたくない場合は、XML::LibXSLT::Easyがあります。これは、基本的に上記を 1 つのメソッド呼び出しでラップするだけです (そして、 Mooseを使用して舞台裏で多くの巧妙なことを行います。ソースを確認してください)教育!)。
use XML::LibXSLT::Easy;
my $p = XML::LibXSLT::Easy->new;
my $output = $p->process( xml => "foo.xml", xsl => "foo.xsl" );