From 52c7c9c032d547b957808d07f53f58ed247f924c Mon Sep 17 00:00:00 2001 From: aqua Date: Thu, 22 Sep 2022 22:07:28 +0300 Subject: Add validate_xml script --- scripts/validate_xml.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 scripts/validate_xml.py (limited to 'scripts') diff --git a/scripts/validate_xml.py b/scripts/validate_xml.py new file mode 100755 index 00000000..4f716d60 --- /dev/null +++ b/scripts/validate_xml.py @@ -0,0 +1,36 @@ +#!/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') -- cgit v1.2.1