Source code for src.xmlChecks.xsdValidator

# SPDX-FileCopyrightText: Copyright © 2026 BBC
#
# SPDX-License-Identifier: BSD-3-Clause

from .xmlCheck import XmlCheck
from src.validationLogging.validationLogger import ValidationLogger
from src.validationLogging.validationCodes import ValidationCode
from xml.etree.ElementTree import Element
from xmlschema import XMLSchemaValidationError, XMLSchema


[docs] class xsdValidator(XmlCheck): def __init__(self, xml_schema: XMLSchema, schema_name: str) -> None: super().__init__() self._xmlSchema = xml_schema self._schemaName = schema_name
[docs] def run( self, input: Element, context: dict, validation_results: ValidationLogger) -> bool: valid = True try: self._xmlSchema.validate(source=input) except XMLSchemaValidationError as e: valid = False validation_results.error( location=e.elem.tag, message='Fails {} XSD validation: {}'.format( self._schemaName, e.reason), code=ValidationCode.xml_xsd ) else: validation_results.good( location='Parsed document', message='{} XSD Validation passes'.format(self._schemaName), code=ValidationCode.xml_xsd ) return valid