Reading your description, that by the way, was very good, I couldn’t believe how you cannot do it (unless I misunderstood something). As I said your own description says it all! 
You only need 2 nested loops (one to loop each document) and a few branches to verify your conditions. You loop the first document till you find the stuff you are looking for, when it happens, a branch activates the nested loop over the other documented and if the values is found, bingo, you map the thing as you wonderfully said!
Hope I’ve helped, cheers!
#webMethods#Integration-Server-and-ESB#webMethods-General