* 単純リンク系 [CODE(HTMLa)@en[type]] 属性

[123] [[HTML]] の [CODE(HTMLe)@en[[[a]]]] [[要素]]などの[[単純リンク]]の 
[DFN[[CODE(HTMLa)@en[[[type]]]] [[属性]]]]は、[[リンク先]]の[[MIME型]]を表す[[ヒント]]です。

** 仕様書

[REFS[
- [122] [CITE@en[RFC 5988 - Web Linking]] ([TIME[2012-03-22 09:19:11 +09:00]] 版) <http://tools.ietf.org/html/rfc5988#page-9>
]REFS]

** 意味

[124] [[HTTP]] の [CODE(HTTP)@en[[[Link:]]]] 欄の [DFN[[CODE(HTTP)@en[[[type]]]] [[引数]]]]は、
[[リンク]]を[[解参照]]すると得られるべき[[MIME型]]を示す[[ヒント]]です。 [SRC[>>122]]

** 構文

*** HTTP [CODE(HTTP)@en[Link:]] 欄

[125] [[HTTP]] の [CODE(HTTP)@en[[[Link:]]]] 欄の [CODE(HTTP)@en[[[type]]]] [[引数]]は必須ではありません。
また、複数あっては[['''なりません''']] [SRC[>>122]]。

[126] 値は[[MIME型]]です。すなわち、 [[RFC 4288]] の [CODE(ABNF)[[[type-name]]]]
と [CODE(ABNF)@en[[[subtype-name]]]] を [CODE(char)[[[/]]]] で連結したものです [SRC[>>122]]。
または、これを [CODE(char)[[["]]]] で括ったものです [SRC[>>122]]。

;; [127] [[ABNF]] 構文定義上、 [CODE(ABNF)@en[[[quoted-string]]]] の[[部分集合]]ではあるものの、
そのものではありません。従って [CODE(ABNF)@en[[[quoted-pair]]]] は使えないことになりますが、
それが意図通りなのかどうかは不明です。

** メモ

,要素	,仕様書
,[[a]]	,[HTML4]
,[[area]]	,[HTML4]
,[[link]]	,[HTML4]

[10] リンク先の資源の[[媒体型]]を示します。省略可能で、既定値は値なしです。

媒体型にはそのパラメーターも指定できます。
([HTML4] などでは不明瞭ですが、1992年くらいの古い仕様で既に媒体型パラメーターの使用例があります。)

[11] リンク先資源の転送プロトコルが媒体型 (またはそれに相当するもの)
の情報を持っている時には、この値は使われません。
そうでない時にはこの値が使えます。

また、 [[UA]] や利用者は、リンク先資源を取り寄せる前に、この属性の値を見て資源を取り寄せるか否かを判断できます。

[12] HTML の仕様書では触れられていませんが、 [[HTTP]] のように[[内容折衝]]可能なプロトコルを使う場合は、
[[Accept:]] 欄 (またはそれに相当するもの) 
にこの値を使うと、リンク元資源の著者の意図に合った資源を入手できる可能性が高くなります。

逆にリンク元資源の著者は、転送プロトコルで内容折衝が行われると分かっていて、しかも特定の媒体型の版を参照したいわけではない場合は、この属性を明示し''ない''方が良いと思われます。

[13] この属性は 1992年ごろの古い仕様書に登場して使われていましたが、途中で仕様書からは一旦消滅して後に又復活しています。

かつては [[content-type]] という名前で使われていたこともあったようです。

- [26] >>10 XHTML 2.0 WD では値の型が [[HTTP]] の [[Accept:]] 欄のものになったので、この曖昧性はなくなっています。

- [29] [CODE(XPath)[[CODE(HTMLe)[[[param]]]]/@[CODE(HTMLa)[type]]]] の値に [[WinIE]] では [CODE[video/*]] みたいのが使えるらしいです。もちろん [[HTML4]] では不可。 ''TYPE Attribute | type Property (PARAM) (Internet Explorer)'' <http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/type_11.asp>
- [30] ちなみに [CODE(XPath)[[CODE(HTMLe)[param]]/@[CODE(HTMLa)[type]]]] 自体は [[WinIE6]]+ で対応っぽい。

[[#comment]]


** a 要素・link 要素 type 属性 (HTML, XHTML 1)

[52] [[HTML]] の [CODE(HTMLe)[[[a]]]] 要素・[CODE(HTMLe)[[[link]]]]
要素の [DFN[[CODE(HTMLa)[type]] 属性]]は、
[CODE(HTMLa)[[[href]]]] 属性で示したリンク先の資源の[[媒体型]]のヒントを指定します。

[110] [[スタイル・シート]]の指定のために用いる [CODE(HTMLe)@en[[[link]]]] [[要素]]の
[CODE(HTMLa)@en[[[type]]]] [[属性]]に関しては、 [[スタイル・シートの媒体型]]の項もごらんください。

[79]
仕様書: 
- [[HTML 4]]
-- [CODE(HTMLa)[type]] 属性 <IW:HTML4:"struct/links.html#adef-type-A">
-- [CITE[12.3.2 Links and external style sheets]]
<IW:HTML4:"struct/links.html#linksandss">
-- [CITE[HTML 4 Changes]]
<IW:HTML4:"appendix/changes.html#h-A.1.1.8">

[[#comment]]


*** 属性値

[57] この属性の値は [CODE(SGML)[%[[ContentType]]]] です。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。

HTML 4 仕様書には大文字・小文字を区別しないとなっていますが、
そうすると[[引数]]の扱いに問題があります。
詳しくは [CODE(SGML)[%[[ContentType]]]] の説明を見てください。

[58] この属性は省略可能です。

[[#comment]]


*** 応用

[53] [[UA]] が対応していない媒体型のときに内容を取りに行かずに fallback
機構を使うことが想定されています [HTML 4]。

特に[[スタイル・シート]]への [CODE(HTMLe)[link]]
では[[スタイル言語]]を表します [HTML 4]。 UA 
は対応している言語だけ取りに行くようにすることで資源を節約できます。

[54] 資源をとりに行くときの [CODE(HTTP)[[[Accept]]:]]
欄の基にするのは良い考えでしょう。

[[#comment]]


*** 他との関係

[59] 媒体型によっては [CODE(MIME)[[[charset]]]] 引数がありますが、
これのヒントも与える場合は [CODE(HTMLa)[type]] 属性ではなく
[CODE(HTMLa)[[[charset]]]] 属性を使うべきでしょう。

[60] 親戚筋の属性に自然言語のヒントを指定する [CODE(HTMLa)[[[hreflang]]]] があります。

[[#comment]]


** 歴史

[61] [CODE(HTMLe)[link]] 要素の [CODE(HTMLa)[type]] 属性は 
''HTML DTD with support for Style Sheets'' 
<http://www.w3.org/TR/NOTE-html-970531.html> で追加されました。

[74] 
[[HTML]]
由来で 
[[DTBook]] の [CODE[link]] [[要素]]にもありました。



*** メモ

[55] 著者は実際の資源の媒体型と [CODE(HTMLa)[type]]
のヒントが整合した状態であることの責任があります [HTML 4]。

[56] よく、リンク先が [[PDF]] や [[Flash]] や [[Word]]
など HTML 以外の形式であるときに閲覧者に注意を促す記述がありますが、
著者の[[スタイル・シート]]と合わせてそのような記述を実現するためにも使えるでしょう。

[[#comment]]


** [CODE(XMLe)@en[atom:link]] 要素 [CODE(XMLa)@en[type]] 属性

[100] [[Atom 0.3]] の [[Link construct]]、[[Atom 1.0]] の [CODE(XMLe)@en[[[atom:link]]]] [[要素]]の 
[DFN[[CODE(XMLa)@en[[[type]]]] [[属性]]]]は、
[[リンク先]]の[[資源]]の[[表現]]の[[媒体型]]の[[ヒント]]を表します。

[112] 
:状態:[[IETF]] [[提案標準]]
:[[要素]]:[[Atom 0.3]] [[Link construct]] な[[要素]]、[[Atom 1.0]] [CODE(XMLe)@en[[[atom:link]]]]
:[[属性名]]:[CODE(XMLa)@en[[[type]]]]
:[[データ型]]:[[媒体型]]
:[[既定値]]:(なし)

*** 仕様書

-[113] [DEL[[CITE[The Atom Syndication Format 0.3 (PRE-DRAFT)]] ([TIME[2006-12-22 17:03:44 +09:00]] 版)]]
<http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html#rfc.section.3.4.2>
-[114] [CITE@en[RFC 4287 - The Atom Syndication Format]] ([TIME[2009-05-20 11:24:12 +09:00]] 版) <http://tools.ietf.org/html/rfc4287#section-4.2.7.4>

*** 属性値

**** データ型

[101] [[属性値]]は登録されている [[RFC 2045]] [SRC@en[[[Atom 0.3]]]] か
[[RFC 4288]] [SRC[[[Atom 1.0]]]] の[[媒体型]]でなければ[['''なりません''']]。

[116] [[RELAX NG]] [[スキーマ]]上の[[データ型]]は [CODE(XML)@en[[[atomMediaType]]]] です
[SRC[[[RFC 4287]] 4.2.7.]]。

**** 既定値

[102] [[Atom 0.3]] ではこの[[属性]]は[['''必須''']]です [SRC@en[[[Atom 0.3]]]]。

[115] [[Atom 1.0]] ではこの[[属性]]は[[必須]]ではありません。

*** 処理モデル

[103] [[リンク]]の [CODE(XMLa)@en[[[href]]]] [[属性値]]の [[URL]]
を[[解参照]]した場合に得られると期待される[[表現]]の[[ヒント]]として使って[['''構いません''']]。
しかし、これは実際の[[媒体型]]を上書きはしません。
[SRC@en[[[Atom 0.3]]、[[RFC 4288]] 4.2.7.3.]]

* param 要素 type 属性 (HTML, XHTML 1)

[67] [[HTML]] の [CODE(HTMLe)[[[param]]]] 要素の
[DFN[[CODE(HTMLa)[type]] 属性]]は、
[CODE(HTMLa)[[[valuetype]]]] が [CODE(HTML)[[[ref]]]]
の  [CODE(HTMLa)[[[value]]]] 属性値 ([[URI参照]])
によって指された[[資源]]の[[媒体型]]を指定します。

[68] 仕様書:
[[HTML 4]] <IW:HTML4:"struct/objects.html#adef-type-PARAM">

[[#comment]]


*** 属性値

[69] この属性の値は [CODE(SGML)[%[[ContentType]]]]
です。

大文字・小文字は区別しないと HTML 4 仕様書にはありますが、
媒体型[[引数]]値を考えると区別の必要があるはずです。

[71] この属性は省略可能です。

[[#comment]]


*** メモ

[70] 他のリンク系要素の [CODE(HTMLa)[type]]
属性と同じく [[UA]] のために指定するらしいですが [SUP[ [HTML 4] ]]、
[CODE(HTMLa)[param]] [CODE(HTML)[ref]] は UA
ではなく[[物体]]の実装が解釈するので、 UA
的にはあってもあまり嬉しくないと思われます。
(HTML 仕様的には適用範囲外の方法で) UA 
と物体の間の界面を通じて引き渡してこそ有意義に使われる (かもしれない)
でしょう。

* 要素内容系 [CODE(XMLa)@en[type]] 属性

** [CODE(XMLa)@en[type]] 属性 (Atom 1.0)

[111] [[Atom 1.0 [CODE(XMLa)@en[type]]]] の項を参照。

** [CODE(XMLa)@en[type]] 属性 (Atom 0.3)

[96] [[Atom 0.3]] の [[Content construct]] の
[DFN[[CODE(XMLa)@en[type]] [[属性]]]]は、
[[内容]]の[[媒体型]]を表します [SRC@en[[[Atom 0.3]]]]。

:状態:[[廃止]] → [[Atom 1.0]] [[Text construct]]/[CODE(XMLe)@en[atom:[[content]]]]
[CODE(XMLa)@en[[[type]]]]
:[[要素]]:[[Text construct]] の[[要素]]
:[[局所名]]:[CODE(XMLa)@en[[[type]]]]
:[[データ型]]:[[媒体型]]
:[[既定値]]:[CODE(MIME)@en[[[text/plain]]]]

仕様書:
[CITE[The Atom Syndication Format 0.3 (PRE-DRAFT)]] ([TIME[2006-12-22 17:03:44 +09:00]] 版) <http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html#rfc.section.3.1.1>

*** 属性値

[97] [[属性値]]は[[登録]]された [[RFC 2045]] [[媒体型]]でなければ[['''なりません''']]
[SRC@en[[[Atom 0.3]]]]。

*** 既定値

[98] [[既定値]]は [CODE(MIME)@en[[[text/plain]]]] です [SRC@en[[[Atom 0.3]]]]。 

*** 関連

[99] [[Atom 1.0]] では [[Text construct]] や
[CODE(XMLe)@en[atom:[[content]]]] [[要素]]の
[CODE(XMLa)@en[[[type]]]] [[属性]]に相当しますが、
[CODE(XMLa)@en[[[mode]]]] [[属性]]と統合されているので完全に同じではありません。

* スタイル・シート系 [CODE(HTMLa)@en[type]] 属性

[2] [[スタイル・シートの媒体型]]の項を参照してください。

[7] これに該当する[[属性]]には、次のものがあります。
- [CODE(HTMLe)@en[[[style]]]] [[要素]] [CODE(HTMLa)@en[[[type]]]] [[属性]] ([[HTML]]、[[SVG]] など)
- [CODE(XMLe)@en[[[layout]]]] [[要素]] [CODE(XMLa)@en[[[type]]]] [[属性]] ([[SMIL]])
- [CODE(HTMLe)@en[[[link]]]] [[要素]] [CODE(HTMLa)@en[[[type]]]] [[属性]]
([[HTML]]、 [CODE(HTMLa)@en[[[rel]]]] [[属性]]に [CODE(HTML)@en[[[stylesheet]]]]
が含まれる場合)
- [CODE(XML)@en[[[xml-stylesheet]]]] [[処理指令]] [CODE(XMLa)@en[[[type]]]] [[擬似属性]]
- [CODE(XMLe)@en[[[stylesheet]]]] [[要素]] [CODE(XMLa)@en[[[type]]]] [[属性]] ([[XBL1]])
- [[大域属性]] (?) [CODE(HTMLa)@en[[[type]]]] ([[HTML]])



* スクリプト系要素 type 属性 (HTML, XHTML 1, SVG, XBL, VoiceXML, その他)

[25] [[HTML]] の [CODE(HTMLe)[[[script]]]] 要素型をはじめとする、
各種マーク言語のスクリプト系要素型の [DFN[[CODE(HTMLa)[type]] 属性]]については、
[[スクリプトの媒体型]]の説明をご覧ください。

* 異体説明における [CODE(HTTP)@en[type]] 属性 (HTTP)

[3] [[異体説明]]における [DFN[[CODE(HTTP)@en[[[type]]]]]] [[異体属性]] [SRC[>>1]] は
[[MIME型]]を表すもので、 [CODE(HTTP)@en[[[Content-Type:]]]]
[[ヘッダー]]に相当するものです。

;; [4] ただし [CODE(HTTP)@en[[[charset]]]] [[引数]]には専用の[[異体属性]]が用意されています。

** 仕様書

[REFS[
- [1] [CITE@en[RFC 2295 - Transparent Content Negotiation in HTTP]] ([TIME[2014-08-31 19:36:42 +09:00]] 版) <http://tools.ietf.org/html/rfc2295#section-5.4>
]REFS]

** 構文

[5] 属性値は、[[MIME型]]です [SRC[>>1]]。

;; [6] [[RFC 2068]] の定義が参照されています。

* 歴史

[117] [CITE@en-GB-x-Hixie[Web Forms 2.0]]
([TIME[2009-01-05 20:07:15 +09:00]] 版)
<http://www.whatwg.org/specs/web-forms/current-work/#type>

[118] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-03-29 23:00:39 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4878&to=4879>

[119] [CITE@en[Web Applications 1.0 r5450     Make ol'''''''''['''''''''type=x''''''''']''''''''' case-sensitive in HTML. Make <ul type='disc'> case-insensitive in XML.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=10245]]
( ([TIME[2010-09-09 07:31:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5449&to=5450>

[120] [CITE@en[Web Applications 1.0 r5478   Reintroduce <ol type> as conforming.Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=9798]]
( ([TIME[2010-09-25 06:59:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5477&to=5478>

[121] [CITE[Styling – SVG 1.1 (Second Edition)]]
( ([TIME[2011-08-10 12:35:27 +09:00]] 版))
<http://www.w3.org/TR/2011/REC-SVG11-20110816/styling.html#StyleElementTypeAttribute>

[8] [CITE@en[XHTML™ 2.0 - Module Definition Conventions]]
([TIME[2010-12-17 04:25:02 +09:00]] 版)
<http://www.w3.org/TR/2010/NOTE-xhtml2-20101216/abstraction.html#dt_ContentTypes>

[9] [CITE@en[Remove the HTMLAreaElement.hreflang and type IDL attributes · whatwg/html@790479a]]
([TIME[2015-11-11 21:30:58 +09:00]] 版)
<https://github.com/whatwg/html/commit/790479ab1ba143efc27d1f92cd0465627df48fb0>

[14] [CITE@en[Obsolete hreflang and type content attributes on <area> · whatwg/html@c49398f]]
([TIME[2015-11-11 21:34:12 +09:00]] 版)
<https://github.com/whatwg/html/commit/c49398f8050847066ee073a23a93529f13363ae5>

[15] [CITE@en[Linking: borrow HTML attributes, explicitly allow nested links, cleanup]]
( ([[AmeliaBR]]著, [TIME[2016-06-22 21:54:34 +09:00]]))
<https://github.com/w3c/svgwg/commit/33f85d2bdd20e7d33eedff77b85b10c8451db397>

[16] [CITE@en[Fix up `type`,`media` and `href` processing (#87)]]
([[yoavweiss]]著, [TIME[2017-03-02 00:36:31 +09:00]])
<https://github.com/w3c/preload/commit/300b0e7d656dcb611a95c3c4f4bb7545fcc7fca7>

[FIG(quote)[
[FIGCAPTION[
[17] [CITE@en[Minutes '''['''was: Agenda for 971023 HTML WG meeting''']''']]
([[Dan Connolly]]著, [TIME[1997-10-24 03:37:08 +09:00]])
<https://lists.w3.org/Archives/Public/w3c-wai-hc/1997OctDec/0160.html>
]FIGCAPTION]

> 
> 51: Add "type" (mimetype) attribute to LINK and A?
> RESOLVED: yes, proposal carries

]FIG]


[18] [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>

[19] [CITE@en[Editorial: update usage of the MIME Sniffing Standard by domenic · Pull Request #3455 · whatwg/html]]
([TIME[2018-02-17 18:45:41 +09:00]])
<https://github.com/whatwg/html/pull/3455>