[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[]] ] ]] と定義しちゃったのか。その辺の時系列順は要調査。) [6] [[Web Forms 2.0]] で規定されている[[ブール型属性]]に関しては、[[列挙型]]の項もご覧下さい。 [10] [CITE[IRC logs: freenode / #whatwg / 20100111]] ([TIME[2010-01-13 07:32:59 +09:00]] 版) ;; 「boolean」という名称が属性値が true/false であるかのような誤解を招いているきらいはあれど、 より良い名前がないので改称はできない。 * 大文字と小文字 [7] [[ブール型属性]]の[[属性値]]は、[[大文字]]と[[小文字]]を区別しません。 [[ASCII大文字・小文字不区別]]です。 [SRC[[[Web Applications 1.0]]]] [8] ([[互換性大文字・小文字不区別]]などではなく) [[ASCII大文字・小文字不区別]]である、という性質は、 実質的には「[CODE(char)[[[i]]]]」が[[属性名]]に入っている以下の [[HTML]] [[属性]]にのみ影響があります。 - [CODE(HTMLa)@en[[[d''i''sabled]]]] - [CODE(HTMLa)@en[[[formnoval''i''date]]]] - [CODE(HTMLa)@en[[[h''i''dden]]]] - [CODE(HTMLa)@en[[[''i''smap]]]] - [CODE(HTMLa)@en[[[''i''temscope]]]] - [CODE(HTMLa)@en[[[mult''i''ple]]]] - [CODE(HTMLa)@en[[[requ''i''red]]]] - [CODE(HTMLa)@en[[[noval''i''date]]]] [9] 22個中8個が「[CODE(char)[[[i]]]]」を含むということで、意外と多いですね。 [11] [[HTML5]] に適合しない[[属性]]だと更に: - [CODE(HTMLa)@en[[[nores''i''ze]]]] [12] [CITE@en[HTML5 Revision Tracker]] ([TIME[2010-04-13 22:55:29 +09:00]] 版) [13] [CITE['''['''whatwg''']''' Serialization of boolean content attributes]] ([TIME[2010-08-10 09:29:33 +09:00]] 版)