Default-Style

Default-Style: ヘッダー (HTTP)

[1] HTTPDefault-Style 頭欄を使うと、 文書の優先スタイルを指定することができます。

仕様書

構文

[4] この欄は、本体として優先スタイルの名前を指定するようです。 構文は HTML 4 仕様書で明記されていませんが、 >>5-6 の例と >>3 の規定から推測すると、

と表せます。

[3] この欄は、 HTTP 頭で欄として、また HTML の head 要素内に meta 要素として、それぞれ任意個指定できます。 [HTML 4]

複数個の指定がある場合には、一番最後のものが採用されます。 (HTTP は HTML より前と見なします。) [HTML 4]

他との関係

[14] 優先スタイルは link 要素によっても指定できます (link//スタイル・シートを参照してください)。 link の指定と Default-Style の指定では、後者が優先されます。 [HTML 4]

実装

[13] この頭欄を実装しているのは、 Gecko だけ・・・かなあ。 Mozilla の拡張であるコンテキストメニュー拡張はこの頭欄を (meta 要素として) 使っているみたいです。 (名無しさん 2004-03-27 09:39:08 +00:00)

[18] スタイル・シートを切り替えるスクリプトの類で meta 要素として Default-Style 欄を使ったものも複数見つかっています。

相互運用性

[20] 文字の種類: HTTP頭欄では ASCII または ISO/IEC 8869‐1 が使われています。一方、 HTML文書文字集合UCS です。この差分の文字を表す方法は HTML 4 では規定されていません。 HTMLmeta 要素として記述するのなら問題がないように思えるかもしれませんが、 http-equiv 属性を使った meta 要素はそもそも HTTP頭欄として使われることを想定したものなのですから、 これは ASCII 以外の文字を使うと正しく処理される保障がないことを意味します。 ASCII であっても、 HTML 4 の規定する構文がいい加減なために " を値に使うのも危険です。

[22] 非 HTML 文書: この頭欄HTML 4 で規定されていますから、 HTML 以外の文書と共に使用されたときの意味は規定されていません。

ただし、 xml-stylesheet 処理指令link 要素と同じと解釈することと規定されていますから、 Default-StyleXML 文書に適用可能と考えても互換性上の問題はないでしょう。

それ以外の文書形式では、 HTML と同じようなスタイル・シートの選択に関する規定があるものには流用できるかもしれませんが、 一般には無視されると考えるのが適当です。

安全性

[19] スタイル・シートを切り替えるスクリプトの類で meta 要素として Default-Style 欄を使ったものの中には、

tag = '<meta http-equiv="Default-Style" content="' + styleName + '">';

のようにしているものもあります。このような場合は styleName の値に注意しないと、 クロスサイト・スクリプティング脆弱性のような安全上の問題が発生することがあります。

[5] compact というスタイルを meta 要素を使って優先に指定する例

<META http-equiv="Default-Style" content="compact">

(HTML 4 仕様書より)

[6] >>5 と等価な HTTP 頭欄の例

Default-Style: "compact"

(HTML 4 仕様書より)

[23] FC2 News ( 版) http://news.fc2.com/

<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Default-Style" content="fc2">
<meta http-equiv="adalign" content="right">
<meta http-equiv="adimage" content="200">

歴史

[11] 1997年7月8日の HTML 4.0 WD http://www.w3.org/TR/WD-html40-970708/present/styles.html#h-8.1.1.5

これが Default-Style: 欄の W3C draft 初出。

[12] >>11 から現在まで規定はほとんどまったく変わってません。

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

[5] スタイル名は非 ASCII 文字列が使われることが決して少なくないですから、 >>16 は大問題です。これでは HTTP 頭欄としては使い物になりません。 また、 meta 要素 + http-equiv 属性はそもそも HTTP 頭欄として鯖が使うことを想定したものなのですから、 HTTP で表現できないもの (非 ASCII 文字) が HTML 文書文字集合に含まれるからといって使っても良いのかどうか。

title 属性の値ではなく id 属性の値を使うとか, 他の手段はなかったのでしょうか。

[17] 複数の指定がある場合、有効なのは一番最後のものとされています。 つまり meta 要素があればその最後が使われます。

折角 HTTP 頭欄によって文書の内容をいじらずに優先スタイルを操作できるというのに、 もし meta 要素があれば HTTP でいくら頑張っても上書きできません。 これは欠陥ではないでしょうか。

[21] 指定された名前のスタイルが文書に存在しない時の扱いは規定されていません。 優先スタイルおよび代替スタイルがすべて無効になると解釈するのが適当と考えられます。

[24] IRC logs: freenode / #whatwg / 20100910 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20100910#l-384

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

[29] CEA-2014-B

[30] HTML5 推奨マークアップ, , http://kstn.fc2web.com/html5_text.html

<meta http-equiv="default-style" content="style.css">

当該 html 文書のデフォルトとなる外部 CSS 文書を meta 要素で設定できる様になりました。http-equiv 属性で "default-style" を指定した上で、content 属性でデフォルトとなる外部 CSS 文書を設定する事ができます。唯、此れだけでは設定された外部 CSS 文書が有効になる訣ではないので、link 要素を一行追加します。

[31] >>30 このような HTML4HTML5 のどちらとも矛盾する解説、いったいどこから出てきたのか...