Re: [cowan@mercury.ccil.org: Questions about HTML void elements]

On 01/21/2011 09:30 AM, Henri Sivonen wrote:
>> I will note that in my web pages, I emit separate open and close
>> tags for a number of empty svg elements, like<path></path>. I don't
>> do so because it is required for XML validity, XHTML5 conformance,
>> or even HTML5 conformance. I do so because there are legacy user
>> agents out there that don't know the full set of elements which are
>> to be implicitly closed and would have a tendency to build an
>> incorrect DOM if I didn't do this.
>
> I did so, too this week, as it happens. (And the SVG part worked fine
> on Planet Intertwingly. However, a relative url in<img src>  didn't
> work as I expected and<figcaption>  apparently isn't on the white
> list in Venus.)

I'll add figcaption to the whitelist, but the problem with the relative 
uri is due to the lack of an xml:base in the feed.

> The difference is that<hr>a</hr>  results in "a" being the next
> sibling of hr but<svg><path>a</path></svg>  results in "a" being the
> first child of path. Thus, there's no damage to the mental model in
> the SVG case.

That's one difference.  The other difference is that <hr/>a results in 
"a" being the next sibling of hr, but <svg><path/><path/></svg> results 
in the second path being a child of path in legacy html and sgml 
parsers.  What's worse is that in a number of cases, this subsumes the 
remainder of the document.

HTML is an unadulterated mess.  The "pure" mental model that you seem to 
aspire to which would suffer "damage" as a result of totally innocuous 
closing-tags simply does not exist.  The absolute best that can be hoped 
for is a simple set of rules that people can follow.

"Always explicitly close everything but <br>" is such a simple rule.

- Sam Ruby

Received on Friday, 21 January 2011 15:38:19 UTC