[1] [[WWW]] で使われる[[スタイル言語]]は、
それを識別するための[[媒体型]]名を持っています。
[[HTTP]] などの [CODE(HTTP)[[[Content-Type]]:]] 欄や、 [[HTML]] や [CODE(XML)[[[xml-stylesheet]]]] の [CODE(HTML)[[[type]]]]
属性などがこの値をとって、その[[本体]]・[[内容]]の言語を識別します。

* 媒体型

,[[text/css]]	,[[CSS]]・[[i-CSS]]
,[CODE(MIME)@en[[[text/x-css-cmml]]]],[[CMML]] 仕様書中に例示
,[[application/x-hlink+xml]]	,[[HLink]]
,[[text/javascript]]	,[[JavaScriptStyleSheet]]
,[[text/jss]]	,[[JISX4052]] スタイル指定
,[[text/x-oeb1-css]]	,[[OEB]] CSS
,[[text/smil-basic-layout]]	,[[SMIL基本配置言語]]
,[[text/spice]]	,[[Spice]]
,[[text/t-time]]	,[[T-Time]] スタイルシート
,[[text/xsl]]	,[[XSL]] ([[XSLT]])
,[[application/xslt+xml]]	,[[XSLT]]
,[[text/xslfo]]	,[[XSL-FO]]

- [4] [[i-XHTML]] では、 [[W3C]] CSS とは互換性の無い [[i-CSS]] を使うにも拘らず、 [CODE(MIME)[text/css]] を使います。
- [11] ところでこの中で [[IANA]] にちゃんと登録されているのは [CODE[text/css]] だけです。
[[#comment]]

* [CODE(HTMLe)@en[style]] 要素 [CODE(HTMLa)@en[type]] 属性 (HTML、JDCM)

[25] [[HTML]] の [CODE(HTMLe)[[[style]]]] 要素の
[DFN[[CODE(HTMLa)[type]] 属性]]は、その [CODE(HTMLe)[style]]
要素の[[内容]]の[[スタイル言語]]を指定します。

[26] 仕様書:
[[HTML 4]] <IW:HTML4:"present/styles.html#adef-type-STYLE">

[[#comment]]

** 属性値

[27] この属性の値は [CODE(SGML)[%[[ContentType]]]] です。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。

[28] この属性は必須です。従って既定値はありません。

しかし多くの [[UA]] では、欠けていた時に 
[CODE(MIME)[text/css]] を補って CSS として解釈するようです。
(この動作は最初に [CODE(HTMLe)[[[style]]]] 要素で使われたのが CSS
であり、 CSS のみであったので、当初の実装が [CODE(HTMLe)[style]]
要素に [CODE(HTMLa)[type]] 属性を持たせていなかったことによります。)

[29] [[XHTML 1]] の変種である [[OEB]]1 の [[DTD]] では 
[CODE(MIME)[text/x-oeb1-css]] に固定 ([CODE(XML)[FIXED]])
されています。 (てことは省略可能?) 

''OEB Publication Structure'' 
<http://www.openebook.org/oebps/oebps1.0.1/download/oeb101-xhtml.htm>

[30] >>11 でも、互換性のために省略しない方がいいことは言うまでもありません。

あえて省略した方が OEB1‐CSS には非対応、 W3C CSS には対応の UA
も処理してくれるだろうから・・・という気にもなってきますが、
[[XML]] なんだし、そういうことを考えるのは邪道なのかな。

もちろん、本質的な解決策はスタイル・シートは外部に追い出して、
[[内容折衝]]で [CODE(MIME)[text/css]] と自動振り分けです。

[31] HTML もどきである [[JDCM]] の [CODE(SGMLe)[style]] 要素では、
[CODE(SGMLa)[type]] 属性の値が
[CODE(MIME)[text/jss]] でなければならないとされています。

[[#comment]]

** 歴史

[32] 最初に規定した公式仕様は [[HTML4]] です。

[175] 
[[HTML]]
由来で 
[[DTBook]] の [CODE[style]] [[要素]]にもありました。


** 実装

[33] [[NC4]] は [CODE(MIME)[[[text/javascript]]]]
という値が指定されていると [[JSSS]] として認識します。
(HTML UA で CSS 以外が実装されている数少ない例。)

[34] [[T-Time]] は [CODE(MIME)[[[text/t-time]]]] 
という値が指定されていると独自のスタイル言語による指定として認識します。
(HTML UA で CSS 以外が実装されている数少ない例。)

[35] [CODE(HTMLa)[type]] 属性に対応しておらず、
何が指定されていようと CSS と解釈してしまう UA
が少なからずあると推測されます。

[[#comment]]

** メモ

[[#comment]]


* [CODE(XMLe)@en[layout]] 要素 [CODE(XMLa)@en[type]] 属性 (SMIL)

[7] [[SMIL]] の [CODE(XMLe)@en[[[layout]]]] [[要素]]の [DFN[[CODE(XMLa)@en[type]] [[属性]]]]は、
[[配置言語]]の[[属性]]を指定します。

[14] 
:[[要素名]]:[CODE(XMLe)@en[[[layout]]]]
:[[属性名]]:[CODE(XMLa)@en[[[type]]]]
([[type]] ([[型]]) より)
:[[データ型]]:[[媒体型]]
:[[既定値]]:[CODE(MIME)@en[[[text/smil-basic-layout]]]]

[13] 仕様書:
-''Synchronized Multimedia Integration Language'' <http://www.w3.org/TR/REC-smil#layout-type>

** データ型

[15] [[DTD]] では [CODE(XML)@en[[[CDATA]]]] として定義されています [SRC@en[[[SMIL 1.0]]]]。
[[SMIL 1.0]] では本文中に特に規定がありませんが、[[媒体型]]が値と思われます。

[16] [[既定値]]は [CODE(MIME)@en[[[text/smil-basic-layout]]]] で、 [[SMIL 1.0]]
で規定されている [[SMIL基本配置言語]]を表します。

[17] 仕様書中の例として [CODE(MIME)@en[[[text/css]]]] によって [[CSS2]]
を表したものがあります。

** 関連

[18] この[[属性]]は [CODE(XMLe)@en[[[layout]]]] [[要素]]の[[適合性]]や[[処理モデル]]に密接に関係しています。
[CODE(XMLe)@en[[[layout]]]] の項も参照してください。

* [CODE(XMLe)@en[style]] [[要素]] [CODE(XMLa)@en[type]] 属性 (XFrames)

[43] [CITE@en[XFrames]] ([TIME[2010-12-17 00:45:08 +09:00]] 版) <http://www.w3.org/TR/2010/NOTE-xframes-20101216/#s_style-element>

* link 要素 type 属性 (HTML, XHTML 1, XHTML 2, JDCM), xml-stylesheet 処理指令 type 擬似属性, stylesheet 要素 type 属性 (XBL)

[8] 一般に HTML の [[link]] 要素の [[type]] 属性は、
[[a]] 要素の [CODE(HTML)[type]] 属性と同じく、
リンク先の[[媒体型]]を参考として示します。
UA はこの値を見て、リンク先を読むかを検討できます。
(そして必要に応じて、リンク先のプロトコルの媒体型指定の代用とします。)

スタイル・シートの関連付けに使われる [CODE(HTML)[LINK]]
要素についても、この事情は同じです。

[9] スタイル・シートの関連付けに用いる [CODE(HTML)[LINK]]
要素をほぼそのまま [[XML]] の[[処理命令]]としたものである、
[[xml-stylesheet]] にも、 [CODE(HTML)[type]] 擬似属性があります。
仕様書ではこの擬似属性は必須とありますが、
正誤表で訂正されており、 HTML 4 のものと同じく省略可能です。

[10] [[XBL]] の [[stylesheet]] 要素は、仕様書によれば [[xml-stylesheet]]
処理命令と同じ定義ですから、同じ意味の [CODE(XBL)[type]]
属性が存在します。

[12] [[JDCM]] の [CODE[link]] 要素では、
[CODE[[[rel]]]] 属性の値が [CODE(LinkType)[[[stylesheet]]]]
のとき、 [CODE[type]] 属性の値が
[CODE[text/jss]] でなければならないとされています。

** 仕様書

- [39] [CITE@en[Associating Style Sheets with XML documents 1.0 (Second Edition)]] ([TIME[2010-10-28 23:13:17 +09:00]] 版) <http://www.w3.org/TR/2010/REC-xml-stylesheet-20101028/#PA-type>

** 意味

[36] [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]]の [CODE(XMLa)@en[[[type]]]]
[[属性]]は、参照される[[スタイル・シート]]の[[媒体型]]の[RUBYB[ヒント]@en[advisory]]を与えます。
[SRC[>>39]]

[38] この値は[[スタイル・シート]]自体を[[取出し]]するに当たって[[媒体型]]の情報が得られない場合にのみ[[応用]]が用いることを意図した[RUBYB[ヒント]@en[advisory]]です。
[SRC[>>39]]

** 属性値

[37] [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]]の [CODE(XMLa)@en[[[type]]]]
[[擬似属性]]の[[値]]は [[RFC 2616]] の [CODE(ABNF)@en[[[media-type]]]] [[生成規則]]に[[一致]]する[[文字列]]でなければ[['''なりません''']]。
その[[媒体型]]が登録されているか否かは要件に含まれていません。
[SRC[>>39]]

** 歴史

[40] [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]]の [CODE(XMLa)@en[[[type]]]]
[[擬似属性]]は最初 [[xml-stylesheet 1.0 1e]] で [[HTML 4.0]] を参照する形で定義されていました。

;; [CITE[Associating Style Sheets with XML documents]] ([TIME[2000-05-03 23:40:39 +09:00]] 版) <http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/#The%20xml-stylesheet%20processing%20instruction>

[41] そこでは [CODE(XMLa)@en[[[type]]]] [[擬似属性]]が[[必須]]とされていましたが、
[[正誤表]]で訂正されています。

;; [CITE@en[Errata for REC-xml-stylesheet-19990629]] ([TIME[2004-05-19 21:13:37 +09:00]] 版) <http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/errata>

[42] ただしこの誤りは[[正誤表]]を読まない人達の間で長らく流布していました。

* type 汎用?属性 (HTML)

[19] [[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]

[20] このような [CODE(HTMLa)[type]] 属性の使われ方は
[[IETF]] や [[W3C]] の最終版仕様にはありませんし、
[[Gecko]] や [[IE]] が実装していると言う話も聞きません。
[[WinIE]] は [CODE(HTMLa)[[[onload]]]] 属性などのための汎用属性
[CODE(HTMLa)[[[language]]]] を独自拡張として持っていますが、
[[CSS]] しか使えない [CODE(HTMLa)[style]] 用にも実装しているとはちょっと考えにくいです。
それなら [[JSSS]] にも対応していた [[Classic Mozilla]]
はと言うと、特に [CODE(HTMLa)[style]] 属性値の型を指定する方法は用意されていないようです (自動判別?)。 

[21] 
- ''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)'' <http://lists.w3.org/Archives/Public/www-html-editor/1997JulSep/0053.html>:
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'' <http://lists.w3.org/Archives/Public/www-html/1997Sep/0063.html>:
HTML には意味の異なる [CODE(HTMLa)[type]]
属性があると言う話題で、 HTML 4.0 原案中の例についての話も。

HTML 4.0 の最初の原案である
''Style Sheets in HTML documents'' <http://www.w3.org/TR/WD-html40-970708/present/styles.html#style-element>
中には、 >>1 と似た、 [CODE(HTMLe)[p]] 要素にスタイル指定を加えた例文がありました。
指摘を受けてその [CODE(HTMLa)[type]] 属性は次の原案で削られています。

ところで、その原案の前の版である
''HTML and Style Sheets'' <http://www.w3.org/TR/WD-style-970324>
の同じ例には、 [CODE(HTMLa)[type]] 属性がありません。
ですから、この原案が出された後、
W3C の HTML WG で [CODE(HTMLa)[type]] 属性が提案されたものの結局は採用されなかった可能性があります。

ただ、このたった一つの例から汎用属性(?)に出世してかなり広範囲に知れわたったのだとすると話がうますぎます。
大体不思議解説の著者は仕様書の原案なんて読まないでしょう。
[WEAK[(でも本文や DTD は読まないけど新しい tag や属性を漁ってはいるかもしれない。)]]
他にも出所があるのかもしれません。

[22] 出現例のある要素型:
- [CODE(HTMLe)[[[div]]]]
- [CODE(HTMLe)[[[fieldset]]]]
- [CODE(HTMLe)[[[font]]]]
- [CODE(HTMLe)[[[h1]]]]
- [CODE(HTMLe)[[[p]]]]

[23] 出現例: 
- ''デジタル社会論'' <http://www.maplecat.net/~tatsuki/mutter8.htm>
- ''WebDesign - CSS: Allgemeines'' <http://www.mirko-wendland.de/css/css1.html>
- ''Rapidforen-Zus&#228;tze'' <http://16037.rapidforum.com/topic=101584438734>
- ''HTML/Documentos ...'' <http://www.geocities.com/Eureka/Enterprises/5493/Html/HTML6.htm>
- ''Modele de Stil Interne'' <http://www.martines.go.ro/design/interne.htm>
- ''a) Modele interne de stiluri (pentru fiecare instructiune in parte)'' <http://www.notiuni.html.go.ro/l/intern.htm>
- ''b) Modele de stiluri definite in antetul fisierului'' <http://www.notiuni.html.go.ro/l/antet.htm>
- ''Feuilles de style'' <http://perso.wanadoo.fr/terrade/html/chap6.htm>

この属性が載っている解説本もありましたし、
解説頁等ももっとあるかもしれませんが、
検索し難いので全貌がつかめません。

[24] 
超有名というほどではないですが、かなりの範囲に広がっている (た) と推測されますけど、共通の親玉みたいなものはいるのでしょうか。別々に発生したとするとちょっと不自然な気がします。




[2] [CITE@en[Improve <style> and <script> processing and conformance]]
([[domenic]]著, [TIME[2017-09-14 18:42:48 +09:00]])
<https://github.com/whatwg/html/commit/9c612ac8641b5174849a2d3cb924fe662a8d3a09>

[3] [CITE@en[Should we remove <style>'s language-agnostic spec prose? · Issue #2995 · whatwg/html]]
([TIME[2017-09-19 22:41:22 +09:00]])
<https://github.com/whatwg/html/issues/2995>

[5] [CITE@en[<style type>/<script type> and MIME type parameters · Issue #3022 · whatwg/html]]
([TIME[2017-09-19 22:45:18 +09:00]])
<https://github.com/whatwg/html/issues/3022>

[6] [CITE@en[Improve <style> and <script> processing and conformance by domenic · Pull Request #3024 · whatwg/html]]
([TIME[2017-09-19 22:46:49 +09:00]])
<https://github.com/whatwg/html/pull/3024>

[44] [CITE@en[Editorial: update usage of the MIME Sniffing Standard]]
([[domenic]]著, [TIME[2018-02-17 03:42:58 +09:00]])
<https://github.com/whatwg/html/commit/fc82f4f8774a2e7e80f6c9477bd881f6c783b186>

[45] [CITE@en[Editorial: update usage of the MIME Sniffing Standard by domenic · Pull Request #3455 · whatwg/html]]
([TIME[2018-02-17 18:45:45 +09:00]])
<https://github.com/whatwg/html/pull/3455>