CSSは意味に対する表現の定義ではない
初回投稿日時: 2006年03月16日03時43分37秒
カテゴリ: CSS HTML XHTML XML
SNS:
Tweet (list)
CSSのセレクタはDOMツリーにとって都合のよい設計が行われている。都合がよいというのは処理が単純で、実用的な速度が確保できることを意味している。そのため、祖先から子孫は参照可能だが、その逆はできない。ここで問題がある。
<code><var>foo</var></code>
<var><code>foo</code></var>
これら二つの例はテキストに意味づけを行うというHTMLの原理からすると、同じ意味である。共に、ソースコード(片)であり、変数であることを意味している訳だ。(普通はvar
だけで済ますかもしれないが、まあ、例ということで勘弁して欲しい。)
しかし、var
とcode
の両方にスタイル指定を行っていると、これらの二つは違うものに見えることがある。例えば、それぞれの要素のcolor
を変更した場合、当然、子孫になっている側の要素の指定が生き残ることになる。
HTMLで文書構造を定義して、CSSで表現方法を定義する
、という一般的な解説ではHTMLで定義した、共通の意味を持つテキストに対して表現方法を一括指定するかのようにとれてしまうが、実際は共通の構造の要素に対して表現方法を一括指定しているだけの実に理系的な話なのである。XMLの存在や、HTMLでも親子関係に意味のある組み合わせを考えると、当然のことではあるのだが、この説明を単純に聞いてしまうと陥りがちな勘違いかもしれない。(別にこの説明が誤解を生む、悪い表現と言いたい訳ではない。端的にHTMLとCSSの関係を分かりやすく説明できる、これ以上の言葉を知らない。)