在旧系统上使用PerlXML::LibXML向XML添加样式表

在旧系统上使用PerlXML::LibXML向XML添加样式表,xml,perl,xslt,Xml,Perl,Xslt,我试图将样式表直接添加到由perl生成的XML中 使用来自的信息,我能够让它在运行PerlV5.10.1的RHEL6系统上工作 但是,当我在较旧的系统(RHEL 5和perl v5.8.8)上运行它时,我的XML文件只有以下内容: <?xml-stylesheet?> 有什么想法吗?我想做一些更干净的事情,而不是让我的perl脚本在保存XMl时修改它,但是如果我不能让它工作,那可能就是我下一步要做的事情 注意:否,我无法在任何系统上更新软件:(这绝不是理想的解决方案,但在有人能给我

我试图将样式表直接添加到由perl生成的XML中

使用来自的信息,我能够让它在运行PerlV5.10.1的RHEL6系统上工作

但是,当我在较旧的系统(RHEL 5和perl v5.8.8)上运行它时,我的XML文件只有以下内容:

<?xml-stylesheet?>
有什么想法吗?我想做一些更干净的事情,而不是让我的perl脚本在保存XMl时修改它,但是如果我不能让它工作,那可能就是我下一步要做的事情


注意:否,我无法在任何系统上更新软件:(

这绝不是理想的解决方案,但在有人能给我更好的解决方案之前,它是有效的

第1部分,检查样式表字符串是否为空

if ( $xsl->toString eq "<?xml-stylesheet?>" ) { $CONFIG{'xslFixRequired'} = 1; }

您是否在两个系统上运行完全相同的文件?RHEL5系统上安装的XML::LibXML的版本是什么?是的,完全相同的文件。刚刚从我的开发工作站(RHEL 6)将其复制到磁盘上我不知道安装了什么版本的LibXML…我怎么看一个模块的版本?
perl-MXML::LibXML-le'print$XML::LibXML::version'
你从
print$xsl->toString,“\n”
@choroba LibXML version 1.58在RHEL 5系统上,version 1.7在RHEL 6上得到了什么结果
if ( $xsl->toString eq "<?xml-stylesheet?>" ) { $CONFIG{'xslFixRequired'} = 1; }
my $FinalXML = $XML->toString($XMLFormat);

if ( $CONFIG{'xslFixRequired'} ) {
  $FinalXML =~ s/xml-stylesheet/xml-stylesheet type="text\/xsl" href="$CONFIG{'XML'}{'Stylesheet'}"/;
}