perl – XML :: LibXSLT间歇性地引发样式表编译错误
我有一套以前工作正常的XSLT样式表.最近,一位开发人员将我们的Perl升级到了更新的版本.从那时起,我们一直在获得间歇性的样式表编译错误,其中定义了EXSLT函数.
以下是错误的示例:
该变量在EXSLT函数中定义.一旦收到错误,每次我尝试访问我的网页时都会收到错误,直到我重新启动Apache(与mod_perl一起使用).重新启动后,我可以调用XML :: LibXSLT和EXSLT函数的网页正常显示,但重新加载页面将再次触发错误. 阅读XML :: LibXSLT文档后,我确认HAVE_EXSLT()函数返回值1.我当前的XML :: LibXSLT版本是1.79.我的LibXSLT DLL是1.1.28.我的perl版本是5.14.3.以前的版本分别是5.8.8,1.66和1.1.22. 为什么我以前没有看到这些错误?下面是样式表中引发编译错误的开始片段.如果有任何其他有用的信息,请告诉我. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:func="http://exslt.org/functions" xmlns:dtbl="http://docbook.sourceforge.net/dtbl" extension-element-prefixes="func" exclude-result-prefixes="exsl func dtbl" version="1.0"> <func:function name="dtbl:convertLength"> <xsl:param name="arbitrary.length"/> 其他发现: 在我最初发布这个问题之后,我发现如果我使用普通的旧CGI而不是mod_perl,我根本无法重现错误.另外,我在Apache httpd.conf中找到了以下行.在评论它时,我看到错误发生的频率急剧下降,尽管它没有完全消除错误. PerlModule XML::LibXSLT; 解决方法
从经验mod_perl做了很多有趣的事情,例如JSON :: XS在mod_perl下工作很糟糕并导致严重的内存泄漏卡住进程,所以我转移到JSON :: Tiny这是一个原生的简单代码 – mod_perl可以处理
我有一种感觉,XML :: LibXSLT有同样的问题,我将我的代码从XML :: LibXSLT迁移到使用本机xsltproc因为这个原因,是的,它需要产生,但是如果你做得对,那么开销并不会更糟你现在在做什么,而且更稳定 所以我的建议是从XML :: LibXSLT转移到xsltproc(二进制),我在mod_perl下使用没有问题,或者找到一些其他库来为你做XSLT转换(也许是FOP?) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |