この文書は、W3C 標準情報 (TR) の覚書 (NOTE)、"SAC: Simple API for CSS" (2000 年 7 月 28 日付) <http://www.w3.org/TR/2000/NOTE-SAC-20000728> を ToyFish.Net が独自に翻訳したものです。この仕様書の正式なものは W3C のサイトにある英語版であり、その著作権は W3C が保有しています。また、翻訳に誤りがある可能性に留意してください。
誤訳・誤植を発見された方は ToyFish.Net までお知らせください。
翻訳の最終更新日: 2000 年 8 月 6 日
Copyright (C)2000 W3C(TM) (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
この覚書 (NOTE) では、W3C における、CSS パーサのための共通 API を開発する プロジェクトについて説明します。サンプルのソースコードがすでに ダウンロードできるようになっています ([SAC])。このソフトウェアはオープンソース (OpenSource) です。
この文書は、W3C が議論のためのみに公開する 覚書 (NOTE) です。 W3C によるこの覚書 (NOTE) の公開は、W3C や W3C チーム、あるいは W3C 会員による 支持を示すものではありません。この文書は、 CSS パーザのための汎用 API の提案を収録しています。
我々はコメントに応じてこの覚書 (NOTE) を改訂し、反響が十分にあれば SAC に費やす資源を増やす予定です。
この文書についてのコメントを募ります。公開メーリングリスト www-style@w3.org までお送りください。 アーカイブは http://lists.w3.org/Archives/Public/www-style/ に あります。
この文書は W3C スタイルアクティビティ (W3C Style Activity) の 一環として作成されました。
W3C が現在公開している勧告その他の技術文書の一覧は、 http://www.w3.org/TR にあります。
このプロジェクトの目標は、W3C 技術の普及を促進することです。
XML 書式のうまくいった点のひとつは、XML パーザ間で相互運用可能であるということです。 この相互運用性は、Simple API for XML ([SAX]) によって 実現されてきました。SAC は CSS に対してこれと同じ役割を果たします。
CSS 仕様 ([CSS1] と [CSS2]) では、 CSS のすべてのバージョンに共通の、前方互換な文法を導入しています。 今後のすべてのバージョンの CSS は、書式の制限を加えることはあっても、 この中核となる書式に従うはずです。
Simple API for CSS (SAC) は、イベントベースの CSS パージングのための標準 API を 提案するものです。SAC は、CSS1、CSS2 および将来のバージョンの CSS をサポートするように 設計されています。
SAC のモデルは、次のような点で Simple API for XML ([SAX])) のモデルに 従っています。
現在の SAC 案 ([SAC]) は、Java ([Java]) と C で入手できます。CSS2 サポートを含んだ Java での実装は「フルート (flute)」と呼ばれており、これも同じアドレスから 入手可能です。
この覚書 (NOTE) では、SAC の簡単な概略を述べるに留めますので、 詳しくは上記 SAC 案のオンラインドキュメンテーションを参照してください。
DOM レベル 2 仕様では、CSS のオブジェクトモデル ([CSSOM]) を導入しています。
SAC は次のように CSS オブジェクトモデルを補完します。
このインタフェースはパーザ自体を表します。すべての SAC パーザは この基本インタフェースを実装しなければなりません。これにより、アプリケーションが、 様々な種類のイベントをイベントハンドラに登録したり、CSS 選択子に関するファクトリ (factories) を 設定したり、CSS 文書やその一部分のパーズを開始したりすることができます。 オブジェクト指向設計においてオブジェクトのインスタンスを生成する際の 慣習的な解決策は、ファクトリメソッドを定義することです。 何らかのインタフェース "X" を実装するオブジェクトは、"createX()" で生成されます。
comment
および startSelector
イベント
のみを生成します。完全な説明については、SAC の公開ページ ([SAC]) にある ドキュメンテーションをご覧ください。
SAC の中心となるイベント処理インタフェースです。アプリケーションは
そのそれぞれにコールバック関数を実装します。実装した関数は
対応するイベントが発生したときにパーザによって呼び出されます。
このインタフェースでのイベントの順序は重要で、文書自体での情報の順序を
反映したものになります。例えば、@font-face 規則のすべての内容 (プロパティ) は、
startFontFace
イベントから endFontFace
イベントまで
順に発生します。
主な関数の一覧を示します。
CSS オブジェクトモデル ([CSSOM]) と違って、 SAC では CSS 選択子をオブジェクトとして表します。SAC の選択子は、任意の型のプライマリノードを 選択したり、それらのノードに条件を適用したりすることができます。 選択子同士や条件同士を結びつけることもできます。SAC では現在 CSS1 と CSS2 で表現できる以外の 選択子も表現できます。
プライマリノードは次のいずれかです。
選択子同士の結びつきは次のいずれかです。
SAC_CHILD_SELECTOR
や
SAC_DESCENDANT_SELECTOR)
SAC_DIRECT_ADJACENT_SELECTOR
や
SAC_INDIRECT_ADJACENT_SELECTOR
) (型ノードのある @@ 隣接選択子)SAC_NEGATIVE_SELECTOR
)CSS1 や CSS2 には要素や疑似要素以外のノードを示す選択子を表現するための 書式がない点と、ネガティブ選択子と間接的な隣接選択子も CSS1 あるいは 2 に いまのところ存在しない点に注意してください。
条件は ConditionalSelector
インタフェースで
選択子に付加することができます。
条件は次のいずれかです。
SAC_ATTRIBUTE_CONDITION
、
SAC_BEGIN_HYPHEN_ATTRIBUTE_CONDITION
、
SAC_ONE_OF_ATTRIBUTE_CONDITION
、
SAC_CLASS_CONDITION
, SAC_ID_CONDITION
)SAC_LANG_CONDITION
)SAC_POSITIONAL_CONDITION
)条件同士の結び付けは論理演算 (SAC_AND_CONDITION
、SAC_OR_CONDITION)
のみです。
このインタフェースは CSS 値の語彙単位を表します。すべての語彙単位 (コンマや数値、文字列、ピクセル単位などを含む) や、 それを越える表現 (例えば "12pt/14pt" は "12pt"、"/"、"14pt" の 3 つの部分で表現される) が 表されます。
SAC の小規模な例が Java で利用できます。