#?SuikaWiki/0.9
[1]
[SAMP(HTML)[<[CODE(HTMLe)[[[option]]]] [CODE(HTMLa)[[[selected]]]]>]] の [CODE(HTMLa)[selected]] のように、
指定されていれば真、指定されていなければ偽である属性を、[DFN[[RUBYB[真偽値属性] [boolean attribute]]]]と呼びます。
[2] これは、 [[SGML]] 的には、[[列挙値属性]]の[[属性名]]と [CODE(SGML)[[[vi]]]]
が省略できる (ことがある) ことを利用しています。
>>1 の例は、 [[DTD]] では、 [SAMP(SGML)[]] と定義されます。
マークの最小化を使わないと
[SAMP(HTML)[<[CODE(HTMLe)[option]] [CODE(HTMLa)[selected]]="selected">]] になります。
[3]
[[XML]] のように属性名が省略できない時は、 >>1 のような表現はできず、 >>2 のように書かなければなりません。ですから、真偽値属性はあまり有り難味がありません。
むしろ奇妙な感じもしますから、他の属性の指定の仕方を検討した方がいいかもしれません。
[4] ところで[Q[真偽値属性]]って、 HTML の用語なのでしょうか、
それとも元から SGML の世界で使われていた用語でしょうか。
SGML でも列挙型属性を使って属性の指定を簡単化するのはよくやりますが、選択肢一つだけで真偽になるのはあまり無い気がします。 (気のせい?)
[5]
[CODE(HTMLa)[[[border]]=border]] 属性のように、真偽値属性だけど [CODE(HTML)[[CODE(HTMLa)[border]]=[VAR[]]]] のせいで無理矢理 [CODE(HTML)[[CODE(HTMLa)[[[frame]]]]=border]] にしちゃったものもあったりします。
(この場合非 SGML 的に [CODE[ border [ = [VAR[]] ] ]] と定義しちゃったのか。その辺の時系列順は要調査。)
([[名無しさん]])