- it's technology-neutral, so any underlying platform can produce it, and any technology can be sensibly mapped to it (from object graphs to database schemas)
- it can be serialized across process boundaries (so the back-end can Inspect and send results to the front-end)
- it prevents accidentally keeping references to 'live' objects, and accidentally abusing those references
I have some uncertainty about whether to return the XML as a String or a DOM or a SAX Source. I'm going for a DOM for now, but we'll have to see how it shakes out.