Plone - XSLTApplyError: xsltValueOf: копирование текста не удалось
У меня установлен Plone 4 с установленным plone.app.theming(Diazo), и у меня возникают проблемы при использовании темы zip-файла через панель управления Diazo.
Я много раз пытался определить причину ошибки, показанной в журнале 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
Я был бы очень признателен, если бы вы могли мне помочь?
Заранее спасибо,
Alano
4 ответа
Я скачал установщик Plone 4.1 с Launchpad (http://launchpad.net/plone/4.1/4.1rc3/+download/Plone-4.1rc3-UnifiedInstaller-Hotfix-20110622.tgz) и переустановил 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)
Источник: сообщения об ошибках (lxml.de)