I don't understand how you have created the XML document that you showed in your first post. Most of those characters in your fname elements can't be represented in ISO-8859-1. So how did you get them in there? Did you actually use character entities, and that fact just gets obscured by the forum software interpreting those entities, or what?
Oh, that's what you did and your second post says that. Okay. Never mind.
But now I don't understand why you're doing all that character-mapping business. What's the point? XML serializers do a good job of using entities where necessary. They know what they are doing and you (admittedly) don't. So you shouldn't try doing their job. I would just leave all that business out and let the serializer take care of it.
Besides, you're passing that to the browser and expecting it to do the transformation? As far as I know there aren't any browsers that support XSLT 2.0 yet (unless somebody can correct me there) so even if you were doing something meaningful it wouldn't have any effect. I suppose you could get something that supports XSLT 2.0 and try doing the transformation on the server.
I was going to point you at Mike Brown's tutorial about XML and encodings at
http://www.skew.org/ but the site says it's down until February 5. I would still recommend you read that tutorial when the site comes back (if it's still there).
In the meantime could you explain why you are doing all that? It smells like an ill-advised attempt to solve some other problem.