Qual é o melhor motor de XSLT para Perl?
Pergunta
Gostaria de saber o que de muitos motores de XSLT lá fora funciona bem com Perl.
Vou usar Apache (2.0) e Perl, e eu quero obter PDFs e XHTMLs.
Eu sou novo para este tipo de projectos de modo que qualquer comentário ou sugestão será bem-vinda.
Graças.
Fazendo uma simples pesquisa no Google eu encontrei um monte e eu suponho que existem para muitos mais.
- http://www.mod-xslt2.com/
- http://xml.apache.org/xalan-j/
- http://saxon.sourceforge.net/
- http://www.dopscripts.com/xslt_parser.html
Qualquer comentário sobre suas experiências serão bem-vindos.
Solução
Primeiro erro - procurar no CPAN , não Google:)
Isso gera um monte de resultados, mas que em vez destacar o problema do CPAN, que há mais de uma solução, e nem sempre está claro quais trabalho, foram abandonados, estão quebrados, lento ou o que quer.
E perturbadoramente, a melhor resposta (ou, pelo menos, um dos melhores) surge na página quatro dos resultados :( Como outras pessoas têm sugerido, XML :: libxslt é robusto e faz o trabalho:
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);
Se você quer resultados de saída para um arquivo, em seguida, adicione
#create output file
open(my $output_xml_file_name, '>', 'test.xml');
print $output_xml_file_name "$results";
Se você não quer fazer nada extravagante, porém, há XML: : libxslt :: Fácil , que essencialmente apenas envolve a chamada acima em um método (e faz um monte de coisas inteligente nos bastidores usando Moose . Verifique a fonte de uma educação!).
use XML::LibXSLT::Easy;
my $p = XML::LibXSLT::Easy->new;
my $output = $p->process( xml => "foo.xml", xsl => "foo.xsl" );
Outras dicas
Até agora eu estou muito satisfeito com XML :: LibXML para não tarefas -xslt, e seus pontos de documentação para XML :: libxslt , o que parece bastante bom, mas eu não tenho nenhuma experiência com ele até agora
Não realmente dizer qual é a melhor solução, porque eu não tive a oportunidade de experimentar todos eles.
Mas eu recomendo que você pode tentar Perl módulo libxslt .
É uma interface para a biblioteca gnome libxslt. Usei-o em um dos meu projeto recente foi satisfeito com ele.
Você não diz qual sistema operacional, mas para a maioria das plataformas * nix, XML :: LibXML vai ser o mais fácil de usar e instalar.
Aqui estão algumas bibliotecas Perl destina a substituir XSLT: