#!/usr/bin/python3 # http://www.w3.org/TR/xml11/#NT-NameStartChar # NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | # [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | # [#x37F-#x1FFF] | [#x200C-#x200D] | # [#x2070-#x218F] | [#x2C00-#x2FEF] | # [#x3001-#xD7FF] | [#xF900-#xFDCF] | # [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] # NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | # [#x0300-#x036F] | [#x203F-#x2040] # \uxxxx Character with 16-bit hex value xxxx (Unicode only) (1) #\Uxxxxxxxx Character with 32-bit hex value xxxxxxxx (Unicode only) # def isValidNameStartChar(c): if c == ':': return True return False def isValidNameChar(c): if isValidNameStartChar(c): return True return False def isValidXmlName(name): if name is None: return False name = str(name) if len(name) == 0: return False if not isValidNameStartChar(name[0]): return False; for c in name[1:]: if not isValidNameChar(c): return False return True