Expresión válida XPath

Sólo dos preguntas:

  1. ¿Cómo puedo verificar si la cadena asignada a una variable corresponde a una expresión válida de XPath?
  2. ¿Cómo puedo devolver un mensaje de error personalizado en caso de que el recurso solicitado no exista?

  1. Si el XPath no es válido, obtendrás una excepción.
  2. Si el nodo solicitado no existe, obtendrá un conjunto de resultados vacío.

Por ejemplo:

from lxml import etree from StringIO import StringIO tree = etree.parse(StringIO('')) try: tree.xpath('\BAD XPATH') print '1. Valid XPath' except etree.XPathEvalError, e: print '1. Invalid XPath: ', e if not tree.xpath('/foo/xxx'): print '2. Requested node does not exist.' 

Se ejecuta de la siguiente manera:

 1. Invalid XPath: Invalid expression 2. Requested node does not exist.