RE: ISSUE-4: Versioning, namespace URIs and MIME types

Given the following function in a script:

   function test(imp) {
     // imp is a DOMImplementation object
     var doc = imp.createDocument(null, null, null);
     var e = doc.createElementNS('http://www.w3.org/1999/xhtml', 'img');
     return e;
   }

...browsers are required, for compatibility with legacy content, XHTML1, 
DOM2 HTML, and DOM2 Core, to return an element that, when inserted into a 
document, displays either an image as indicated by its "src" attribute, or 
text as indicated by its "alt" attribute.

This is the case regardless of HTML5 or XHTML5 -- this has absolutely 
nothing to do with this working group, it is based purely on specs that 
were created in the late 90s, around a decade ago, years before HTML5 
started. This is the world in which we find ourselves, writing HTML5.

A spec that changes the requirements around this script in a way that is 
incompatible with existing browsers, content, and specs is going to have a 
great deal of trouble getting implemented by Web browsers. Thus, we really 
have very little room to manoeuver here -- HTML5 is constrained here, like 
in so many other places.

Assuming that XHTML2 uses the same namespace as XHTML1, as has been 
suggested though not specified, XHTML2 requires behaviour of the <img> 
element created by the script above that is not compatible with existing 
browsers, content, and specs (sections 18.1 and 20.1). XHTML claims 
(section 1.1.2) that "strict element-wise backwards compatibility is no 
longer necessary", and thus it exempts itself from the aforementioned 
constraints. That isn't a problem, except insofar as it means that no user 
agent can implement both XHTML2 and XHTML1 at the same time.

In conclusion: XHTML5 does not have a new conflict with XHTML2 even if 
both use the same namespace. The conflict, insofar as there is one that 
matters, already exists between XHTML1 and XHTML2, and exists irrespective 
of XHTML5. I believe this issue to therefore be out of scope for the HTML5 
specification, and do not propose to do anything about it (except for 
changing the "relationship to XHTML2" section if they do indeed publish a 
version of XHTML2 that reuses the same namespace).

I would like to recommend that future discussion on the subject of 
versioning focus on versioning in the face of DOM Core implementations and 
the script given above, as that will help prevent discussion that could 
not solve the problem (e.g. anything to do with DOCTYPEs, version="" 
attributes, or MIME types, none of which are present in the above snippet, 
despite that snippet creating an XHTML1/5 element). I would also like to 
recommend that any discussion for new features continue to consider the 
need for graceful degradation, which requires us to continue to use the 
same namespaces and tag names as is supported by legacy browsers, at the 
very least for existing features, and ideally wherever possible.

HTH,
-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

Received on Tuesday, 17 February 2009 03:35:51 UTC