My biggest complaint about W3C is that they made HTML standard non-extensible. I am a tool developer and we often need to store design-time settings somewhere. Settings may be per document or per element. Examples: grid size and visibility, snap to grid settings, locked/moveable element, 2D or flow panels, etc. It is not that bad for per-document settings since META element can be employed. However, it will only work for per-document settings. IE supports expando (i.e. custom) attributes and that’s what we used to employ in VS HTML Editor before Whidbey. For example, ms_positioning in VS 2003. Users had difficulties validating pages with custom attributes since expandos make page incompatible with W3C validator. We abandoned expandos in Whidbey. Instead, all settings are now per application since we don’t store anything in the document. Settings get written to the registry, see HKCR\Software\Microsoft\Visual Studio\8.0\HTML Editor.
In XHTML I can declare a namespace, such as vs: and use it for custom attributes. This approach, however, is incompatible with HTML 4.01 which does not allow namespaces. In Web Forms we could theoretically store design-time stuff in server-side comments such as <%– –%>. But this won’t work for plain static HTML pages. We could use HTML comments <!– –>, but this means we would have to employ different mechanisms for different file types. That would obviously bloat our code, not mentioning increased number of bugs. And what if one day user decides to change static .htm file into dynamic .aspx page?
I wish people would think about development tools when they were designing a new standard or file format. I have great respect to creators of TIFF format that allows private fields. These fields greatly simplify document workflow since one can store a whole bunch of additional information there.