我有一个安装了 plone.app.theming(Diazo) 的Plone 4,当我通过 Diazo 控制面板使用 zip 文件主题时遇到问题。
我曾多次尝试找出 Plone 日志中显示的错误原因:
2011-07-10 20:20:55 ERROR plone.transformchain Unexpected error whilst trying to apply transform chain
Traceback (most recent call last):
File "/opt/Plone4/buildout-cache/eggs/plone.transformchain-1.0-py2.6.egg/plone/transformchain/transformer.py", line 42, in __call__
newResult = handler.transformIterable(result, encoding)
File "/opt/Plone4/buildout-cache/eggs/plone.app.theming-1.0b8-py2.6.egg/plone/app/theming/transform.py", line 205, in transformIterable
transform = self.setupTransform()
File "/opt/Plone4/buildout-cache/eggs/plone.app.theming-1.0b8-py2.6.egg/plone/app/theming/transform.py", line 150, in setupTransform
xsl_params=xslParams,
File "/opt/Plone4/buildout-cache/eggs/diazo-1.0rc3-py2.6.egg/diazo/compiler.py", line 106, in compile_theme
read_network=read_network,
File "/opt/Plone4/buildout-cache/eggs/diazo-1.0rc3-py2.6.egg/diazo/rules.py", line 160, in process_rules
rules_doc = fixup_themes(rules_doc)
File "/opt/Plone4/buildout-cache/eggs/diazo-1.0rc3-py2.6.egg/diazo/utils.py", line 49, in __call__
result = self.xslt(*args, **kw)
File "xslt.pxi", line 568, in lxml.etree.XSLT.__call__ (src/lxml/lxml.etree.c:120289)
XSLTApplyError: xsltValueOf: text copy failed
如果你能帮助我,我将不胜感激?
提前致谢,
阿拉诺
我从Launchpad (http://launchpad.net/plone/4.1/4.1rc3/+download/Plone-4.1rc3-UnifiedInstaller-Hotfix-20110622.tgz)下载了Plone 4.1安装器,然后重新安装Plone 4。提到的问题确实发生了.重氮在一段时间内效果很好。
我的旧 Plone 4.1 安装是从 Plone 4.0.7 安装升级的,安装的软件包中存在任何冲突或类似问题。
听起来你的规则文件中有一个错误的规则。备份您的规则文件,然后逐行删除直到问题消失。然后你就会知道是哪一行导致了问题。再次阅读该规则的文档,检查您是否遗漏了一些必要的部分。
我遇到了完全相同的问题和完全相同的错误消息。
这是在带有 libxml2 2.6.26 和 libxslt 1.1.17 的系统上。
将 libxml2 升级到 2.7.8 并将 libxslt 升级到 1.1.26 使消息消失,我的 Diazo 规则开始正常工作。
如果您正在使用 zc.buildout(您应该使用),您可以非常快速地使用“z3c.recipe.staticlxml”配方。只需使用以下配置将“lxml”部分添加到您的构建中:
[lxml]
recipe = z3c.recipe.staticlxml
egg = lxml
在运行构建之前删除所有现有的 lxml 蛋。
包中的错误
\lxml\xslt.pxi
可以指示xslt tempalte的错误,可以从属性transform.error_log
中提取处理错误。一个例子:
import lxml
import lxml.etree
xmlPath = '/path/data.xml'
xslPath = '/path/template.xlst'
xslRoot = lxml.etree.parse(xslPath)
transform = lxml.etree.XSLT(xslRoot)
xmlDoc = lxml.etree.parse(xmlPath)
try:
resultDoc = transform(xmlDoc)
except:
pass
for entry in transform.error_log:
print('file', entry.filename
, entry.line, entry.column, entry.message
, entry.domain_name, entry.domain)
, entry.type_name, entry.type)
, entry.level_name, entry.level)