Вопрос

Мне хотелось бы знать, какой из множества XSLT-движков хорошо работает с Perl.

Я буду использовать Apache (2.0) и Perl и хочу получить файлы PDF и XHTML.

Я новичок в такого рода проектах, поэтому любые комментарии и предложения будут приветствоваться.

Спасибо.


Выполняя простой поиск в Google, я нашел много, и я предполагаю, что их гораздо больше.

Любые комментарии о вашем опыте будут приветствоваться.

Это было полезно?

Решение

Первая ошибка - поиск на CPAN, а не Гугл :)

Это дает кучу результатов, но скорее подчеркивает проблему CPAN, заключающуюся в том, что существует более одного решения, и не всегда ясно, какие из них работают, были заброшены, сломаны, медленны или что-то в этом роде.

И что тревожно, лучший ответ (или, по крайней мере, один из лучших) появляется на странице. четыре результатов :( Как предположили другие люди, 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, который, по сути, просто оборачивает вышеописанное в один вызов метода (и делает кучу умных вещей за кулисами, используя лось.Проверьте источник образования!).

  use XML::LibXSLT::Easy;

  my $p = XML::LibXSLT::Easy->new;

  my $output = $p->process( xml => "foo.xml", xsl => "foo.xsl" );

Другие советы

Пока что я очень доволен XML::LibXML для задач, не связанных с xslt, и его документация указывает на XML::LibXSLT, что выглядит довольно красиво, но у меня пока нет опыта работы с этим

Не могу сказать, какое решение является лучшим, потому что у меня не было возможности попробовать их все.
Но я могу порекомендовать вам попробовать модуль Perl. LibXSLT.
Это интерфейс библиотеки gnome libxslt.Я использовал его в одном из своих недавних проектов и остался им доволен.

Вы не говорите какая ОС, но для большинства *nix платформ, XML::LibXML будет самым простым в использовании и установке.

Вот несколько библиотек Perl, призванных заменить XSLT:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top