Currently, when you call Controller#render(:xml=>true), it will ignore the :template option and use the default assumption that you want to use rxml, xerb or builder to generate it. Using another template engine is not possible unless you change the merb source.
For my project I needed to generate simple xml output (with correct headers and such) and since I already use haml to generate xhtml, I figured I could use it for xml as well. When I render it as just a xhtml view, I get the xml I want, but the header is an xhtml header instead of a xml header.
To set the proper header, I need to render it as :xml, but this is hardcoded to accept only the three template engines mentioned above. Just adding haml as a fourth engine would only work until someone thinks of yet another way to generate xml, so a more flexible approach would be more useful.
I made some small modifications to the Merb::RenderMixin#render? source that allows you to override the default behaviour by specifying a :template option. The :template option behaves just like it normally would when you specify a :template for rendering (x)html.
The patch works for me, so I updated the documentation and added a spec to test it.