James,
(I also sent this privately.)
To print the XML via XSLT, use <xsl:copy-of> instead of <xsl:value-of>. The latter always takes the *string value* of the XML, which only looks at the text nodes. The former makes a copy of the XML tree.
The email processor can only send one email at a time. So What's needed is iterating over the <message> elements you have created via XSLT. The iteration must be done in XPL, so you must use <p:for-each>:
http://wiki.orbeon.com/forms/doc/developer-guide/xml-pipeline-language-xpl#TOC-p:for-each-elementRegards,
-Erik