How to debug lxml.etree.XSLTParseError: Invalid expression error

此生再无相见时 提交于 2019-12-05 00:53:06

问题


I'm trying to find out why lxml cannot parse an XSL document which consists of a "root" document with various xml:includes. I get an error:

Traceback (most recent call last):
File "s.py", line 10, in <module>
  xslt = ET.XSLT(ET.parse(d))
File "xslt.pxi", line 409, in lxml.etree.XSLT.__init__ (src/lxml/lxml.etree.c:151978)
lxml.etree.XSLTParseError: Invalid expression

That tells me where in the lxml source the error is, but is there a way to get more through lxml about where in the xsl the error is, or should I be using a different method? I'm trying to provide a service that accepts XSL documents, so I don't have access to an XML editor to debug manually. What I would like to do though is give feedback about why a transformation didn't succeed.


回答1:


Looking at the exception's properties, I see that it has an error_log, but for an xpath error (for example) the log only includes information about where within the xpath the error is, so it's not especially helpful. For the use-case I describe, having arbitrary users submitting XSLT, there's not a push-button approach. Instead, it would be probably be easiest to use a combination of schema validation and custom logic to find out where the error is and why it's an error for the purpose of reporting back to the user.



来源:https://stackoverflow.com/questions/26691880/how-to-debug-lxml-etree-xsltparseerror-invalid-expression-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!