>However, even though output is specied as UTF-8, the output I am getting is in UTF-16 format.
This generally means either (a) you are not serializing the result using the XSLT serializer, but using the DOM serializer, or (b) you are serializing the result using the XSLT serializer, but sending the result to a "character" rather than "byte" destination, which means that the final encoding of characters to bytes is not being done by the XSLT serializer. This is all a question of how the transformation is invoked from the API. I've only ever seen this on Microsoft environments, not in Java, because Java doesn't tend to encode output as UTF-16 unless you ask for it explicitly.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference