この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2006年3月)

2006年3月16日

CSSは意味に対する表現の定義ではない
初回投稿日時: 2006年03月16日03時43分37秒
カテゴリ: CSS HTML XHTML XML
SNS: (list)

CSSのセレクタはDOMツリーにとって都合のよい設計が行われている。都合がよいというのは処理が単純で、実用的な速度が確保できることを意味している。そのため、祖先から子孫は参照可能だが、その逆はできない。ここで問題がある。

<code><var>foo</var></code>
<var><code>foo</code></var>

これら二つの例はテキストに意味づけを行うというHTMLの原理からすると、同じ意味である。共に、ソースコード(片)であり、変数であることを意味している訳だ。(普通はvarだけで済ますかもしれないが、まあ、例ということで勘弁して欲しい。)

しかし、varcodeの両方にスタイル指定を行っていると、これらの二つは違うものに見えることがある。例えば、それぞれの要素のcolorを変更した場合、当然、子孫になっている側の要素の指定が生き残ることになる。

HTMLで文書構造を定義して、CSSで表現方法を定義する、という一般的な解説ではHTMLで定義した、共通の意味を持つテキストに対して表現方法を一括指定するかのようにとれてしまうが、実際は共通の構造の要素に対して表現方法を一括指定しているだけの実に理系的な話なのである。XMLの存在や、HTMLでも親子関係に意味のある組み合わせを考えると、当然のことではあるのだが、この説明を単純に聞いてしまうと陥りがちな勘違いかもしれない。(別にこの説明が誤解を生む、悪い表現と言いたい訳ではない。端的にHTMLとCSSの関係を分かりやすく説明できる、これ以上の言葉を知らない。)

関連するかもしれないエントリ

関連するかもしれないエントリを発見できませんでしたが、無いとは限りません。