#!/usr/bin/env python3 # ============================================================ # The rekonq project # ============================================================ # SPDX-License-Identifier: GPL-3.0-only # Copyright (C) 2022 aqua # ============================================================ """ Validate xml files """ import argparse import sys from lxml import etree def validate(xml_path: str, validator) -> bool: ''' Load and validate file using lxml ''' xml_doc = etree.parse(xml_path) return validator.validate(xml_doc) if __name__ == '__main__': parser = argparse.ArgumentParser(description='Validate xml files') parser.add_argument('files', type=str, nargs='+', help='One or more files to validate') parser.add_argument('--dtd', type=str, help='DTD') args = parser.parse_args() validator = etree.DTD(args.dtd) files_ok = True for file in args.files: if not validate(file, validator): print(f'{file} failed validation') files_ok = False if not files_ok: sys.exit('validation failed')