On Fri, Jun 18, 2010 at 10:45 AM, Darin Adler <[email protected]> wrote: > On Jun 18, 2010, at 10:25 AM, Jonas Sicking wrote: > >> On Fri, Jun 18, 2010 at 10:15 AM, Alexey Proskuryakov <[email protected]> >> wrote: >>> >> >>> My reading of HTML5 is that boolean content attributes with no value are >>> serialized as e.g. <option selected="">. That's not what shipping versions >>> of Firefox or IE do, and this markup is invalid per HTML 4, which is a >>> concern for some people. >>> >>> Here are some examples of what Firefox 3.6.3 does, and what would be my >>> preference for WebKit (which currently matches HTML5): >>> >>> <option selected> -> <option selected="selected"> >>> <option selected=""> -> <option selected="selected"> >>> <option selected="foo"> -> <option selected="foo"> >>> >>> IE is different, and serializes all these examples as <option selected>. >>> That wouldn't be my preference, since that's invalid XML, but at least it's >>> valid HTML 4. >>> This is tracked as WebKit bug >>> <https://bugs.webkit.org/show_bug.cgi?id=22678>. >> >> Serializing boolean attributes as <option selected="selected"> seems like a >> very bad idea since that means that you're changing the value as you >> serialize. I.e. if you roundtrip by for example setting: >> >> myDivElement.innerHTML = myDivElement.innerHTML >> >> you've change the value of all boolean attribute. >> >> This leaves us with <option selected> or <option selected=""> which both >> parse to the same DOM in HTML. Given that basically everyone uses the first >> syntax, I would say that that is what we should serialize as. >> >> Obviously we don't want to serialize it this way in XHTML documents as this >> isn't valid XML, so there I say we should serialize as <option selected=""> > > This does mean that for HTML the serialization of the attributes depends on > the fact that they are boolean attributes. Currently the serialization > algorithm in HTML5 doesn’t handle attributes differently based on their > types. Alexey pointed out to me there no obvious way around this unless we > want to end up with things like: > > <option class> > > Instead of: > > <option class=""> > > But I agree that serializing as <option selected> is aesthetically appealing > and matches the most popular syntax used in webpages; and the fact that it > matches historical IE behavior is a bonus, too.
It would be pretty trivial to make the serializer HTML aware and hold a list of which attribute are 'boolean' in which elements, no? It already is HTML aware for a host of other reasons anyway. / Jonas
