- From: Ian Hickson <ian@hixie.ch>
- Date: Mon, 9 Aug 2010 23:40:02 +0000 (UTC)
On Fri, 18 Jun 2010, Alexey Proskuryakov 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 On Fri, 18 Jun 2010, Jonas Sicking wrote: > > 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. Indeed. > 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=""> On Fri, 18 Jun 2010, Darin Adler wrote: > > 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. On Fri, 18 Jun 2010, Jonas Sicking wrote: > > 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. On Fri, 18 Jun 2010, Darin Adler wrote: > > One of the things I like about the current serialization rules is that > the engine can parse and then serialize something for an element that is > not yet known to the engine and it behaves no differently than one that > is know. Attributes are simply strings. Having a different rule for > boolean attributes would change that. Not a major concern, but something > that bothers me slightly. It?s one thing to be HTML-aware and another to > be future-of-HTML-aware. On Fri, 18 Jun 2010, Henri Sivonen wrote: > > Having to have a list of boolean attributes bothers me, too, from a > forward compat (and testing) point of view. It's bad enough that the > serializer has to have a list of void elements. Since it's possible to > make the serializer not require a list of boolean attributes, I think we > should choose the path the doesn't require a list. [snip further discussion along these lines] I haven't changed the spec here. I agree with those who say that hard-coding knowledge of boolean attributes is a bad idea since we don't have to. The hard-coded knowledge in the serialiser so far is all knowledge we need to have for compatibility. -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Monday, 9 August 2010 16:40:02 UTC