Well you haven't really told us in what way the browsers fail. If you want to create XHTML output then make sure you use the XHTML namespace for your result elements i.e. put
<xsl:stylesheet
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
<xsl:template match="/">
<html>...<xsl:apply-templates/>...</html>
</xsl:template>
</xsl:stylesheet>
in your code to make sure the result elements are XHTML elements (and not XML elements in no namespace that happen to have local names like 'html' but are not recognizable as XHTML).
I am pretty sure that Firefox/Mozilla browsers that way with output method xml
recognize the XHTML elements. And IE 9 and 10 as well I think, I am not sure older versions of IE with limited XHTML support will work.
To give you an example, the XML input http://home.arcor.de/martin.honnen/xslt/test2013040601.xml is transformed to xml
output via http://home.arcor.de/martin.honnen/xslt/test2013040601.xsl and works fine with IE 10 and current version of Firefox and Chrome on Windows 8.