CST

Content-Style-Type: ヘッダー (HTTP)

[1] Content-Style-Type: ヘッダーは、文書の既定のスタイル言語を指定するものとして提案されていました。

[8] 00年代には一部で実装されており、使われてもいましたが、 ほとんど意味がなく、現在では使われていません。

[11] 本項はかつて存在した HTTPヘッダーについて扱っています。 本項の内容は当時の状況を説明したもので、現状とは異なることがあります。

代替

[23] 古い HTML文書では <meta http-equiv> により Content-Style-Type が指定されているかもしれませんが、 今となっては全く意味がありませんから、削除して構いません。

構文

[3] HTML 4 仕様書では、 CSS を使う時に text/css という値を使うということだけが示されていて、 Content-Style-Type: 欄本体の構文には一切言及がありません。 インターネット媒体型を指定するように見えますが、 それすらはっきりしません。

[28] 仕様書でははっきりしませんが、実際には媒体型を指定するものと理解されています。 ただし、媒体型の引数が指定できるのかどうかは、 (HTML で媒体型を使う他の場所と同様に) はっきりしません。 (ただし、 charset 引数の用例はあります。)

[29] >>7 の HTML 4 の規定より、 Content-Style-Type 欄は複数個指定できることがわかります。 HTTP の規定によれば、 同じ名前の複数個の頭欄を使用できるのは読点区切りで複数個値を指定できるもの (HTTP RFC の ABNF でいう #something) だけです。ですから、 HTML 4 仕様書には明記されていませんが読点区切りの指定も認めざるを得ません。

複数個指定しても >>7 の通り最後のもの以外は無視されるのですが、 鯖ソフトウェア内の処理の関係か複数個の CST を吐いている例はしばしば見かけます。

[30] >>3-29 より Content-Style-Type: 欄の構文は次の通り推定できます。

媒体型引数

[4] 稀に charset 引数が指定されていることがありますが、 一般には不要と理解されています。 Content-Type: 欄のような場合とは異なり、対応する実体が直接存在しているわけではなく、 Content-Style-Type: の役割は 単に書式 (媒体型) を識別するに過ぎないからです。

既定スタイル言語

[7] UA は、文書の既定のスタイル言語を次の優先順位で決定するべきです。 [HTML 4]

  1. meta 要素を使った Content-Style-Type 指定のうち、文書順で最後のもの
  2. HTTP 頭欄による Content-Style-Type 指定のうち、一番後のもの
  3. 既定値: text/css

[12] >>7 の順序は、 meta 要素内の HTTP 頭欄代替表現は、実際の HTTP 頭欄の後に続いて存在すると考えることで、 一番最後の頭欄の、一番最後の項目と言い換えることが出来ます。

[13] 一方で、 style 属性を使っていながらスタイル言語が明記されていない文書は不正 (incorrect) です。 また、著述工具は既定スタイル言語情報を生成して UA が text/css という既定値を使わなくて済むようにするべきです。 [HTML 4]

このように規定されていることから、 text/css を既定値とするのは従来の文書との互換のためだけであることがわかります。

[26] >>13 もっとも、 HTTP 以外の転送プロトコルや local のファイルなどで、 Content-Style-Type 相当の指定が無い場合にも 3 番目に行くかもしれません。

それを考えると、 text/css 以外のスタイル言語を style 属性で使う時には meta 要素でも指定する方が安全かもしれません。

[31] DTV A S E L 1 (DASE-1) P 2: D A E ATSC Standard http://www.atsc.org/standards/a_100_2.pdf は、 HTTP 頭欄を使わず、 meta 要素の name 属性の値が Content-Style-Type 属性であるものを使います。その content 属性の値は媒体型です。省略時の既定値は text/css です。 5.1.1.6.7.2 Default Style Content Type (名無しさん [sage])

[36] HTML 4Content-Style-Type に関わる要件は次の5つあります:

  1. Authors must specify the style sheet language of style information associated with an HTML document.
  2. Authors should use the META element to set the default style sheet language for a document.
  3. The default style sheet language may also be set with HTTP headers.
  4. Documents that include elements that set the style attribute but which don't define a default style sheet language are incorrect.
  5. Authoring tools should generate default style sheet language information (typically a META declaration) so that user agents do not have to rely on a default of "text/css".

(名無しさん)

[37] >>36 文面通りに解釈すると、

(名無しさん)

[38] Setting the default style sheet language on your Web site - W3C Q&A Weblog ( 版) http://www.w3.org/QA/2007/09/setting-default-style-sheet.html (名無しさん)

[22] Apache.htaccess を使って >>5 を指定するためには、

<IfModule mod_headers.c>
  Header set Content-Style-Type "text/css"
</IfModule>

と書きます。 (mod_headers が組み込まれている時のみ有効。)

歴史

[20] この欄の W3C draft 初出は 『HTML3 and Style Sheets』 (1996年7月10日) http://www.w3.org/TR/WD-style-960710#lang です。 (この WD はその後の HTML 4 のスタイル・シートの章の直接の祖先です。)

この時点で既に HTML 4 最終版とほぼ同じ規定ですが、 style 要素型の type 属性は必須でありませんでしたし、 style 属性を使っていても CST: 欄は必須ではありませんでした。 現在でも CSS が既定値になっている (>>7) のはこの時以来の名残でしょう。

[21] この措置は当時の NNIE の実装との互換性を考えれば妥当なものでした。 それが HTML 4 では必須化されたのは未来との互換性を重視したとでも言えましょう。

[24] Content-Style-TypeContent-Script-Type のような、 HTTP RFC で規定されていない HTTP 頭欄を使うことについては、 HTML 4 の策定中から批判はありました。また、 style 属性や事象属性の型を文書単位でしか指定できないことを指摘する意見もありました。 (たとえば www-html で何度か話題になっています。)

そういう声を押し切って HTML 4 に残った理由は (HTML WG の議事録は公開されていないので) 分かりません。 (W3C WG の議事録は一定期間後に公開するべきだよね?)

[10] RFC 4229HTML4 を出典に IANA登録簿に状態「標準」 で登録しています >>9

[43] CEA-2014-B

メモ

[16] SVG には svg 要素に contentStyleType 属性があり、 これを使って既定スタイル言語を指定します。

(Styling - SVG http://www.w3.org/TR/SVG/styling#ContentStyleTypeAttribute)

[17] >>16 ちなみにその既定値は text/css です。

[18] >>16-17 古い WD では、 Content-Style-Type: を見ていましたが、削除されました。

(Styling http://www.w3.org/TR/1999/WD-SVG-19991203/styling.html#StyleAttribute)

既定値はやはり text/css でした。

[19] http://www.w3.org/TR/css-style-attr実際には text/css 以外は style 属性では使われないと語ってます。

[25] Content-Style-TypeContent-Script-Type の役割を実現する方法は幾つかあります。

  • HTTP の頭欄として指定する : HTML 4 の方法
  • 文書の大域的マークとして指定する : SVG の方法
  • 局所的マークとして指定する: 事象属性に対する WinIE 独自拡張の language 属性の方法
  • 属性値内で指定する : 事象属性についての WinIE 独自拡張の、属性値の最初の javascript:vbscript: で判別する方法
  • 諦めて固定にする : 多くのブラウザの style 属性のように CSS に固定
  • そもそも style 属性や事象属性は使わない : 表現と構造の分離原則的に正統な方法

どれも一長一短で、結局全部乱立する羽目になったわけです。

[32] Content-Script- and Content-Style-Type from Bjoern Hoehrmann on 2004-05-28 (www-qa@w3.org from May 2004) http://lists.w3.org/Archives/Public/www-qa/2004May/0045 (名無しさん)

[33] 無料動画:映画、海外ドラマ、アニメほか|パソコンテレビGyaO[ギャオ] (2007-07-04 20:19:06 +09:00 版) http://www.gyao.jp/

<meta http-equiv="Content-script-Type" content="text/javascript; charset=Shift_jis" />
<meta http-equiv="Content-style-Type" content="text/css; charset=Shift_jis" />

(名無しさん)

[34] 無料動画:映画、海外ドラマ、アニメほか|パソコンテレビGyaO[ギャオ] (2007-07-04 20:19:06 +09:00 版) http://www.gyao.jp/

<meta http-equiv="Content-script-Type" content="text/javascript; charset=Shift_jis" />
<meta http-equiv="Content-style-Type" content="text/css; charset=Shift_jis" />

(名無しさん)

[35] マンション投資 : マンション投資・不動産投資物件、投資型/投資用マンション - 日経住宅サーチ (2007-08-02 21:50:10 +09:00 版) http://sumai.nikkei.co.jp/invest/

<meta http-equiv="Content-Style-Type" content="text/css; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript; charset=Shift_JIS">

(名無しさん)

メモ

[39] Styling – SVG 1.1 (Second Edition) ( ( 版)) http://www.w3.org/TR/2011/REC-SVG11-20110816/styling.html#DefaultStyleSheetLanguage

[40] IRC logs: freenode / #whatwg / 20140121 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20140121

[41] Web Applications 1.0 r8592 PARSER CHANGE: remove some attributes from the SVG attribute mapping ( ( 版)) http://html5.org/tools/web-apps-tracker?from=8591&to=8592

[27] Note how the SVG currently implemented in browsers is a mix of SVG 1.… · whatwg/html@969c45b ( 版) https://github.com/whatwg/html/commit/969c45b2478d1d2d3be8564ec85dc316a53c8bcf

[42] Do not allow http-equiv values curated via wiki (domenic著, ) https://github.com/whatwg/html/commit/72d084b81fa94915518b9cf279afef87d835e88e