#?SuikaWiki/0.9
*style 要素 (HTML, XHTML)
[1] [[HTML]] 3.2 は将来の版で使用するとして予約しています。
属性はありませんでした。
>
[3] [[HTML4]] では必須の [CODE(HTML)[type]]
属性で指定した[[スタイル言語]]の[[スタイル・シート]]が内容となります。
親要素は [[head]] 要素です。
[2] [[type]] 属性で使われる[[媒体型]]の値については、 [[type]>>2] を参照。
,[[class]] ,級 ,(なし) ,級 ,
,[[dir]] , ,(継承) ,書字方向 ,[HTML 4]
,[[id]] ,[[ID]] ,(なし) ,唯一識別子 ,
,[[lang]] ,[[言語札]] ,(継承) ,自然言語 ,[HTML 4]
,[[media]] ,[[媒体記述子]],"screen" ,適用媒体 ,[HTML 4]
,[[style]] , ,(なし) ,スタイル指定 ,
,[[title]] ,[[CDATA]] ,(なし) , ,[HTML 4]
,[[type]] ,[[媒体型]] ,(必須) ,スタイル言語 ,[HTML 4]
[[ISO-HTML]] は HTML 4 と同じ属性を定義しています。
- [18] ''HTML DTD with support for Style Sheets'' (HTML 3.2 + StyleSheet) は [CODE(HTML)[style]] 要素に [CODE(HTML)[type]], [CODE(HTML)[media]] ([CODE(SGML)[(print|screen|projection|braille|aural|all)]], 既定値 [CODE(HTML)[all]]), [CODE(HTML)[title]] を規定しています。 [CODE(HTML)[media]] 以外 [CODE(SGML)[#[[IMPLIED]]]] です。
- [20] >>18 は ''HTML DTD with support for Style Sheets'' で読点区切りの複数指定が出来るように [CODE(SGML)[CDATA]] に改められました。
[[#comment]]
**内容
[4] [[内容]]は [[SGML]] [[HTML]] では [[CDATA]]
でしたが、 [[XHTML]] では [[PCDATA]] になりました。
(これは [[XML]] では要素内容を [CODE(SGML)[CDATA]]
に出来ないためです。)
このため、 XHTML ではスタイル・シートに「<」, 「>」, 「&」
を使うことは出来ません。使った場合は XML 的に解釈されます。
([[整形式]]でなければエラーとなります。)
[5] SGML HTML や[[不思議マーク付け]]では、 [CODE(HTML)[STYLE]]
要素の内容を [CODE(HTML)[STYLE]] 要素を知らない [[UA]]
が表示してしまうのを防ぐために SGML の[[注釈宣言]]のようにしていることがよくありました。例:
この SGML の注釈宣言の初めの部分と終わりの部分のように見える2箇所について、
HTML 4 のスタイル・シートの章にはこうした機能を持つスタイル言語もあると言及しています。
[[CSS]] の仕様書
(CSS 1: ,
CSS 2: )
SGML の注釈宣言のようなものは CSS では無視する旨が書かれています。
しかしながら CSS 2 の説明では、「特別な場所では無視する。
詳しくは HTML 4 を見よ。」としか書いてありません。
(HTML 4 を見ても例示しかないし。)
結局、初めと終わり以外の場所や [CODE(HTML)[style]]
要素以外の CSS スタイル・シートで書けるのかも不明です。
CSS 2 附属書 D の文法規則によると規則など ([[選択子]]等
+ [CODE(CSS)[{]] 〜 [CODE(CSS)[}]]) の部分の外側ならどこにでも書けるように書かれています。
[7] SGML HTML で CSS 以外のスタイル言語を使う場合に SGML
風注釈宣言が使えるかはその言語に依存します。また、
[[XSL]] のような XML スタイル言語が使えるのかはよくわかりません。
[6] XHTML では [CODE(HTML)[style]] 要素の内容は
[CODE(XML)[PCDATA]] ですから、前述のように < や >
は XML 的に解釈されます。従って >>5 の例を XML
で書くと [CODE(XML)[STYLE]] 要素は空要素とみなされますし、
それ以前にもし内容に [CODE(XML)[--]]
が入っていればエラーになります。
([[注釈宣言]]に関する XML の規定により。)
XML でも従来のように [CODE(XML)[CDATA]]
扱いして気楽にスタイル指定を書きたい時は、
[CODE(XML)[CDATA]] [[マーク区間]]が使えます。例:
XHTML では XSL のような XML base のスタイル言語も使えます。
但し、その場合にはもちろん [CODE(XML)[CDATA]]
マーク区間で包むのは使えませんし、
注釈宣言での隠蔽などもってのほかです。
更に、陽に文書型宣言を行っている場合には適当に [[DTD]]
を書き換える必要があるでしょう。
[[#comment]]
*STYLE 要素 (HTML 3.0 draft)
[8] 1995/05/06 の [[HTML3.0]] の draft [[DTD]]
では [CODE(HTML)[STYLE]] 要素は次のように定義されています。
これを次のようにして使います。
親要素は [[head]] です。
[CODE(HTML)[w3c-style]] はおそらく [[DSSSL]] の subset
でしょう。
[[#comment]]
*style 属性 (HTML, XHTML 1, SVG, MathML, XUL, i-XHTML)
-[HTML4] ''Style Sheets in HTML documents''
-[SVG 1.1] ''Styling - SVG 1.1 - 20030114''
-[MathML 2.0] ''MathML Fundamentals''
-[XUL] ''XulPlanet.com - XUL Element Reference''
-[i-XHTML] ''DoCoMo Net - iモード対応XHTML''
-[CSSATTR] ''Syntax of CSS rules in HTML's "style" attribute''
-[VML] ''VML - the Vector Markup Language''
[12] [CODE(HTML)[style]] 属性は、ほとんどの [[HTML]],
[[SVG]], [[MathML]], [[XUL]], [[i-XHTML]] 要素にあって、
その要素に適用するスタイル指定を値に持ちます。
[13] 値の型は、 [[SGML]]/[[XML]] 的には [[CDATA]]
であり、どんな内容でも書けます。具体的な[[スタイル言語]]は、
その含まれるマーク付け言語の定義によります。
(ただし、 [[XSL]] のような [[XML]]
系スタイル言語が書けるのかは不明です。)
-HTML, XHTML では、 [[HTTP]] の [[Content-Style-Type:]] 欄の値で決まります。
-多くの HTML の実装では、特に外部情報が無い時に
(駄目実装は CST: のような外部情報があっても) CSS
と仮定します。
-SVG では、 [[svg]] 要素の [[contentStyleType]] 属性の値で決まります。
-MathML, XUL, i-XHTML では [[CSS]] です。
[14] [CODE(HTML)[style]] 属性はある特定の要素の表現を制御するのに便利ですが、表現と構造を分離することを考えるとあまり得策ではありません。
(例えば、一つの文書に複数のスタイル・シートを適用させることを考えると、文書そのものにスタイル指定があるのは有害です。)
その問題を理解した上で使う (永続的なスタイルの指定とか。)
のであれば問題はないでしょうが、そうでなければ
[[i-XHTML]]/[[i-CSS]] のような “[[TagSoup]] の CSS 版”
にしかならない諸刃の剣です。
[11] [[XHTML2.0]] では採用されない予定です。
[15] さて CSS を値に使う場合の書式は、 HTML 4 も CSS 1
も CSS 2 もその他の規格も、例示で簡単に説明している程度で、
はっきりとは定義していません。現在 [[WD]]
である [CSSATTR] は、
現在の書式を更に柔軟な指定が可能に拡張したものを定義しています。
CSS 以外のスタイル言語で [CODE[style]]
属性の値として使う方法を規定したものがあるのかは不明です。
- [16] MathML 2.0 ではこの属性は非推奨です。
- [17] [WEAK[2003-05-10 08:36]] ''>>11'': こんどの [[WD]] で復活
- [19] ''HTML DTD with support for Style Sheets'' (HTML 3.2 + Style Sheet) はほとんどの要素型に [CODE(HTML)[style]] 属性を定義しています。
[[#comment]]
*メモ