[1] HTTP の Default-Style
頭欄を使うと、
文書の優先スタイルを指定することができます。
[4] この欄は、本体として優先スタイルの名前を指定するようです。 構文は HTML 4 仕様書で明記されていませんが、 >>5-6 の例と >>3 の規定から推測すると、
Default-Style
-body := [FWS
quoted-style-name
、
HTML では style-name
を使う方が安全かもしれない。meta
要素では一番最初と最後の FWS
は使わない方が安全かもしれない。quoted-style-name := <"> 1*(CHAR − <">) <">
quoted-pair
または SGML 実体参照・文字参照または
encoded-word
が使えるのかどうかは不明。style-name := 1*(CHAR − ",") − ((FWS / <">) *CHAR *FWS / *FWS *CHAR FWS)
CHAR := <使用できる文字>
と表せます。
[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
では規定されていません。 HTML の meta
要素として記述するのなら問題がないように思えるかもしれませんが、
http-equiv
属性を使った meta
要素はそもそも HTTP の頭欄として使われることを想定したものなのですから、
これは ASCII 以外の文字を使うと正しく処理される保障がないことを意味します。 ASCII であっても、 HTML 4
の規定する構文がいい加減なために "
を値に使うのも危険です。
[22] 非 HTML 文書: この頭欄は HTML 4 で規定されていますから、 HTML 以外の文書と共に使用されたときの意味は規定されていません。
ただし、 xml-stylesheet
処理指令は
link
要素と同じと解釈することと規定されていますから、
Default-Style
も XML 文書に適用可能と考えても互換性上の問題はないでしょう。
それ以外の文書形式では、 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 仕様書より)
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 4229 は HTML4 を出典に状態「標準」で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
[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 このような HTML4 と HTML5 のどちらとも矛盾する解説、いったいどこから出てきたのか...