code: def nsmap(self):
          
  
          NSMAP = dict()
          # solve 3) by using a set
          for k, v in set(self.namespaces):
              s_prefix = self.sb[k]
              s_uri = self.sb[v]
              # Solve 2) & 4) by not including
              if s_uri != "" and s_prefix != "":
                  # solve 1) by using the last one in the list
                  NSMAP[s_prefix] = s_uri
  
          return NSMAP
docs: Returns the current namespace mapping as a dictionary
  
          there are several problems with the map and we try to guess a few
          things here:
  
          1) a URI can be mapped by many prefixes, so it is to decide which one to take
          2) a prefix might map to an empty string (some packers)
          3) uri+prefix mappings might be included several times
          4) prefix might be empty