@hep2marc.over('<STR_LIT>', '<STR_LIT>')<EOL>def external_system_identifiers2marc(self, key, value):
def _is_scheme_cernkey(id_, schema):<EOL><INDENT>return schema == '<STR_LIT>'<EOL><DEDENT>def _is_scheme_spires(id_, schema):<EOL><INDENT>return schema == '<STR_LIT>'<EOL><DEDENT>result_035 = self.get('<STR_LIT>', [])<EOL>id_dict = self.get('<STR_LIT>', defaultdict(list))<EOL>result_970 = self.get('<STR_LIT>', [])<EOL>values = force_list(value)<EOL>for value in values:<EOL><INDENT>id_ = value.get('<STR_LIT:value>')<EOL>schema = value.get('<STR_LIT>')<EOL>if _is_scheme_spires(id_, schema):<EOL><INDENT>result_970.append({<EOL>'<STR_LIT:a>': id_,<EOL>})<EOL><DEDENT>elif _is_scheme_cernkey(id_, schema):<EOL><INDENT>result_035.append({<EOL>'<STR_LIT>': '<STR_LIT>',<EOL>'<STR_LIT:z>': id_,<EOL>})<EOL><DEDENT>else:<EOL><INDENT>id_dict[schema].append(id_)<EOL><DEDENT><DEDENT>self['<STR_LIT>'] = result_970<EOL>self['<STR_LIT>'] = id_dict<EOL>return result_035<EOL>
Populate the ``035`` MARC field.

    Also populates the ``970`` MARC field through side effects and an extra
    ``id_dict`` dictionary that holds potentially duplicate IDs that are
    post-processed in a filter.