【问题标题】:Adding stylesheet to XML using Perl XML::LibXML on older system在旧系统上使用 Perl XML::LibXML 将样式表添加到 XML
【发布时间】:2016-01-14 21:44:25
【问题描述】:

我正在尝试将样式表直接添加到由 perl 生成的 XML 中。

使用来自this topic 的信息,我能够让它在运行 perl v5.10.1 的 RHEL 6 系统上运行。

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

<?xml-stylesheet?>

用于生成 XML 的代码

# Start XML Handling
use XML::LibXML;
my $XML = XML::LibXML::Document->new('1.0', 'utf-8');

# Add the lines for the stylesheet
my $xsl = $XML->createProcessingInstruction("xml-stylesheet");
$xsl->setData(type => 'text/xsl', href => $CONFIG{'XML'}{'Stylesheet'});
$XML->appendChild($xsl);

有什么想法吗?我想做一些比让我的 perl 脚本在 XMl 保存时修改它更干净的事情,但如果我不能让它工作,那可能就是我接下来要去的地方。

附:不,我无法更新任何系统上的软件。 :(

【问题讨论】:

  • 您是否在两个系统上运行完全相同的文件?您的 RHEL5 系统上安装的 XML::LibXML 版本是什么?
  • 是的,完全相同的文件。刚刚将它从我的开发工作站 (RHEL 6) 复制到磁盘,并在今天早上将它放在 RHEL 5 盒子上。不知道安装的是什么版本的LibXML……如何查看模块的版本?
  • perl -MXML::LibXML -le 'print $XML::LibXML::VERSION'
  • 你从print $xsl-&gt;toString, "\n"得到什么结果
  • @choroba LibXML 1.58 版在 RHEL 5 系统上,1.7 版在 RHEL 6 上

标签: xml perl xslt


【解决方案1】:

这绝不是理想的解决方案,但在有人能给我一个更好的解决方案之前它会起作用。

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

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

第 2 部分,在脚本末尾,在保存 XML 之前,我搜索替换字符串

my $FinalXML = $XML->toString($XMLFormat);

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

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多