2014-11-01 10 views
5

Sto cercando di scoprire perché lxml non è in grado di analizzare un documento XSL che consiste in un documento "root" con vari xml:include s. Ottengo un errore:Come eseguire il debug di lxml.etree.XSLTParseError: errore di espressione non valido

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 

Che mi dice dove nella fonte lxml l'errore è, ma c'è un modo per ottenere di più attraverso lxml su dove nel xsl l'errore è, o dovrei usare un metodo diverso? Sto cercando di fornire un servizio che accetti i documenti XSL, quindi non ho accesso a un editor XML per eseguire il debug manualmente. Quello che mi piacerebbe fare è dare un feedback sul perché una trasformazione non ha avuto successo.

+0

sei andato da qualche parte su questo problema? – gmas80

+1

Mi spiace, @ gmas80, mi sono trasferito e ho perso la maggior parte del contesto per questo. Ho fatto una rapida ricerca e ho trovato [questo] (http://lxml.de/xpathxslt.html#errors-and-messages). – markw

+1

Il collegamento del commento precedente è una buona risposta alla domanda e dovrebbe essere fatto come uno. –

risposta

-1

Osservando le proprietà dell'eccezione, vedo che ha un error_log, ma per un errore xpath (ad esempio) il registro include solo informazioni su dove all'interno di l'errore xpath è, quindi non è particolarmente utile. Per il caso d'uso che descrivo, avendo utenti arbitrari che hanno inviato XSLT, non esiste un approccio a pulsante. Invece, sarebbe probabilmente più facile usare una combinazione di convalida dello schema e logica personalizzata per scoprire dove si trova l'errore e perché si tratta di un errore allo scopo di riferire all'utente.

Problemi correlati