On Mar 4, 2009, at 16:31, Sam Ruby wrote:

Lachlan Hunt wrote:
Henri Sivonen wrote:
* Make an element with the local name 'meta' in the SVG namespace and with an attribute charset in no namespace conforming as a child of a root <svg> element in text/html.

* The above formulation requires <!DOCTYPE html> for <svg> root element, which *would be well-formed* but *not valid* in XML due to the html vs. svg name mismatch.
The problem that the SVG WG have described they are trying to address, at least in internal discussions at Opera, is that people will produce otherwise conforming SVG documents, which could in theory be served as XML, but due to the failure to properly configure their server, somehow end up being served as text/html. This is basically an error condition that they are trying to address more gracefully. Such content would not include either a DOCTYPE or a meta element.

I wasn't trying to address an accident case. I was trying to consider what it would take to allow deliberate serving as text/html.

On its face, enabling the accident case to the point of allowing stuff that looks like an XML declaration to set the character encoding seems dangerous. (Re-implementing all the existing encoding sniffing ways for Gecko wasn't particularly nice, so I'm not at all keen on piling on more.)

Besides, the presence of the HTML DOCTYPE should be a clear indicator that the file is intended to be HTML, not SVG.

I think it's an indicator that the author wants the standards mode. :-)

But by allowing such non-HTML content to include the HTML DOCTYPE and the meta element, suddenly we've slipped down the slope from handling an edge case error,

I wasn't considering this as error handling.

to legitimising the abuse of text/html as a dumping ground for non- HTML content.

I guess that depends on what your world view on text/html and content types is.

Are content types an architectural error compared to magic numbers?

Does image/png mean a PNG image or does it mean any image as sniffed from magic?

Do application/xhtml+xml and image/svg+xml mean XHTML and SVG or just bootstrapping the XML parser with further dispatch on namespace?

Does text/html mean just HTML or browsable Web content? HTTP 0.9 and <plaintext> FTW! ;-)

I may be wrong, but I don't think that's Henri's point. I think we can all agree that svg served as text/html should never be considered conformant.

Actually, I'm not ready to agree on the conformance point. If we go through the trouble of enabling <svg> as root in text/html, we might as well make it conforming to allow standalone SVG be written without the Draconian behavior of XML.

I don't have an informed opinion yet whether enabling <svg> as root in text/html at all is a good idea. But if we do it, I see point in making it an error.

What I see Henri's point as being is that in order to make SVG served as text/html mostly work, some changes are required, and he's taken a stab at what those changes are. Unfortunately, those changes may not be enough as they are predicated on the content not triggering quirks mode.

A possible adjustment would be making an initial <svg> token trigger the standards mode, but then there'd be no escape if the document turns out to be bogus later in the parse. But then, there's no escape if a quirky author copy-pastes a standards-mode doctype.

--
Henri Sivonen
[email protected]
http://hsivonen.iki.fi/



Reply via email to