You might check the example below from the local file system or from
the server by using application/xml. The syntax used is XML with no
need for _any_ special (HTML) cases here, so an empty div element is
simply written as <div/> for example!
With IE6 it will be rendered in strict mode, despite the XML prolog.
With Firefox it will give you a XHTML document. You can check this by
viewing the DOM.
For the only "problem" I'm aware of (doubling the <br/> in Opera, IE6
and IE7) I have included a workaround in the stylesheet.
So I would propose, instead of sending browser specific html, to send
a single XML and let the browsers XSLT machine take care of its
specific needs. Is it too simple? Please criticise!
Best Regards,
Manfred
test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="identity.xsl" type="text/xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>resr quirks-mode</title>
<style>
div {
margin: 20px;
}
.testbox {
width: 200px;
padding: 20px;
border: 1px solid #000000;
}
.comparisionbox {
width: 200px;
border: 1px solid #000000;
}
</style>
</head>
<body>
<div id="main">
<p class="comparisionbox">This paragraph has width: 200px and
no padding. It always remains exactly 200px wide, regardless of
rendering mode.</p>
<p class="testbox">This paragraph has width: 200px and
padding: 20px. Which box model does it follow?</p>
<p>Note: This is a variation after a <a
href="http://www.quirksmode.org/css/modes/box_quirks.html">page at
QuirksMode</a></p>
</div>
</body>
</html>
identity.xsl:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:html="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="html"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
omit-xml-declaration="yes" indent="no"/>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="html:br">
<br xmlns=""/>
</xsl:template>
</xsl:stylesheet>