Cómo depurar lxml.etree.XSLTParseError: error de expresión no válida

Estoy intentando averiguar por qué lxml no puede analizar un documento XSL que consiste en un documento “raíz” con varios xml:include s. Me sale un error:

 Traceback (most recent call last): File "s.py", line 10, in  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 

Eso me dice dónde está el error en la fuente de lxml, pero ¿hay alguna manera de obtener más información sobre lxml sobre dónde está el error en la xsl o debo estar usando un método diferente? Estoy tratando de proporcionar un servicio que acepte documentos XSL, por lo que no tengo acceso a un editor XML para depurar manualmente. Sin embargo, me gustaría hacer comentarios sobre por qué una transformación no tuvo éxito.

Observando las propiedades de la excepción, veo que tiene un error_log, pero para un error xpath (por ejemplo) el registro solo incluye información sobre dónde está el error dentro de xpath, por lo que no es especialmente útil. Para el caso de uso que describo, tener usuarios arbitrarios enviando XSLT, no hay un enfoque de botón pulsador. En su lugar, probablemente sería más fácil usar una combinación de validación de esquema y lógica personalizada para averiguar dónde está el error y por qué es un error con el propósito de informar al usuario.