HTMLブラッシュアップ(1)物理装飾要素・属性を使う場面

HTML4.0以後、構造と装飾との分化の方向が打ち出され、その結果「物理装飾」のための要素・属性は「非推奨」であり「廃止予定」であるとされた。
しかし、制作者としては、非推奨であるからといってすぐに使用を止めるわけにはいかない。

物理装飾要素・属性をあえて使う場面は、大きく2つの場合に分けられる。その一つは、ブラウザの都合とりわけスタイルシートへの対応度を無視できず、「物理装飾は不適切」と言われてもそれらを急には排除できない場合である。もう一つは、物理装飾それ自体に意味がある場合である。
今回は、後者、つまり内容に意味を与えずにブラウザ上での見た目を指定する要素・属性を、HTML4.0以降でのStrictDTDで実際に使ってみる場合について考えてみる。

○B(太字)、I(斜体)など
HTML4.0以降では、仕様書により、「非推奨要素(属性)」は具体的に名指しで表されている。例えば、要素としてはFONT要素、属性としてはBODY要素におけるBGCOLOR属性などがこれである。
ところが、典型的な物理装飾要素であるB要素、I要素が仕様では「非推奨」とはされていないのである。その理由は不明であるが、ここでは、私なりにこれらのタグの適切な使用法を検討してみる。

***
「意味」を示す要素のなかには、一部のブラウザでサポートされていないものがある。例を挙げれば、「引用」を示すインライン要素であるQ要素は、ネスケ6では対応されているが(ブラウザ上では太字になってカギカッコがついて表示される)、ネスケ4.X以前では対応されていない。
インライン要素で引用を示す要素は他には存在しないから、このQ要素を使用せざるを得ないのだが、ネスケ4.X以前ではこのタグは無視され、引用という「文書構造上の意味」は表せない。かといって、内容の文字データに直接カギカッコをつけてしまうと、こんどはネスケ6で二重にカギカッコがついてしまう。
ここで、Q要素とB要素を併用すれば解決するのである。

HTMLでは <Q><B>Qタグを使って引用を示す</B></Q>とするが、ネスケ4.Xではこのタグは無視される。
***
Q要素のように、HTMLの仕様改良とブラウザの進化とのあいだにズレがでるのは当然であるから、BとかIとかの「緩衝的」物理装飾要素はどうしても必要である。
さらに言うと、スタイルシートに対応しないブラウザも今後存在しつづけるわけだから(それだからこそ記述言語において構造と装飾とが分化されているのである)、HTMLの側で、意味をもたせず物理的に装飾する要素は不可欠であるといえる。
例えば、引用文中の強調について、その強調が引用者のものであること(書籍ではよく「傍点筆者」が使われる)を示す要素・属性は存在しない。当該部分をSTRONGで強調しても、その部分が最初からなされた強調なのかそれとも引用者がした強調なのかは、区別できない。SPAN要素で色を変えても、SPANを無視する環境ではその差異は無視される。

***
本来は、どんな環境のもとでも表示されなければならない「構造上の意味」は、文字データそのものに記述されなければならない。現状では、どんな環境にも反映されるような要素は存在しないからである(比較的広い状況で反映される要素として「見出し」「アンカー」などがあるが、ブラウザ側にはそれらを実装で反映する義務はなく、ゆえにこれらを無視するブラウザは理論上登場しうる)。

しかし、特定の状況で表示されることを目的としたHTMLの場合は、その状況に応じた表示方法を予定することが可能である。
たとえばTeaCup掲示板への投稿の場合、BタグやIタグは有効だがSPANタグは無視される。ここで、インライン要素で「引用」を示したい場合、Q要素とI要素を併用するというのが、唯一の解決方法であろう。「引用」はStrictDTDで規定されている他のどの要素とも意味が異なる(引用は強調でも見出しでもない)ので、たとえばSTRONG要素をQ要素と併用すると、意味が変わるのである。

ここで私の主張がわかるであろうか。全ての要素に意味を決めてしまったら、上のような例の場合に、対応できないのである。