我想知道Perl中很多XSLT引擎都能很好地工作。
我将使用Apache(2.0)和Perl,我想获取PDF和XHTML。
我是这类项目的新手,所以欢迎任何评论或建议。
感谢。
在Google上进行简单搜索我发现了很多,我想还有更多。
欢迎任何关于您的经历的评论。
答案 0 :(得分:28)
第一个错误 - search on CPAN,而不是Google:)
这引发了一系列结果,但确实突出了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,它基本上只是在一个方法调用中包含上述内容(并使用Moose在幕后做一堆聪明的东西检查教育来源!)。
use XML::LibXSLT::Easy;
my $p = XML::LibXSLT::Easy->new;
my $output = $p->process( xml => "foo.xml", xsl => "foo.xsl" );
答案 1 :(得分:4)
到目前为止,我对非{xslt任务的XML::LibXML非常满意,其文档指向XML::LibXSLT,看起来相当不错,但到目前为止我还没有使用它的经验
答案 2 :(得分:3)
真的不能说哪个是最好的解决方案,因为我没有机会全部尝试。
但我可以建议你试试Perl模块LibXSLT
它是gnome libxslt库的接口。我在最近的一个项目中使用它对它感到满意。
答案 3 :(得分:0)
你没有说什么操作系统,但对于大多数* nix平台,XML::LibXML将是最容易使用和安装。
答案 4 :(得分:0)
以下是一些旨在取代XSLT的Perl库: