36 lines
948 B
Python
36 lines
948 B
Python
#!/usr/bin/env python3
|
|
"""PPT Master SVG quality XML helpers.
|
|
|
|
Provides namespace constants and compact element labels shared by quality-check
|
|
domains.
|
|
|
|
Usage:
|
|
Import from ``svg_quality.checker`` or another ``svg_quality`` module.
|
|
|
|
Examples:
|
|
from svg_quality.xml_support import local_name
|
|
|
|
Dependencies:
|
|
Standard library only.
|
|
"""
|
|
|
|
from xml.etree import ElementTree as ET
|
|
|
|
SVG_NS = "http://www.w3.org/2000/svg"
|
|
XLINK_NS = "http://www.w3.org/1999/xlink"
|
|
|
|
|
|
def local_name(elem: ET.Element) -> str:
|
|
"""Return an XML element's namespace-free local tag name."""
|
|
tag = elem.tag
|
|
if not isinstance(tag, str):
|
|
return ""
|
|
return tag.rsplit("}", 1)[-1] if "}" in tag else tag
|
|
|
|
|
|
def element_label(elem: ET.Element) -> str:
|
|
"""Return a compact element label for validation messages."""
|
|
tag = local_name(elem)
|
|
elem_id = (elem.get("id") or "").strip()
|
|
return f'<{tag} id="{elem_id}">' if elem_id else f"<{tag}>"
|