It's a well-known problem with the Microsoft parsers that they strip text nodes that consist entirely of whitespace without a by-your-leave. However, I've never heard of them stripping whitespace characters that are part of a text node that also contains printable characters, and that would certainly be a serious bug. You should get rid of them using translate().
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference