Какой движок XSLT для Perl лучше всего?
Вопрос
Мне хотелось бы знать, какой из множества XSLT-движков хорошо работает с Perl.
Я буду использовать Apache (2.0) и Perl и хочу получить файлы PDF и XHTML.
Я новичок в такого рода проектах, поэтому любые комментарии и предложения будут приветствоваться.
Спасибо.
Выполняя простой поиск в Google, я нашел много, и я предполагаю, что их гораздо больше.
- http://www.mod-xslt2.com/
- http://xml.apache.org/xalan-j/
- http://saxon.sourceforge.net/
- http://www.dopscripts.com/xslt_parser.html
Любые комментарии о вашем опыте будут приветствоваться.
Решение
Первая ошибка - поиск на 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: