Re: HTML version issue summary?

This is my attempt at summarizing the ideas which have been raised  
during the threads. I'm not taking position, just giving the  
different options proposed so far. I think it could be used for a  
post on QA Weblog.

Feel free to add things I would have forgotten.

Le 25 avr. 2007 à 07:47, Dan Connolly a écrit :
 >David, would you please offer a summary of the issue
 >as you see it so far? I suppose others are welcome
 >to offer summaries too, but I'm particularly
 >interested in David's take.

# no versioning

html is a one language, and every implementations must be able to  
read its content, whatever happens. All future "versions" of html  
should never dismissed what has been done in the past. Any programs  
starting from scratch has to implement everything from the start.
The semantics of element will never change as well, because it might  
break the intent of authors from the past who have written  
accordingly to a previous version.

# versioning

People are requesting a version number to be able

* to switch between two different modes of rendering.
* to author with specific requirements and/or semantics
* to convert from one version to another one
* to create helping tool for authoring document
* to validate
* to evolve the semantics of elements and attributes


# html fragment

There is no simple way for identifying an html fragment used in  
another application. A version attribute could be done on the root  
element of this html fragment. It gives a difficult constraint on  
authoring tool if this html fragment is changed and have to push the  
version attribute on the new root element.
ex:
going from <p version="foo">babar</p>
to <div version="foo"><p>babar</p></div>


# Authors and version

Author: a version system/mechanism which is constrained to be in the  
head or DOCTYPE or html element is difficult to change for author  
with no access to the html template. (ex: CMS with access to content  
only). On the other side a version number accessible from the body  
will make it easy to change.

Authoring tool: The mechanism to change the version is not defined in  
a conversion context. (ex: HTML editor X taking over HTML editor Y.)

Template designer: A version number which is not accessible to author  
might be a feature by constraining author to only a given set of  
elements.


# Converter / Helping tools

A version number is useful to be able to convert a document to/from  
an earlier/future version  of the language. It is useful to create an  
helping tool which gives recommendation depending on the semantics of  
the feature.



# Possible Version Syntax mechanism

## "version" attribute

The version attribute is found on the html element.

<!DOCTYPE html>
<html version="something">
…
</html>

The format of "something" is not defined, but in HTML 4.01
As defined in [HTML 4.01][1]

     version = cdata [CN]
         Deprecated. The value of this attribute
         specifies which HTML DTD version governs the
         current document. This attribute has been
         deprecated because it is redundant with
         version information provided by the document
         type declaration.

and the DTD for HTML 4.01 *Transitional* only!

<!ENTITY % HTML.Version "-//W3C//DTD HTML 4.01 Transitional//EN">
<!ENTITY % version "version CDATA #FIXED '%HTML.Version;'">
<!ATTLIST HTML %i18n;
                %version;
   >

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                     "http://www.w3.org/TR/html4/loose.dtd">
<html version="-//W3C//DTD HTML 4.01 Transitional//EN">
     <head>
     ...
     </head>
     <body>
     ...
     </body>
</html>

In [HTML 3.2][2], The DTD declares

<!ENTITY % HTML.Version "-//W3C//DTD HTML 3.2 Final//EN">
<!ENTITY % version.attr "VERSION CDATA #FIXED '%HTML.Version;'">
<!ATTLIST HTML %version.attr;>

It means an HTML 3.2 document with version information would look like:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
   <HTML version="-//W3C//DTD HTML 3.2 Final//EN">
   <HEAD>
   <TITLE>document title</TITLE>
   </HEAD>
   <BODY>
   ... document body
   </BODY>
   </HTML>

[1]: http://www.w3.org/TR/html4.01/struct/global.html#adef-version
[2]: http://www.w3.org/TR/REC-html32


## "meta" element for versioning

Another possibility for versioning is to use a meta name

<meta name="version" content="something"/>

The syntax of something is not defined. Many authoring tools have  
similar mechanism to advertise that they have created the document  
and often use a version number.

## version in HTTP headers

In the same way we can specify the content-type with http headers,  
the version could be given through HTTP headers. It is difficult to  
modify for authors who have rarely access to the server configuration.


## version in comments.

<!-- version: something -->

A syntax which will be freely consumed by consumer (various user  
agent) or creator by producer (authoring tool), but that is not  
required for any class of products. The syntax is still undefined.
An opt-in mechanism specific to a browser vendor makes it difficult  
to manage in an interoperable way.


-- 
Karl Dubost - http://www.w3.org/People/karl/
W3C Conformance Manager, QA Activity Lead
   QA Weblog - http://www.w3.org/QA/
      *** Be Strict To Be Cool ***

Received on Monday, 30 April 2007 06:27:21 UTC