If you don't need the "Agent" and "Guest" labels actually stored in the XML (i.e. their meaning is assumed based on their order in the list), you could try something like in the attached template. I've simply used conditional formatting (right click the "Agent" and "Guest" expression boxes and click Conditional formatting... to see what I've done) to hide one label or the other in each row.
If you want "Agent" or "Guest" to be stored in a field, you could try a technique described on this page:
http://www.tkachenko.com/blog/archives/000156.html
Basically you would set the default value of the field to:
concat(substring("Agent", number(count(../preceding-sibling::my:group2) mod 2 = 1) * string-length("Agent") + 1), substring("Guest", number(count(../preceding-sibling::my:group2) mod 2 = 0) * string-length("Guest") + 1))
It looks complicated, but you can use it as-is, just replacing the my:group2 part with the actual name of the repeating node.