diff --git a/validation_service/main.py b/validation_service/main.py index 2a95d29..185ca7c 100644 --- a/validation_service/main.py +++ b/validation_service/main.py @@ -111,11 +111,28 @@ def _check_minimum_content(jrxml: str) -> list[str]: return issues +JR_NAMESPACE = "http://jasperreports.sourceforge.net/jasperreports" + + +def _ensure_jr_namespace(jrxml: str) -> str: + """如果 JRXML 根元素缺少命名空间声明,自动补上。""" + import re + if 'xmlns=' not in jrxml[:500]: + return re.sub( + r'( tuple[bool, str]: """根据 JasperReports XSD schema 验证 JRXML。""" if not SCHEMA_FILE.exists(): return True, "" + jrxml = _ensure_jr_namespace(jrxml) + try: schema_doc = etree.parse(str(SCHEMA_FILE)) xmlschema = etree.XMLSchema(schema_doc)