Tapestry reads well-formed XML template files and renders its output as XML, with minor caveats:
This is all to ensure that the markup stream, while (almost) well formed, is still properly understood by browsers expecting ordinary HTML.
In fact, Tapestry may decide to render a purely XML document; it depends on the content type of the response. The default content type for pages is "text/html" ... this triggers specialized XML rendering.
A page may declare its content type using the ContentType class annotation. Content types other than "text/html" will render as well-formed XML documents, including the XML declaration, and more standard behavior for empty elements.
The character set (aka character encoding) used when writing output and when parsing requests is normally "utf-8". All pages use the same encoding, which can be set using the tapestry.charset configuration setting.