If you are getting UTF-16 when you asked for something else, it's because you are sending the output to a character stream rather than a byte stream, which means the actual encoding is being done outside the XSLT processor's control. As Joe already said, you need to change the way you run the transformation.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference