属性値の省略に関するトリビアの種

HTML、というか SGML では、属性の名前と値が同じ場合、省略することができる。例えば

<input type="checkbox" name="foo" checked="checked">

は、

<input type="checkbox" name="foo" checked>

と書ける。これってぱっと見、="checked" の部分が省略されたように見えるが、実はそうではない、というのをかなり前にどこかで見た。
いわく、省略されたのは、下記の強調部分だ、という。つまり、省略後に残ったのは属性名ではなく属性値だというのだ。

<input type="checkbox" name="foo" checked="checked">

プログラミング言語なんかでは「省略時のデフォルト値」という考え方がよく使われているので、この話を読んだ時にはちょっと驚いた。どうしてそういう定義になっているのか、後で調べようと思いつつ早数年。今度こそ後で調べよう……。

[2007-01-11 追記] 調べた。

鳩丸よもやま話 - SGML の短縮タグ機構 - 属性名の省略
http://bakera.jp/hatomaru.aspx/yomoyama/shorttag#section1-2

上記のページによると、「属性の名前と値が同じ場合、省略することができる」のではなく、「属性値が択一式の時に限」って「属性名の省略もでき」る、が正解らしい。