lazy import re as _re def is_valid_name(name): """Test whether a string is a valid element or attribute name.""" # https://www.w3.org/TR/xml/#NT-Name return _re.fullmatch( # NameStartChar '[' ':A-Z_a-z' '\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF' '\u200C\u200D' '\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF' '\uF900-\uFDCF\uFDF0-\uFFFD\U00010000-\U000EFFFF' ']' # NameChar '[' r'\-.0-9:A-Z_a-z' '\xB7' '\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF' '\u200C\u200D\u203F\u2040' '\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF' '\uF900-\uFDCF\uFDF0-\uFFFD\U00010000-\U000EFFFF' ']*+', name) is not None