Problem here is ...

(select b.xml_name from application_xml_info_add b where a.form_id = b.form_id)

... is returning more than one row meaning, more than one value for b.xml_name therefore Oracle doesn't know which one you want to use to update row on application_xml_q2007 table and cancels with ORA-01427

You have to do something to force your inline query to return a single row.

Question: Are all b.xml_name values the same for a specific form_id?

If your answer is YES that means you don't care about which one is used to update your table therefore you can resort to something like...

(select * from (select b.xml_name from application_xml_info_add b where a.form_id = b.form_id) where rownum < 2);

If your answer is NO you have to find another way of forcing inline query to return single row... tip: work on WHERE clause.