XHTML Family User Agent Conformance

On Mon, 24 Jan 2000, W. Eliot Kimber wrote:

> XHTML Modularization Spec
> 
> 3.3 XHTML Family User Agent Conformance
> 
> Constraint 4 needs to clarify whether the term "render" as used here
> means "enable processing by the controlling style sheet" or "make
> visible to the reader". A controlling style sheet may choose to hide an
> unrecognized element that the XHTML processor is required to pass
> through to the rendition component of the browser.  This constraint
> could be read as "must always make visible".

I've already argued (with illustrative examples) that the conformance
requirement is absurd as stated and inappropriate even in intent.

  http://lists.w3.org/Archives/Public/www-html/2000Jan/0176.html

Grandfathering the historical behavior of browsers is one thing,
mandating such (broken) behavior is another.  If the specs were aimed
at description of current practice, they could have taken a page out
of RFC 1866 (4.2.1) and simply reported the observation.  But the
specs seem aimed at prescription, in which case #4 is, IMHO, bogotic.

First, it forgets that this is XML, where there are no missing tags.
That, by the way, was the escape clause invoked by the Netscape people
to "justify" their stick-in-a-comment kludge for LiveScript.  The
position of an unknown element in a putative XHTML element tree is
unambiguous.  The only operative question, therefore, is whether it
should be transparent - its content becomes part of the parent's
content - or opaque.

Second, mandating a conforming agent "must do something with the
content" - as opposed to ignoring it - can make a hash of context
dependent processing.  What if there's no stylesheet rule for
unexpected stuff?  Or does every stylesheet have to anticipate every
bogotic combination?  This is *why* the historical behavior is, has
been and always will be sop hopelessly inadequate. 

Finally, if conforming agents *must* do something - in effect,
*recognize* the element as inherently processable *within* the XHTML
semantic domain - then this should be *allowed* in the DTD.  Define a
catch-all element, say CatchAll, to which all unrecognized elements
are to be mapped, and add it to all content models.  

   <!ELEMENT ul  (CatchAll|li)+ >

Define the processing behavior as "pass content to parent".  You can
even do better and define a global *attribute*, say htmlignore, that
any CatchAll element can exhibit.  If its value means 'yes', this is a
way for documents to override the default mapping and make the element
opaque and suppressible by agents that don't grok.

But disallowing such stuff according to the DTD and then *requiring*
in-paradigm treatment for conformance makes no sense.


Arjun

Received on Wednesday, 26 January 2000 01:53:39 UTC