code: def _read_provenance_from_xml(self, root):
          
          path = self._special_properties['provenance']
          provenance = root.find(path, XML_NS)
          for step in provenance.iter('provenance_step'):
              title = step.find('title').text
              description = step.find('description').text
              timestamp = step.get('timestamp')
  
              if 'IF Provenance' in title:
                  data = {}
                  from safe.metadata35.provenance import IFProvenanceStep
                  keys = IFProvenanceStep.impact_functions_fields
                  for key in keys:
                      value = step.find(key)
                      if value is not None:
                          data[key] = value.text
                      else:
                          data[key] = ''
                  self.append_if_provenance_step(
                      title, description, timestamp, data)
              else:
                  self.append_provenance_step(title, description, timestamp)
docs: read metadata provenance from xml.
  
          :param root: container in which we search
          :type root: ElementTree.Element