code: def _fix_name(self, name):
          
          if not name[0].isalpha() and name[0] != "_":
              log.warning("Invalid start for name '{}'".format(name))
              self.packerwarning = True
              name = "_{}".format(name)
          if name.startswith("android:"):
              # Seems be a common thing...
              # Actually this means that the Manifest is likely to be broken, as
              # usually no namespace URI is set in this case.
              log.warning(
                  "Name '{}' starts with 'android:' prefix! "
                  "The Manifest seems to be broken? Removing prefix.".format(
                      name
                  )
              )
              self.packerwarning = True
              name = name[len("android:"):]
          if ":" in name:
              # Print out an extra warning
              log.warning("Name seems to contain a namespace prefix: '{}'".format(name))
          if not re.match(r"^[a-zA-Z0-9._-]*$", name):
              log.warning("Name '{}' contains invalid characters!".format(name))
              self.packerwarning = True
              name = re.sub(r"[^a-zA-Z0-9._-]", "_", name)
  
          return name
docs: Apply some fixes to element named and attribute names.
          Try to get conform to:
          > Like element names, attribute names are case-sensitive and must start with a letter or underscore.
          > The rest of the name can contain letters, digits, hyphens, underscores, and periods.
          See: https://msdn.microsoft.com/en-us/library/ms256152(v=vs.110).aspx
  
          :param name: Name of the attribute
          :return: a fixed version of the name