Re: If we have versioning, it should be in an attribute, not the doctype

I talked with Boris over irc about "to version or not to version". The 
way I feel is something like this: The cost is pretty low but so is the 

First of all, I don't envision that Firefox will make use of the 
versioning to trigger significantly different 
DOMs/rendering/parsing/etc, and I definitely don't want to impose it on 
new UAs. Both HTML5 and HTML6 will have to live with the "Don't break 
the web" mantra. So there is no value added in versioning there.

Where the value comes in is it might help users migrate to newer 
versions of the spec. If IE requires the user to opt-in to newer more 
bug fixed releases then they'll have to do so anyway, until html6 is 
released. Only once html6 is released they can use that 
doctype/attribute to automatically get the latest and greatest IE 
behavior. So no value added in versioning here until html6 is released.

The cost is pretty low though if we make the version attribute optional. 
We have to make sure to write the spec in such a way though that future 
spec writers aren't tempted to break compat by saying "well, people 
should have been putting the version attribute in there anyway".

All in all I'd like to see real working usecases for versioning. Just 
like every other feature in the spec :)

/ Jonas

Maciej Stachowiak wrote:
> If we require a version marker (and I don't necessarily agree we 
> should), it should be in an attribute on the root element, not in the 
> doctype string.
> Reasons:
> 1) Ease of authoring and readability. Compare:
> <!DOCTYPE html PUBLIC "-//W3C//HTML 5.0//EN">
> <html>
> <!DOCTYPE html>
> <html version=5.0>
> The latter is clearly easier to type correctly from memory and easier to 
> read. If <!DOCTYPE html5> were usable, then that might be a better 
> option from this point of view, but it triggers quirks mode in Safari 
> and Firefox so it is not an option.
> Some people have argued that <!DOCTYPE html> is an invalid doctype 
> declaration, but that is mistaken; it is syntactically valid in both 
> SGML and XML.
> 2) In XML, a DOCTYPE declaration is not required, and in fact is not 
> recommended for languages that do not have a DTD (either because they 
> don't use any formal schema language or because they use one other than 
> DTDs, such as RelaxNG). For example, SVG 1.2 doesn't call for any DTD 
> declaration.
> 3) Other modern XML-based languages use a version attribute, not 
> versioning in a DTD declaration. Examples include XSLT and SVG. We 
> wouldn't want the XML serialization of HTML5 to diverge from this.
> 4) In a compound document by inclusion (CDI) scenario, there is no place 
> to put the doctype. If HTML behavior is to be versioned, then surely you 
> want to apply that even when it is included directly in some other 
> markup language. For instance:
> <svg xmlns="" version="1.2">
>   <foreignObject>
>     <html xmlns="" version="5.0">
>       ...
> Where could you possibly put an html doctype declaration in this?
> I think these reasons are strong enough to rule out versioning via a DTD 
> declaration.
> Regards,
> Maciej

Received on Tuesday, 17 April 2007 21:47:50 UTC