*style 要素 type 属性 (HTML, XHTML 1, XHTML 2, JDCM)
[7] [[HTML]] の [CODE(HTMLe)[[[style]]]] 要素の
[DFN[[CODE(HTMLa)[type]] 属性]]は、その [CODE(HTMLe)[style]]
要素の[[内容]]の[[スタイル言語]]を指定します。
[8] 仕様書:
[[HTML 4]]
[[#comment]]
** 属性値
[9] この属性の値は [CODE(SGML)[%[[ContentType]]]] です。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。
[10] この属性は必須です。従って既定値はありません。
しかし多くの [[UA]] では、欠けていた時に
[CODE(MIME)[text/css]] を補って CSS として解釈するようです。
(この動作は最初に [CODE(HTMLe)[[[style]]]] 要素で使われたのが CSS
であり、 CSS のみであったので、当初の実装が [CODE(HTMLe)[style]]
要素に [CODE(HTMLa)[type]] 属性を持たせていなかったことによります。)
[11] [[XHTML 1]] の変種である [[OEB]]1 の [[DTD]] では
[CODE(MIME)[text/x-oeb1-css]] に固定 ([CODE(XML)[FIXED]])
されています。 (てことは省略可能?)
''OEB Publication Structure''
[12] >>11 でも、互換性のために省略しない方がいいことは言うまでもありません。
あえて省略した方が OEB1‐CSS には非対応、 W3C CSS には対応の UA
も処理してくれるだろうから・・・という気にもなってきますが、
[[XML]] なんだし、そういうことを考えるのは邪道なのかな。
もちろん、本質的な解決策はスタイル・シートは外部に追い出して、
[[内容折衝]]で [CODE(MIME)[text/css]] と自動振り分けです。
[13] HTML もどきである [[JDCM]] の [CODE(SGMLe)[style]] 要素では、
[CODE(SGMLa)[type]] 属性の値が
[CODE(MIME)[text/jss]] でなければならないとされています。
[[#comment]]
** 歴史
[15] 最初に規定した公式仕様は [[HTML4]] です。
[[#comment]]
** 実装
[16] [[NC4]] は [CODE(MIME)[[[text/javascript]]]]
という値が指定されていると [[JSSS]] として認識します。
(HTML UA で CSS 以外が実装されている数少ない例。)
[14] [[T-Time]] は [CODE(MIME)[[[text/t-time]]]]
という値が指定されていると独自のスタイル言語による指定として認識します。
(HTML UA で CSS 以外が実装されている数少ない例。)
[17] [CODE(HTMLa)[type]] 属性に対応しておらず、
何が指定されていようと CSS と解釈してしまう UA
が少なからずあると推測されます。
[[#comment]]
** メモ
[[#comment]]
* type 汎用?属性 (HTML)
[1] [[HTML]] の多くの(?)要素で、 [CODE(HTMLa)[[[style]]]]
属性の[[スタイル言語]]を指定するために
[DFN[[CODE(HTMLa)[[[type]]]] 属性]]を使うことができるとしている解説
(書籍やウェブ頁) があります。
使用例:
[PRE(HTML)[
<[CODE(HTMLe)[[[h1]]]]
[CODE(HTMLa)[type]]="[CODE(MIME)[[[text/css]]]]"
[CODE(HTMLa)[style]]="[SAMP(CSS)[[[color]]: [[red]]]]">
ほにゃらかほいほい[CODE(HTMLe)[h1]]>
]PRE]
[2] このような [CODE(HTMLa)[type]] 属性の使われ方は
[[IETF]] や [[W3C]] の最終版仕様にはありませんし、
[[Gecko]] や [[IE]] が実装していると言う話も聞きません。
[[WinIE]] は [CODE(HTMLa)[[[onload]]]] 属性などのための汎用属性
[CODE(HTMLa)[[[language]]]] を独自拡張として持っていますが、
[[CSS]] しか使えない [CODE(HTMLa)[style]] 用にも実装しているとはちょっと考えにくいです。
それなら [[JSSS]] にも対応していた [[Classic Mozilla]]
はと言うと、特に [CODE(HTMLa)[style]] 属性値の型を指定する方法は用意されていないようです (自動判別?)。
[5]
- ''TYPE attribute on P in HTML 4.0 draft from Liam Quinn on 1997-07-14 (www-html-editor@w3.org from July to September 1997)'' :
HTML 4.0 原案中に [CODE(HTMLe)[p]] 要素に [CODE(HTML)[[CODE(HTMLa)[type]]="text/css"]] がついた例があると言う指摘。
- ''www-html@w3.org from September 1997: stupid multiple definitions for the TYPE attribute'' :
HTML には意味の異なる [CODE(HTMLa)[type]]
属性があると言う話題で、 HTML 4.0 原案中の例についての話も。
HTML 4.0 の最初の原案である
''Style Sheets in HTML documents''
中には、 >>1 と似た、 [CODE(HTMLe)[p]] 要素にスタイル指定を加えた例文がありました。
指摘を受けてその [CODE(HTMLa)[type]] 属性は次の原案で削られています。
ところで、その原案の前の版である
''HTML and Style Sheets''
の同じ例には、 [CODE(HTMLa)[type]] 属性がありません。
ですから、この原案が出された後、
W3C の HTML WG で [CODE(HTMLa)[type]] 属性が提案されたものの結局は採用されなかった可能性があります。
ただ、このたった一つの例から汎用属性(?)に出世してかなり広範囲に知れわたったのだとすると話がうますぎます。
大体不思議解説の著者は仕様書の原案なんて読まないでしょう。
[WEAK[(でも本文や DTD は読まないけど新しい tag や属性を漁ってはいるかもしれない。)]]
他にも出所があるのかもしれません。
[4] 出現例のある要素型:
- [CODE(HTMLe)[[[div]]]]
- [CODE(HTMLe)[[[fieldset]]]]
- [CODE(HTMLe)[[[font]]]]
- [CODE(HTMLe)[[[h1]]]]
- [CODE(HTMLe)[[[p]]]]
[3] 出現例:
- ''デジタル社会論''
- ''WebDesign - CSS: Allgemeines''
- ''Rapidforen-Zusätze''
- ''HTML/Documentos ...''
- ''Modele de Stil Interne''
- ''a) Modele interne de stiluri (pentru fiecare instructiune in parte)''
- ''b) Modele de stiluri definite in antetul fisierului''
- ''Feuilles de style''
この属性が載っている解説本もありましたし、
解説頁等ももっとあるかもしれませんが、
検索し難いので全貌がつかめません。
[6]
超有名というほどではないですが、かなりの範囲に広がっている (た) と推測されますけど、共通の親玉みたいなものはいるのでしょうか。別々に発生したとするとちょっと不自然な気がします。
[[#comment]]
* メモ