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.

Qualquer comentário sobre suas experiências serão bem-vindos.

Foi útil?

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:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top