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