def _read_xsl_one(filename, log=log): ''' return (etree.ElementTree, xsl includes from given file ''' with open(filename, "rb") as fp: log.debug('read file %s', filename) tree = etree.parse(fp) xsl_includes = [_abs_filename(filename, i.get('href')) for i in tree.findall('{http://www.w3.org/1999/XSL/Transform}import')] return tree, xsl_includes
def xml_from_file(filename): ''' filename -> (status, et.Element) status == True - результат хороший можно кешировать == False - результат плохой, нужно вернуть, но не кешировать ''' if os.path.exists(filename): try: res = etree.parse(file(filename)).getroot() tornado.autoreload.watch_file(filename) return True, [_source_comment(filename), res] except: log_fileloader.exception('failed to parse %s', filename) return False, etree.Element('error', dict(msg='failed to parse file: %s' % (filename,))) else: log_fileloader.error('file not found: %s', filename) return False, etree.Element('error', dict(msg='file not found: %s' % (filename,)))