def java_xml_utils_style_validation(xml_filename, doctype, report_filename, xsl_prep_report, xsl_report): # STYLE CHECKER REPORT register_log('java_xml_utils_style_validation: inicio') is_valid_style = False xml_report = report_filename.replace('.html', '.xml') if os.path.exists(xml_report): os.unlink(xml_report) if os.path.exists(report_filename): os.unlink(report_filename) parameters = {} bkp_xml_filename = xml_utils.apply_dtd(xml_filename, doctype) if java_xml_utils.xml_transform(xml_filename, xsl_prep_report, xml_report, parameters): #parameters = {'filename': xml_report} java_xml_utils.xml_transform(xml_report, xsl_report, report_filename, parameters) else: fs_utils.write_file(report_filename, validation_status.STATUS_FATAL_ERROR + ': ' + _('Unable to create') + ' ' + report_filename) if os.path.isfile(report_filename): c = fs_utils.read_file(report_filename) is_valid_style = ('Total of errors = 0' in c) and (('Total of warnings = 0' in c) or (not 'Total of warnings =' in c)) if os.path.isfile(bkp_xml_filename): xml_utils.restore_xml_file(xml_filename, bkp_xml_filename) if os.path.isfile(xml_report): os.unlink(xml_report) register_log('java_xml_utils_style_validation: fim') return is_valid_style
def xml_validate(xml_filename, result_filename, doctype=None): #register_log('xml_validate: inicio') validation_type = '' if doctype is None: doctype = '' else: validation_type = '--validate' bkp_xml_filename = xml_utils.apply_dtd(xml_filename, doctype) temp_result_filename = TMP_DIR + '/' + os.path.basename(result_filename) if os.path.isfile(result_filename): os.unlink(result_filename) if not os.path.isdir(os.path.dirname(result_filename)): os.makedirs(os.path.dirname(result_filename)) cmd = JAVA_PATH + ' -cp "' + JAR_VALIDATE + '" br.bireme.XMLCheck.XMLCheck "' + xml_filename + '" ' + validation_type + '>"' + temp_result_filename + '"' cmd = cmd.encode(encoding=sys.getfilesystemencoding()) os.system(cmd) if os.path.exists(temp_result_filename): result = fs_utils.read_file(temp_result_filename, sys.getfilesystemencoding()) if 'ERROR' in result.upper(): n = 0 s = '' for line in open(xml_filename, 'r').readlines(): if n > 0: s += str(n) + ':' + line n += 1 result += '\n' + s.decode('utf-8') fs_utils.write_file(temp_result_filename, result) else: result = 'ERROR: Not valid. Unknown error.\n' + cmd fs_utils.write_file(temp_result_filename, result) shutil.move(temp_result_filename, result_filename) shutil.move(bkp_xml_filename, xml_filename) #register_log('xml_validate: fim') return not 'ERROR' in result.upper()