[45] [DFN[[RUBYB[[[MIME型]]]@en[MIME type]]]]は、[[ファイル]]の種別を表す短い[[識別子]]です。
大分類と小分類を [CODE[text/plain]] のように[[斜線]]で区切って識別子とするのが特徴です。

[21] [[MIME]] ([[電子メール]]) の他、[[Web]] ([[HTTP]]/[[HTML]]) や [[SIP]]、
[[RTP]] など様々な[[応用]]でデータ形式の記述方式として広く採用されています。

;; [143] [[ファイルシステム]]における[[拡張子]]など[[ファイル]]の種類におおむね対応する概念です。

* 仕様書

[REFS[
- [221] '''[CITE@en[RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types]] ([TIME[2015-03-22 13:14:46 +09:00]] 版) <http://tools.ietf.org/html/rfc2046>'''
-- [223] [CITE@en[RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types]] ([TIME[2015-03-22 13:14:46 +09:00]] 版) <http://tools.ietf.org/html/rfc2046#section-1>
- [35] '''[CITE@en[RFC 6838 - Media Type Specifications and Registration Procedures]] ([TIME[2015-02-11 00:35:08 +09:00]] 版) <http://tools.ietf.org/html/rfc6838>'''
-- [166] [CITE@en[RFC 6838 - Media Type Specifications and Registration Procedures]] ([TIME[2015-02-11 00:35:08 +09:00]] 版) <http://tools.ietf.org/html/rfc6838#section-4.1>
-- [170] [CITE@en[RFC 6838 - Media Type Specifications and Registration Procedures]] ([TIME[2015-02-11 00:35:08 +09:00]] 版) <http://tools.ietf.org/html/rfc6838#section-4.2>
-- [191] [CITE@en[RFC 6838 - Media Type Specifications and Registration Procedures]] ([TIME[2015-02-11 00:35:08 +09:00]] 版) <http://tools.ietf.org/html/rfc6838#section-4.3>
-- [208] [CITE@en[RFC 6838 - Media Type Specifications and Registration Procedures]] ([TIME[2015-02-11 00:35:08 +09:00]] 版) <http://tools.ietf.org/html/rfc6838#section-5.5>
- [71] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-3.1.1.1>
- [84] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-5.3.2>
- [131] [CITE[Media Types]] ([TIME[2015-04-16 05:20:38 +09:00]] 版) <https://www.iana.org/assignments/media-types/media-types.xhtml>
- [362] [CITE[Provisional Standard Media Type Registry]] ([TIME[2017-03-31 07:14:52 +09:00]]) <https://www.iana.org/assignments/provisional-standard-media-types/provisional-standard-media-types.xml>
- [393] '''[CITE@en[MIME Sniffing Standard]] ([TIME[2018-01-09 18:13:17 +09:00]]) <https://mimesniff.spec.whatwg.org/#understanding-mime-types>'''
-- [289] [CITE[MIME Sniffing Standard]] ([TIME[2016-03-05 01:29:10 +09:00]] 版) <https://mimesniff.spec.whatwg.org/#understanding-mime-types>
- [349] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-03 15:54:50 +09:00]] 版) <https://html.spec.whatwg.org/#mime-type>
- [338] [CITE@en[Fetch Standard]] ([TIME[2018-01-31 18:00:34 +09:00]]) <https://fetch.spec.whatwg.org/#data-url-struct-mime-type>
]REFS]

[222] [[MIME型]]は、 [[MIME]] 仕様群の1つである [DFN[[[RFC 2046]]]]
で規定されています。しかし、その適用範囲の拡大に追随した仕様の改訂が行われず、
他のいろいろな仕様書が自身に必要な範囲でそれぞれ規定する形で事実上の改訂を
(相互に矛盾するようなしないようなよくわからない状態で) 行っています。

[394] [[MIME型]]の[[データモデル]]と[[構文解析]]は、 [CITE[MIME Sniffing Standard]]
により規定されています。

* 呼称

[144] [[MIME型]]は、次のような名前で呼ばれています。

[FIG(short list)[ [395] [[MIME型]]の呼称
- [[MIME型]] ([DFN[MIMEタイプ]])
- [DFN[[RUBY[媒体型][メディアタイプ]@en[media type]]]]
- [DFN[[RUBYB[インターネット媒体型]@en[Internet Media Type]]]]
- [DFN[[[MIME]] [RUBY[媒体型][メディアタイプ]@en[media type]]]]
- [DFN[[RUBYB[[[内容型]]]@en[content type]]]]
]FIG]

-*-*-

[145] [[MIME型]]は大分類と小分類の組で表されますが、この大分類も「[RUBYB[型]@en[type]]」、
全体も「型」と呼ばれるため、どちらを指しているのか曖昧なことも少なくありません。

[146] 「[[MIME型]]」などと修飾される場合は全体を指していることが多く、
「型」とのみ呼ばれる時は大分類を指していることが多いようですが、例外もあります。
大分類であることを明示する時は、「[DFN[[RUBYB[最上位型]@en[top-level type]]]]」
のように[RUBYB[最上位]@en[top-level]]と修飾するのが一般的です。

;; [238] [[RFC 2077]] は[[最上位型]]を [DFN[[[primary content type]]]] や
[DFN[[[primary type]]]] と呼んでいます。

[EG[
[147] ほとんどの場合「[[MIME型]]」や「[[内容型]]」と言えば [CODE(MIME)@en[text/plain]]
全体を指しますが、稀に [CODE(MIME)@en[text]] のみを指していることがあります。
]EG]

-*-*-

[148] [CITE[HTML Standard]] や [CITE[Fetch Standard]] などの現在の [[Web]] 
の[[仕様書]]は、最も普及した用語である「[[MIME型]]」を採用しています。
[CITE[MIME Sniffing Standard]] は「[[MIME型]]」などの用語を定義しています。

[396] 
[TIME[2017年][year:2017]]改訂以後の [CITE[MIME Sniffing Standard]] は、
[DFN[[RUBYB[MIME型]@en[MIME type]]]]
を [[RFC 2046]] [[インターネット媒体型]]を表すもので
[DFN[[RUBYB[MIME型記録]@en[MIME type record]]]]とも呼ぶ
[SRC[>>393]] とし、「[[MIME型]]」を[[データ構造]]として定義しています。

[398] [TIME[2017年][year:2017]]以前の各[[仕様書]]は、
もっぱら[[MIME型]]の文字列表現を扱っていました。
[TIME[2017年][year:2017]]改訂以後の [CITE[MIME Sniffing Standard]] は、
「[[妥当なMIME型文字列]]」
など[DFN[[RUBYB[MIME型文字列]@en[MIME type string]]]]という語を使っています。

[HISTORY[

[149] [[IETF]] は「[[媒体型]]」を正式な用語と考えているようで、
近年の [[RFC]] の多くはこの語を採用しています。しかし次に示す通り歴史的には相当な混乱があり、
現在でも完全に統一されているわけではないようです。

[104] [[RFC 1341]]/[[RFC 1521]] は「[CODE(MIME)@en[Content-Type]] の値」といったような表現を使っており、現在の「[[MIME型]]」に相当する特別な用語は用意していなかったようです。
「content-type/subtype pair」という表現もあります。また登録雛形では
「MIME type name」/「MIME subtype name」となっています [SRC[>>102, >>105]]。
重要な概念に明確な用語を定義しなかったことが、以後の混乱の引き金となってしまいました。

[108] [[RFC 1341]]/[[RFC 1521]] は各1箇所だけ「[RUBYB[媒体型]@en[media type]]」
という語を使っています [SRC[>>106, >>107]]。

[113] [[RFC 1590]] には従来の「MIME [RUBYB[型]@en[Type]]」を「[RUBYB[媒体型]@en[''M''edia ''T''ype]]」
と呼ぶ [SRC[>>111]] との記述があります。しかし
「Content-type/subtype pair」という表現も残っています。また
「Media type name」/「Media subtype name」という記述もあります。

[117] [[RFC 2048]] は「[RUBYB[[[媒体型]]]@en[''m''edia ''t''ype]]」
[SRC[>>114]] と表現しています。1箇所だけ「MIME type and subtype」
との記述もあります。「MIME media type」という表現や、
「MIME media type name」/「MIME subtype name」という表現も数箇所だけ登場します。

[124] [[RFC 4288]] や [[RFC 6838]] は「[RUBYB[[[媒体型]]]@en[''m''edia ''t''ype]]」[SRC[>>121]]
に統一しています。

[133] [[IANA登録簿]]の題名は当初は「MIME Media Types」[SRC[>>132]] でした。
「Content Types」/「Content Subtypes」という表現もありました。

[134] 現在の[[IANA登録簿]]の題名は「Media Types」[SRC[>>131]] となっています。
「Media Types (formerly known as MIME types) and Media Subtypes」
という記述もあります。

[135] 多くの [[RFC]] は「Internet Media Type」とも呼んでいます。
古いものでは [[RFC 1866]] がこの語を使っています [SRC[>>137]] (どの [[RFC]]が最古のものかは不明)。
[[RFC 3420]] では題名にもなっています [SRC[>>136]] (が本文中では
「MIME 媒体型」と呼ばれています)。

;; [139] 「"MIME types" (renamed "Internet Media Types" in later specs [RFC2046])」
と述べた文書 [SRC[>>138]] もありますが、 [[RFC 2046]] には
「Internet Media Type」は登場していません。

[141] [[HTML4]] は「[RUBYB[[[内容型]]]@en[content type]]」と呼んでいました。
理由として、当時の用法により沿っている点、[[CSS]] の[[媒体型]]と区別できる点を挙げています
[SRC[>>140]]。しかしその説明と同じ章で「MIME 型」という語も使われています [SRC[>>140]]。

;; [142] この当時から「[[MIME型]]」が最も一般的な用語だったように思います。

[350] [CITE[HTML Standard]] も[[媒体型]]を [[CSS]] 用語のために使い、
[[インターネット媒体型]]は [[MIME型]]と呼んでいます。 [SRC[>>349]]

[397] [CITE[MIME Sniffing Standard]] は、
[[媒体クエリー]]の[[媒体型]]との区別のため、
各[[標準]]は [[MIME型]]と呼ぶ[RUBYB[べき]@en[encourage]]である [SRC[>>393]] としています。

-*-*-

[399] 
[TIME[2017年][year:2017]]改訂より前の [CITE[MIME Sniffing Standard]] は、
[[文字列]]表現 (現[[MIME型文字列]]) を [[MIME型]]と呼び、
[[データ構造]] (現[[MIME型記録]]) を[[構文解析済みMIME型]]と呼んでいました。

[292] [DFN[[RUBYB[構文解析可能MIME型]@en[parsable MIME type]]]]は、
[[MIME型の構文解析]]が [[null]] を返さないような [[MIME型]]です [SRC[>>289]]。

[293] [[構文解析可能MIME型]]には、対応する[DFN[[RUBYB[構文解析済みMIME型]@en[parsed MIME type]]]]があります
[SRC[>>289]]。これは[[MIME型の構文解析]]で得られる値です。


[REFS[
- [137] [CITE@en[RFC 1866 - The 'text/html' Media Type]] ([TIME[2015-04-06 15:12:54 +09:00]] 版) <https://tools.ietf.org/html/rfc1866>
- [136] [CITE@en[RFC 3420 - Internet Media Type message/sipfrag]] ([TIME[2015-04-05 20:24:31 +09:00]] 版) <https://tools.ietf.org/html/rfc3420>
- [138] [CITE@en[draft-masinter-mime-web-info-02 - MIME and the Web]] ([TIME[2015-01-18 18:04:50 +09:00]] 版) <https://tools.ietf.org/html/draft-masinter-mime-web-info-02>
- [140] [CITE@en[Basic HTML data types]] ([TIME[1999-12-25 08:25:40 +09:00]] 版) <http://www.w3.org/TR/html4/types.html#h-6.7>
]REFS]

]HISTORY]

* 意味

[290] [[資源]]の[DFN[[F[[RUBYB[[[MIME型]]]@en[MIME type]]]]]]は、
当該[[資源]]の用法や書式についての技術的[[ヒント]]です [SRC[>>289]]。


[261] [[MIME型]]は、その適用対象の解釈の方法 ([[意味]])
を表すものです。具体的には利用される場面によりますが、
多くの場合は適用対象となる[[バイト列]]や[[文字列]]の[[メタデータ]]として[[MIME型]]を指定することで、
その[[バイト列]]や[[文字列]]の意味と解釈方法を指定することになります。

[EG[
[262] [[MIME]] では、 [CODE(MIME)@en[[[Content-Type:]]]] [[ヘッダー]]の値として指定すると、
[[メッセージ]]の[[本体]]の[[バイト列]]の形式を表すものとみなされます。
]EG]

[EG[
[263] [[HTML]] の [CODE(HTMLe)@en[[[style]]]] [[要素]]では、
[CODE(HTMLa)@en[[[style]]]] [[属性]]の値として指定すると、
[[内容]]の[[文字列]]の[[スタイル言語]]を表すものとみなされます。
]EG]

[EG[
[264] [[HTTP要求]]の [CODE(HTTP)@en[[[Accept:]]]] [[ヘッダー]]の値として指定すると、
それに対する[[HTTP応答]]で使うべき [[MIME型]]を指定するものとみなされます。
([[HTTP要求]]自体にその[[MIME型]]で解釈されるべきデータが含まれるわけではありません。)
]EG]


[155] ファイル形式と [[MIME型]]は、一対一対応関係にはありません。
同じ形式に複数の[[MIME型]]を割り当てるのは[RUBYB[非推奨]@en[discouraged]]です
[SRC[>>170]] が、実際には数多くあります。

[EG[
[156] [[XML]] の [[MIME型]]には [CODE(MIME)@en[[[text/xml]]]] や
[CODE(MIME)@en[[[application/xml]]]] があります。
[[XHTML]] の [[MIME型]]には [CODE(MIME)@en[[[application/xhtml+xml]]]] や
[CODE(MIME)@en[[[application/xml]]]] があります。
]EG]

[182] [[IANA登録簿]]は[RUBYB[好ましい]@en[prefer]]ものを1つ選び、
それ以外を「deprecated alias」とすることを求めています [SRC[>>170]]。
その場合[[応用]]は好ましいものを使わなければ[['''なりません''']] [SRC[>>170]]。
しかし必ずしも現実に沿った運用がなされているとはいえません。

[EG[
[259] 世間で最も広く用いられている [[JavaScript]] の [[MIME型]]は
[CODE(MIME)@en[[[text/javascript]]]] ですが、 [[IANA登録簿]]と [[RFC]]
では「[[廃止]]」状態になっています。
]EG]



[184] 世間で用いられる [[MIME型]]は、その本来の意味を逸脱しているものも少なくありません。

[EG[
[186] 例えば [[HTTP]] で[[ダウンロード]]させたい時に
[CODE(MIME)@en[[[application/octet-stream]]]] や
[CODE(MIME)@en[[[application/download]]]] が用いられることがあります。
つまりファイル形式ではなく、求める処理を表すために [[MIME型]]が使われています。
]EG]

[EG[
[185] 一部の [[Web API]] の [CODE(HTTP)@en[[[Accept:]]]] [[ヘッダー]]では、
返されるデータの標準的な [[MIME型]]を使わずに、 [[API]]
の「[[バージョン]]」番号などを含めた特別な[[MIME型]]を指定させたりします。
つまり[[ファイル形式]]ではなく、 [[API]] の動作モードの指定のために[[MIME型]]が使われています。
]EG]

[EG[
[256] [[プラグイン]]の種類を表すために[[MIME型]]が使われることがあります。
標準的な [[MIME型]]があるのに[[プラグイン]]を表す特別な [[MIME型]]が用いられたり、
データを入力としない[[プラグイン]]の実行のために特別な [[MIME型]]が用いられたりします。
つまりファイル形式ではなく、[[プラグイン]]を識別するために[[MIME型]]が使われています。
]EG]

[260] [[MIME型]]は元々 [[MIME]] による[[電子メール]]での[[情報交換]]のために規定されたものですが、
[[プラットフォーム]]と[[アプリケーション]]のような同一環境上での伝達 
[WEAK[(他者との通信ではなく狭義の[[情報交換]]には含まれないもの)]]
で使われたり、特定[[アプリケーション]]内部でのみ使われたりすることもよくあります。
その場合、特定[[アプリケーション]]でしか意味を成さない[[内部データ構造]]などに
[[MIME型]]が割り当てられることもありますし、標準的な
[[MIME型]]であっても、本来のその定義による[[バイト列]]等ではなく、
それに相当する[[内部データ構造]]を表していることもあります。

* データモデル

[150] [[MIME型記録]]は、
[F[型][最上位型]],
[F[部分型]],
[F[引数群]]を持ちます。

[151] [DFN[[F[[RUBYB[[[型][MIME型]]]@en[type]]]]]]は、
[[空文字列]]ではない[[ASCII文字列]]です [SRC[>>393]]。
[[型][MIME型]] ([DFN[[RUBYB[[[最上位型]]]@en[top-level type]]]]) は、
元々は[[媒体]]の種類を区別することを意図していたようで
(「[[媒体型]]」の語源)、 [CODE[[[text]]]]、[CODE[[[audio]]]]、[CODE[[[video]]]]
などがあります。しかし [CODE[[[text]]]] の意味するところが曖昧だったり、
ほとんどが [CODE[[[application]]]] に分類されていたりして、
あまりうまく機能していません。

[152] [DFN[[F[[RUBYB[[[部分型]]][subtype]]]]]]は、
[[空文字列]]ではない[[ASCII文字列]]です [SRC[>>393]]。[[型]]内における細かな分類であり、
実際の[[ファイル形式]]に相当するものです。 [CODE[[[text/plain]]]] の [CODE[plain]]、
[CODE[[[image/png]]]] の [CODE[png]]、[CODE[[[application/pdf]]]] の [CODE[pdf]]
などがあります。

[153] [[型]]と[[部分型]]は、組として1つの [[MIME型]]を構成します。
異なる[[型]]と[[部分型]]を組み合わせることはできません。例えば
[CODE[[[image/png]]]] の [CODE[image]] を [CODE[video]] に置き換えるような使い方はできず、
まったく異なる [[MIME型]]となります。

;; [154] [CODE[[[video/ogg]]]] と [CODE[[[audio/ogg]]]] のように異なる[[型]]で同じ[[部分型]]の
[[MIME型]]が定義されていることはありますが、すべての[[型]]に対して定義されているわけではありません。
また、[[部分型]]が同じだからといって異なる[[型]]の [[MIME型]]が同じファイル形式を表しているとは限りません。

[157] [[MIME型]]には、零個以上の[[引数]]を指定することができます。
[[MIME型]]が[[引数]]を含められるかどうかは、歴史的に文脈により異なっていました。
明確に定義されていないことも少なくありませんでした。
現在の[[MIME型記録]]の定義には[[引数群]]も含まれており、
[[Webプラットフォーム]]内で[[引数]]が使えない場合には、
そのように明示的に規定されています。

[294] [[MIME型記録]]の [DFN[[F[essence]]]] は、
[F[型][MIME型]]、[CODE[/]]、[F[部分型]]を連結した[[文字列]]です [SRC[>>393]]。

[HISTORY[
[159] かつては[[構文解析可能MIME型]]の[DFN[[RUBYB[MIME型部分]@en[MIME type portion]]]]
[SRC[>>289]] と呼ばれていました。
]HISTORY]

* 構文

[291] [[MIME型]]は、普通、[[文字列]]または[[バイト列]]と考えられています。

[158] [[MIME型]]の構文 (本体、[[引数]]とも) は統一された規定が存在せず、
[[プロトコル]]や[[マーク付け言語]]などがそれぞれの規定を行っています。
それらは微妙に異なっていることがよくあります。また、明確な規定を欠いていることも少なくありません。

[171] [[RFC 6838]] は [[IANA登録簿]]に登録される [[MIME型]]の[[型]]と[[部分型]]、
[[引数]]名の構文を規定しています。

;; [172] しかしそれらの組み合わせ方 (区切り文字など)、登録されない
[[MIME型]]の構文には言及していません。

[72] [[HTTP]] は [[RFC 2046]] を引用しつつ、独自に [[MIME型]]の構文を定義しています [SRC[>>71]]。
[[HTML Standard]] の[DFN[[RUBYB[妥当なMIME型]@en[valid MIME type]]]]は、
[[HTTP]] ([[RFC 7231]]) の定義に合致する[[文字列]]とされています [SRC[>>349]]。

[73] [[MIME型]]は、[[型]]、[CODE[[[/]]]]、[[部分型]]、零個以上の[[引数]]で構成されます。
ただし[[引数]]の前には、 [CODE[[[;]]]] が必要で、 [CODE[[[;]]]]
の前後には [[OWS]] を挿入できます。 [SRC[>>71]]

[74] [[型]]と[[部分型]]は、 [[HTTP]] では[[字句]]です [SRC[>>71]]。
[[IANA登録簿]]では、[[制限名]]です [SRC[>>170]]。
[[IANA登録簿]]では64文字[[以下]]である[['''べきです''']] [SRC[>>170]]。

[173] [[型]]と[[部分型]]は、[[大文字・小文字不区別]]です [SRC[>>71, >>170]]。

[FIG(railroad)[
= [[型]]
= [CODE[[[/]]]]
= [[部分型]]
= *
== [[OWS]]
== [CODE[[[;]]]]
== [[OWS]]
== [[引数]]
]FIG]

[75] [[引数]]は、名前、[CODE[[[=]]]]、値で構成されます [SRC[>>71]]。

[77] [[引数]]の名前は、 [[HTTP]] では[[字句]]です [SRC[>>71]]。
[[IANA登録簿]]では、[[制限名]]です [SRC[>>191]]。

[174] [[引数]]の名前は、[[大文字・小文字不区別]]です [SRC[>>71, >>191]]。 

[78] 値は[[字句]]または[[引用文字列]]です。
[[引用符]]の有無は、意味を持ちません。
値の大文字と小文字が区別されるかは、[[引数]]によります。 [SRC[>>71]]

[FIG(railroad)[
= [[引数]]名
= [CODE[[[=]]]]
= |
== [[字句]]
== [[引用文字列]]
]FIG]

;; [80] [CODE[[[=]]]] の前後には [[BWS]] も認められていません [SRC[>>71]]。

;; [234] [[引数 (MIME)]] や[[引数 (HTTP)]] も参照。

[198] [[引数]]の順序には意味がありません [SRC[>>191, >>223]]。
同じ[[引数]]が複数あるのは[RUBYB[[[誤り]]]@en[error]]です [SRC[>>191]]。

;; [199] 誤りをどう処理するべきなのかは不明です。

[76] [[引数]]の有無は、[[MIME型]]の定義によっては処理に影響があるかもしれません [SRC[>>71]]。

[175] [DFN[[RUBYB[[[制限名]]]@en[restricted-name]]]]は、
[[ASCII英数字]]、 [CODE[[[!]]]], [CODE[#]], [CODE[[[$]]]],
[CODE[[[&]]]], [CODE[[[-]]]], [CODE[[[^]]]], [CODE[[[_]]]],
[CODE[[[.]]]], [CODE[[[+]]]] で構成される1文字[[以上]]126文字[[以下]]の文字列です
[SRC[>>170]]。

;; [176] このうち [CODE[[[.]]]] の初出は[[木]]、[CODE[[[+]]]] は[[構造化構文接尾辞]]を表すことになっています [SRC[>>170]]。
[[部分型]]はそれでよいとして、 [[型]]や[[引数]]名についてこれをどう解釈するべきかは不明瞭です。
また未登録の [[MIME型]]はこれらの規則に従っていないものもあります。

;; [183] [CODE[[[!]]]], [CODE[#]], [CODE[[[$]]]],
[CODE[[[&]]]], [CODE[[[^]]]] を使った [[MIME型]]が実在するのかは不明です。

[351] [DFN[[RUBYB[妥当なMIME型で引数のないもの][valid MIME type with no parameters]]]]は、
[[妥当なMIME型]]かつ [CODE[;]] を含まないものです [SRC[>>349]]。

** 構文解析

[296] [DFN[[RUBYB[MIME型を構文解析]@en[parse a MIME type]]]]するには、
[VAR[文字列]]を次のようにします [SRC[>>393]]。

[FIG(steps)[
= [313] [VAR[文字列]]の先頭と末尾の [[ASCII空白]]をすべて除去します。
= [347] [VAR[型]]を、[VAR[文字列]]の先頭の[[HTTP字句符号位置]]すべてとし、
これを[VAR[文字列]]から除去します。
= [348] [VAR[型]]が[[空文字列]]の場合、
== [410] [[失敗]]を返し、ここで停止します。
= [411] [VAR[文字列]]の先頭が [CODE[/]] の場合、
== [412] これを[VAR[文字列]]から除去します。
= [413] それ以外の場合、
== [414] [[失敗]]を返し、ここで停止します。
= [415] [VAR[部分型]]を、[VAR[文字列]]の先頭の[[HTTP字句符号位置]]すべてとし、
これを[VAR[文字列]]から除去します。
= [416] [VAR[部分型]]が[[空文字列]]の場合、
== [417] [[失敗]]を返し、ここで停止します。
= [418] [VAR[文字列]]の先頭から[[ASCII空白]]をすべて除去します。
= [419] [VAR[文字列]]の先頭が [CODE[;]] の場合、
== [420] これを[VAR[文字列]]から除去します。
= [421] それ以外で、[VAR[文字列]]が[[空文字列]]でない場合、
== [422] [[失敗]]を返し、ここで停止します。
= [423] [VAR[MIME型]]を、新しい[[MIME型記録]]に設定します。
[FIG(list members)[ [424] [[MIME型記録]]

: [F[型][MIME型]] :
[VAR[型]]を[[ASCII小文字化]]したもの
: [F[部分型]] :
[VAR[部分型]]を[[ASCII小文字化]]したもの

]FIG]
= [298] [VAR[文字列]]が[[空文字列]]でない間、繰り返し、
== [300] [VAR[文字列]]の先頭から [[ASCII空白]]をすべて除去します。
== [301] [VAR[引数名]]を、[VAR[文字列]]の先頭の
[CODE[=]] でも [CODE[;]] でもない[[符号位置]]すべてとし、
これを[VAR[文字列]]から除去します。
== [317] [VAR[文字列]]の先頭が [CODE[;]] の場合、
=== [318] これを[[文字列]]から除去します。
== [315] それ以外で、 [VAR[文字列]]の先頭が [CODE[=]] の場合、
=== [316] これを[VAR[文字列]]から除去します。
=== [302] [VAR[引数名]]を、[VAR[引数名]]を[[ASCII小文字化]]した結果に設定します。
=== [319] [VAR[文字列]]の先頭が [CODE["]] の場合、
==== [299] 
[VAR[引数値]]を、
[VAR[文字列]]について先頭から [VAR[extract-value flag]] を真に
[[collect an HTTP quoted string]]
した結果に設定し、[VAR[文字列]]先頭から進んだ位置までを除去します。
=== [320] それ以外の場合、
==== [321] [VAR[引数値]]を、[VAR[文字列]]の先頭の
[CODE[;]] でない[[符号位置]]すべてとし、
これを[VAR[文字列]]から除去します。
==== [322] [VAR[引数値]]の末尾から [[ASCII空白]]をすべて除去します。
=== [327] 
[VAR[引数名]]が[[空文字列]]ではなく、
[VAR[引数名]]が[[HTTP字句符号位置]]''以外''を含ま''ず''、
[VAR[引数値]]が[[空文字列]]ではなく、
[VAR[引数値]]が[[HTTP引用文字列字句符号位置]]''以外''を含ま''ず''、
[VAR[MIME型]]の[F[引数群]] [ [VAR[引数名]] ] が存在し''ない''場合、
==== [425] [VAR[MIME型]]の[F[引数群]] [ [VAR[引数名]] ] を、[VAR[引数値]]に設定します。
= [297] [VAR[MIME型]]を返します。
]FIG]

[FIG(short list)[ [407] [[MIME型を構文解析]]する場面
- [[MIME型をバイト列から構文解析]]
- [[[CODE[data:]] URL処理器]]
- [CODE[overrideMimeType]]
- [CODE[Content-Type:]]
]FIG]

;; [324] [CODE[Content-Type:]] [[ヘッダー]]では、
[[ヘッダー]]が複数指定された場合の対処も含めた構文解析方法が規定されています。

-*-*-

[404] [DFN[[RUBYB[MIME型をバイト列から構文解析]@en[parse a MIME type from bytes]]]]するには、
[VAR[バイト列]]を次のようにします [SRC[>>393]]。

[FIG(steps)[
= [405] [VAR[文字列]]を、[VAR[バイト列]]の[[同型復号]]の結果に設定します。
= [406] [VAR[文字列]]に[[MIME型を構文解析]]を適用した結果を返します。
]FIG]

[FIG(short list)[ [346] [[MIME型をバイト列から構文解析]]する場面
- [CODE[send][send (XHR)]]
]FIG]

-*-*-

[303] 次の場面では、指定される値が限られるため、
[[ASCII大文字・小文字不区別]]などのより簡便な方法が採られ、
[[MIME型の構文解析]]は行われません。

[FIG(list middle)[ [304] [[MIME型を構文解析]]し''ない''場面
- [CODE[<script type>]]
- [CODE[<form enctype>]]
- [[文字符号化宣言]]の解釈
]FIG]

** 直列化

[305] [VAR[MIME型]]の[DFN[[RUBYB[MIME型の直列化]@en[serialize a MIME type]]]]は、
次のようにします [SRC[>>289]]。

[FIG(steps)[
= [408] [VAR[結果]]を、[VAR[MIME型]]の[F[型][MIME型]]、
[CODE[/]]、[VAR[MIME型]]の[F[部分型]]を連結した結果に設定します。
= [306] [VAR[MIME型]]の[F[引数群]]の各[VAR[名前]]、[VAR[値]]の組について、順に、
== [307] [VAR[結果]]の末尾に
[CODE[;]]、
[VAR[名前]]、
[CODE[=]] を連結した結果を追加します。
== [308] [VAR[値]]が[[HTTP字句符号位置]]のみで構成される場合、
=== [309] [VAR[結果]]の末尾に[VAR[値]]を追加します。
== [310] それ以外の場合、
=== [311] [VAR[値]]に [CODE["]] や [CODE[\]] が含まれる場合、
そのすべての直前に [CODE[\]] を挿入します。
=== [409] [VAR[結果]]の末尾に [CODE["]]、[VAR[値]]、[CODE["]]
を連結した結果を追加します。
= [314] [VAR[結果]]を返します。
]FIG]

;; [342] 出力の型、部分型、引数名は小文字となります。

[FIG(short list)[ [403] [[MIME型を直列化]]する場面
- [[MIME型をバイト列に直列化]]
]FIG]

[HISTORY[
[312] [TIME[2017年][year:2017]]改訂以前の定義では、
[[字句]]に長さ制限があり、[[直列化]]に失敗する可能性がありました。

[295] [DFN[[RUBYB[直列化済みMIME型]@en[serialized MIME type]]]]は、
[[構文解析済みMIME型]]に[[MIME型の直列化]]を適用した結果です。 [SRC[>>289]]
]HISTORY]

-*-*-

[400] [DFN[[RUBYB[MIME型をバイト列に直列化]@en[serialize a MIME type to bytes]]]]するには、
[VAR[MIME型]]を次のようにします [SRC[>>393]]。

[FIG(steps)[
= [401] [VAR[文字列]]を、[VAR[MIME型]]に[[MIME型を直列化]]を適用した結果に設定します。
= [402] [VAR[文字列]]に[[同型符号化]]を適用した結果を返します。
]FIG]

[340] [CODE[data:] [[URL]] の [[scheme fetch]] で呼び出されます。

** 構文のバリエーション

[335] 
[[HTML]] の [CODE[<script language>]] [[属性値]]は [CODE[text/]]
を省略したものと規定されています。

;; [336] 歴史的には独自の[[属性値]]だったものが、
[CODE[<script type>]] との処理の統合のため
[[HTML5]] で後追いでそう定められたものです。

[329] [[JOSE]]
の[[ヘッダー引数]] [CODE[typ]], [CODE[cty]] は
[CODE[application/]] を省略できると規定しています。


[439] 
[CODE[data:]] では [CODE[text/plain]] を省略して[[引数]]だけ指定できるなど、
構文に少しの違いがあります。

* MIME 型の一覧

[161] [[MIME型]]は、標準仕様で規定されているものもそうでないものも、
よく使われているものもそうでないものも含め、実に数多く、様々なものが存在しています。

[162] 次の表で [CODE[[[*]]]] は、複数の [[MIME型]]のパターンを表しています。
所属する [[MIME型]]は、リンク先の各ページを参照してください。
ただし、場合によっては複数の [[MIME型]]を表すため、あるいは設定ミスその他の理由でしばしば 
[[MIME型]]として使われるものもいくつかあります。

[FIG(list)[
[FIGCAPTION[
[26] [[MIME型]]の一覧
]FIGCAPTION]

,[CODE(MIME)@en[[[/]]]]
,[CODE(MIME)@en[[[*/*]]]]
,[CODE(MIME)@en[[[vnd.android.cursor.dir/[VAR[*]]]]]]
,[CODE(MIME)@en[[[vnd.android.cursor.item/[VAR[*]]]]]]
,[CODE(MIME)@en[[[app/gg]]]],[[Google Desktop]] [[gadget]]
,[CODE(MIME)@en[[[application/[VAR[*]]]]]]
,[CODE(MIME)@en[[[x-application/[VAR[*]]]]]]
,[CODE(MIME)@en[[[zz-application/zz-winassoc-tgz]]]]
,[CODE(MIME)@en[[[archive/[VAR[*]]]]]]
,[CODE(MIME)@en[[[attachment/file]]]]
,[CODE(MIME)@en[[[audio/[VAR[*]]]]]]
,[CODE(MIME)@en[[[audio-file]]]]
,[[auth/sicily]]	,[[FrontPage]]
,[CODE(MIME)@en[[[avro/binary]]]]
,[CODE(MIME)@en[[[b64_zlib_yaml]]]]
,[CODE(MIME)@en[[[x-be2]]]]
,[CODE(MIME)@en[[[bin/application]]]]
,[CODE(MIME)@en[[[binary]]]]
,[CODE(MIME)@en[[[binary/octet-stream]]]]
,[CODE(MIME)@en[[[chemical/[VAR[*]]]]]]
,[CODE(MIME)@en[[[coloreal/embedded]]]]
,[[x-conference/x-cooltalk]]	,[[CoolTalk]] [Netscape]
,[CODE(MIME)@en[[[content/unknown]]]]
,[CODE(MIME)@en[[[x-data/xact-error]]]]
,[CODE(MIME)@en[[[unknown]]]]
,[CODE(MIME)@en[[[database/x-unknown]]]]
,[CODE(MIME)@en[[[default]]]]
,[CODE(MIME)@en[[[defiant/xsl-template]]]]
,[[x-device/floppy]]	,[GNOME]
,[CODE(MIME)[[[x-directory/normal]]]]
,[CODE(MIME)@en[[[document/x-epub]]]]
,[CODE(MIME)@en[[[drawing/x-dwf]]]]
,[CODE(MIME)@en[[[drawing/x-dwf(old)]]]]
,[CODE(MIME)@en[[[drawing/x-dwf (old)]]]]
,[CODE(MIME)@en[[[dsmcc-[VAR[*]]/[VAR[*]]]]]]
,[CODE(MIME)@en[[[dsmcc-download/jpeg]]]]
,[CODE(MIME)@en[[[dsmcc-file/mpeg2-ps]]]]
,[CODE(MIME)@en[[[dsmcc-file/html]]]]
,[CODE(MIME)@en[[[dsmcc-stream/mpeg2-ts]]]]
,[CODE(MIME)@en[[[dvi]]]],[[RFC 1049]]
,[CODE(MIME)@en[[[x-epoc/x-sisx-app]]]]
,[CODE(MIME)@en[[[example/[VAR[*]]]]]]
,[[x-ferrum-head/*]]
,[[x-ferrum-menu/*]]
,[CODE(MIME)@en[[[font/[VAR[*]]]]]]
,[CODE(MIME)@en[[[x-font/[VAR[*]]]]]]
,[CODE(MIME)@en[[[x-form/x-openscape]]]]
,[CODE(MIME)@en[[[gadget/x-googlegadget]]]]
,[CODE(MIME)@en[[[vnd.google.fitness.session/biking]]]]
,[CODE(MIME)@en[[[vnd.google.fitness.session/running]]]]
,[CODE(MIME)@en[[[vnd.google.fitness.data_type/[VAR[*]]]]]]
,[CODE(MIME)@en[[[com.google.android.gms.fitness.data_type/[VAR[*]]]]]]
,[CODE(MIME)@en[[[vnd.google.fitness.activity_type/running]]]]
,[CODE(MIME)@en[[[vnd.google.android.hangouts/vnd.google.android.hangout_privileged]]]]
,[CODE(MIME)@en[[[vnd.google.android.hangouts/vnd.google.android.hangout_whitelist]]]]
,[CODE(MIME)[[[graphics/x-inventor]]]]	,Open Inventor 3次元 scenes
,[CODE(MIME)@en[[[gzip/document]]]]
,[CODE(MIME)@en[[[image/[VAR[*]]]]]]
,[CODE(MIME)@en[[[in/share]]]]
,[CODE(MIME)@en[[[inode/[VAR[*]]]]]]	,[freedesktop.org]
,[CODE(MIME)@en[[[interface/x-winamp-skin]]]]
,[CODE(MIME)@en[[[x-jigsaw/config]]]]
,[CODE(MIME)@en[[[x-kom/basic]]]]
,[CODE(MIME)@en[[[x-lml/x-lml]]]]
,[CODE(MIME)@en[[[math/[VAR[*]]]]]]
,[CODE(MIME)@en[[[matter-transport/sentient-life-form]]]]
,[CODE(MIME)@en[[[mail-file]]]]
,[CODE(MIME)@en[[[mce-text/javascript]]]]
,[CODE(MIME)@en[mce-no/type]]
,[CODE(MIME)@en[[[message/[VAR[*]]]]]]
,[CODE(MIME)@en[[[mforge/x-mirage]]]]
,[CODE(MIME)@en[[[midi/mid]]]]
,[CODE(MIME)@en[[[misc/ultravox]]]]
,[CODE(MIME)@en[[[model/[VAR[*]]]]]]
,[CODE(MIME)@en[[[x-model/x-mesh]]]]
,[CODE(MIME)@en[[[more/less]]]]
,[CODE(MIME)@en[[[mozilla.application/cached-xul]]]]
,[CODE(MIME)@en[[[multipart/[VAR[*]]]]]]
,[CODE(MIME)@en[[[x-wap.multipart/vnd.uplanet.header-set]]]]
,[CODE(MIME)@en[[[x-music/x-midi]]]]
,[CODE(MIME)@en[[[none]]]]
,[CODE(MIME)@en[[[octet/stream]]]]
,[CODE(MIME)@en[[[plain/text]]]]
,[CODE(MIME)@en[[[plugin/[VAR[*]]]]]]
,[CODE(MIME)@en[[[x-pmaildx/x-mmctrl]]]]
,[CODE(MIME)@en[[[x-postpet/[VAR[*]]]]]]
,[CODE(MIME)@en[[[postscript]]]],[[RFC 1049]]
,[CODE(MIME)@en[[[postscript-file]]]]
,[CODE(MIME)@en[[[pson]]]]
,[CODE(MIME)@en[[[raw]]]]
,[CODE[riot/tag]]
,[CODE(MIME)@en[[[s]]]]
,[CODE(MIME)@en[[[x-scheme-handler/[VAR[*]]]]]]
,[CODE(MIME)@en[[[scribe]]]],[[RFC 1049]]
,[CODE(MIME)[[[x-script/x-wfxscript]]]]
,[CODE(MIME)@en[[[sgml]]]],[[RFC 1049]]
,[CODE(MIME)@en[[[x-shader/x-fragment]]]]
,[CODE(MIME)@en[[[x-shader/x-vertex]]]]
,[CODE(MIME)[[[x-squid-internal/vary]]]]
,[CODE(MIME)@en[[[x-sun-attachment]]]]
,[CODE(MIME)@en[[[sun-deskset-message]]]]
,[CODE(MIME)[[[x-system/x-error]]]]	,[Namazu]
,[CODE(MIME)@en[[[tex]]]],[[RFC 1049]]
,[CODE(MIME)@en[[[text/[VAR[*]]]]]]
,[CODE(MIME)@en[[[x-text-pc/ms-word]]]]
,[CODE(MIME)@en[[[troff]]]],[[RFC 1049]]
,[CODE[urdu/urdu98]]
,[CODE(MIME)@en[[[unknown/unknown]]]]
,[CODE(MIME)@en[[[x-unknown/octet-stream]]]]
,[CODE(MIME)@en[[[x-unknown/x-unknown]]]]
,[CODE(MIME)@en[[[vector/[VAR[*]]]]]]
,[CODE(MIME)@en[[[video/[VAR[*]]]]]]
,[CODE(MIME)@en[[[videotex/vemmi]]]]
,[CODE(MIME)@en[[[x-visa-ii/x-auth]]]]
,[CODE(MIME)@en[[[windows/*]]]]
,[CODE(MIME)@en[[[workbook/formulaone]]]]
,[CODE(MIME)@en[[[i-world/i-vrml]]]]
,[CODE(MIME)@en[[[x-world/[VAR[*]]]]]]
,[CODE(MIME)@en[[[www/mime]]]]	,[[libwww]]
,[CODE(MIME)@en[[[www/unknown]]]]	,未知 (自動判別)	 [SRC[[[libwww]]]]
,[CODE(MIME)@en[[[www/source]]]]
,[CODE(MIME)@en[[[x-[VAR[*]]]]]],[[RFC 1049]]
,[CODE(MIME)@en[[[xgi/[VAR[*]]]]]]
,[CODE(MIME)@en[[[xml/user-profile]]]],[[XUP]]
,[CODE(MIME)@en[[[yaml]]]]
]FIG]

[9] [[JSON]]形式の一覧データファイルが >>10 にあります。
[REFS[
- [10] [CITE@en[data-web-defs/mime-types.txt at master · manakai/data-web-defs]] ([TIME[2015-01-30 12:44:11 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/doc/mime-types.txt>
]REFS]

** [CODE[*/*]]

[451] 
[CITE@en[raml-spec/versions/raml-10/raml-10.md at master · raml-org/raml-spec · GitHub]], [TIME[2025-11-07T14:33:36.000Z]] <https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/#file>

[452] >>451 [[内容型]]として [[MIME型]]らしきものを指定できますが、それに加えて
[CODE[*/*]] が認められており、任意のファイル型と説明されています。

* 比較

[353] 指定された[[MIME型]]が特定の条件を満たすかどうかの判定のほとんどは、
[F[MIME型部分]]のみと比較します。つまり[[引数]]の存在は無視されます。

[352] [[スクリプトの型]]の決定では、 [CODE(HTML)@en[<script type>]] [[属性値]]と
前後の[[空白文字]]を除去してから[[ASCII大文字・小文字不区別]]な[[比較]]が行われます。
[[引数]]つきの[[MIME型]]は扱わないので、[[引数]]があると未対応の[[MIME型]]とみなされます。

* 最上位型

[224] [CODE[[[/]]]] より前の部分が[RUBYB[型]@en[type]] ([RUBYB[最上位型]@en[top-level type]]) です。

[225] 一般に[[最上位型]]はデータの[RUBYB[一般]@en[general]]の型を表し、
[[部分型]]がその型の特定の形式を表します [SRC[>>223]]。

[EG[
[226] 例えば [CODE(MIME)@en[[[image/png]]]] は、[[画像]]であり、
その具体的な書式は [[PNG]] であることを表しています。
[[利用者エージェント]]がこの [[MIME型]]について知識が無いとしても、
[[画像]]であることはわかります。
]EG]

[227] [[最上位型]]の情報は、未知の[[部分型]]の場合に生データを[[利用者]]に提示するべきかどうかを決定するために使うことができます [SRC[>>223]]。

[EG[
[228] [CODE(MIME)@en[[[text/*]]]] なら未知でも生データを提示して構わないかもしれませんが、
[CODE(MIME)@en[[[image/*]]]] なら好ましくなさそうえす [SRC[>>223]]。
]EG]

[229] [[最上位型]]はこのようなものですから、
[CODE(MIME)@en[[[text/*]]]]、[CODE(MIME)@en[[[image/*]]]]、
[CODE(MIME)@en[[[audio/*]]]]、[CODE(MIME)@en[[[video/*]]]]
の各[[部分型]]は、実際には異なる種類の情報を埋め込むべきではありません [SRC[>>223]]。

;; [230] そのような場合は [CODE(MIME)@en[[[multipart/*]]]] や
[CODE(MIME)@en[[[application/*]]]] を使うべきです [SRC[>>223]]。

;; [231] [CODE(MIME)@en[[[video/*]]]] が[[音声トラック]]や[[テキストトラック]]を含むのは例外とされています。
([CODE(MIME)@en[[[video/*]]]] 参照。)

[177] [[部分型]]の決定には[[型]]の意味を考慮しなければ[['''ならず''']]、
[[部分型]]は[[型]]の制約に適合しなければ[['''なりません''']] [SRC[>>170]]。

[EG[
[178] 例えば [CODE(MIME)@en[[[multipart/[VAR[*]]]]]] に属する[[部分型]]は
[CODE(MIME)@en[[[multipart/[VAR[*]]]]]] の共通の構文に従う必要があります。
]EG]

* 木と [CODE[x-]]

[28] [[部分型]]は [CODE[[[.]]]] を区切り文字とする階層構造によって分けられています。
これは[DFN[[RUBYB[[[木]]]@en[tree]]]]と呼ばれています。

[EG[
[164] [CODE(MIME)@en[[[image/png]]]] は[[標準木]]に、
[CODE(MIME)@en[[[image/vnd.microsoft.icon]]]] は[[事業者木]]に属しています。
]EG]

;; [[木 (IETF)]]を参照。

[165] また [CODE[[[x-]]]] ではじまる[[部分型]]は、かつては[[私用]]のために予約されていました。
現在は特別な扱いはされておらず、 [CODE[[[x-]]]] から始まる[[部分型]]も
[[IANA登録簿]]に登録されています。

;; [[木 (IETF)]]をも参照。

[258] [[IANA登録簿]]には (不思議なことに) [CODE(MIME)@en[[[application/index]]]] のように[[木]]が
[[MIME型]]として登録されていることもあります。

* 構造化構文接尾辞

[68] [CODE(MIME)@en[[[image/svg+xml]]]] の [CODE(MIME)@en[[[+xml]]]] のように、
[[MIME型]]の末尾に [CODE[+]] と構文名がついているものは、その構文の一応用であることを表します。
この例では、 [[XML]] という構文に基づいた[[マーク付け言語]]の一種である [[SVG]]
ということを表しています。このようなものを[RUBYB[[[構造化構文接尾辞]]]@en[structured syntax suffix]]といいます。
詳しくはそちらの項を参照してください。

* 引数

[192] [[MIME型]]には、0個[[以上]]の[[引数]]を指定できます [SRC[>>191, >>223]]。
[[MIME型記録]]の[DFN[[F[[RUBYB[[[引数群]]][parameters]]]]]]は、
[[ASCII文字列]]である[[キー]]と[[値]]の[[順序付き写像]]で、
初期状態は[[空][空写像]]です [SRC[>>393]]。

;; [193] しかし[[MIME型]]を使う文脈によっては、[[引数]]を指定できないこともあります。
指定されていると正しく処理できない実装も少なくありません。

[67] [[引数]]は、個別の[[MIME型]]で規定されているものもあれば、
[[最上位型]]に属する[[MIME型]]全体で規定されるものもあります [SRC[>>191, >>223]]。
複数の [[MIME型]]で定義を共有しているものもあります。
すべての[[MIME型]]で共通して利用できる[[引数]]は、正式には存在しませんが、
現実には幾つかの[[引数]]が [[MIME型]]と独立に使われています。

;; [194] 本来の [[MIME]] の設計思想に従うなら、すべての [[MIME型]]に適用可能な[[引数]]は他の[[ヘッダー]]で記述するべきです。

[233] 実装は、認識できない[[引数]]を無視しなければなりません [SRC[>>223]]。

[195] 全部または多数の [[MIME型]]で使われる[[引数]]には、次のものがあります。
[FIG(list short)[
- [CODE(MIME)@en[[[base64]]]]
- [CODE(MIME)@en[[[boundary]]]]
- [CODE(MIME)@en[[[capture]]]]
- [CODE(MIME)@en[[[charset]]]]
- [CODE(MIME)@en[[[charset-edition]]]]
- [CODE(MIME)@en[[[charset-extension]]]]
- [CODE(MIME)@en[[[codecs]]]]
- [CODE(MIME)@en[[[maxptime]]]]
- [CODE(MIME)@en[[[name]]]]
- [CODE(MIME)@en[[[odata[VAR[*]]]]]]
- [CODE(MIME)@en[[[profile]]]]
- [CODE(MIME)@en[[[ptime]]]]
- [CODE(MIME)@en[[[q]]]]
- [CODE(MIME)@en[[[qs]]]]
- [CODE(MIME)@en[[[rate]]]]
- [CODE(MIME)@en[[[version]]]]
]FIG]

[85] [[引数名]]「[CODE(HTTP)@en[[[q]]]]」は[RUBYB[非推奨]@en[discouraged]]です [SRC[>>84]]。
本来は [CODE(HTTP)@en[[[Accept:]]]] [[ヘッダー]]など一部の場面で使われるもので、
[[MIME型]]ではなく[[ヘッダー]]側に属する構文です。

[2] [[OData]] は [[OData]] の実装に対して [CODE(MIME)@en[[[odata]]]]
から始まる ([[OData]] で規定されていない) [[引数]]の利用を禁止しています [SRC[>>1]]。

[197] [[標準木]]に登録する [[MIME型]]は、[[引数]]の名前と値と意味を完全に規定しなければ[['''なりません''']]。
[CODE[[[vnd.]]]] や [CODE[[[prs.]]]] の[[木]]に登録する [[MIME型]]は、
可能な限り規定する[['''べき''']]です。 [SRC[>>191]]

;; [202] なぜ[[木]]によって要求度が異なるのか謎です。 [CODE[[[vnd.]]]] や
[CODE[[[prs.]]]] の登録の敷居を下げるためかもしれませんが、
[[相互運用性]]に支障が出るのでは...

[288] 実際にはそれを放棄しているものもあります。

[EG[
[276] 例えば [CODE(MIME)@en[[[text/markdown]]]] は、
任意の[[引数]]を使えると規定しています。
]EG]

[200] [[引数]]の値の構文は、[[引数]]によります。[[MIME型]]を登録する際は規定しなければ[['''なりません''']] [SRC[>>191]]。

;; [201] プロトコルによっては[[バイナリー]]を値として指定できるかもしれませんが、
他のプロトコルでは使えないので、避けたほうが無難です [SRC[>>191]]。

[275] [[引数]]の値として認められる範囲やそもそも[[引数]]を指定できるかどうかは、
他の[[引数]]の値に依存して決まることもあります。

[203] [[標準木]]の [[MIME型]]に対して新機能を追加する方法として新しい[[引数]]を定義する[['''べきではありません''']]。
既存の機能を変更せずに追加情報を与える新しい[[引数]]を定義するのは構いません。
[CODE[[[vnd.]]]] や [CODE[[[prs.]]]] の[[木]]においても同様とする[RUBYB[べき]@en[encourage]]ですが、必須ではありません。
[SRC[>>191]]

[EG[
[204] 例えば [[JPEG]] の改訂水準を表す [CODE[revision]] [[引数]]が挙げられます [SRC[>>191]]。
]EG]

;; [205] この規定の意図するところはあまりよくわかりません。
処理に影響を与えないなら、[[引数]]が存在する意義がない気がしますが...
改訂によってそのような機能を追加するべきではないということなのでしょうか。
[CODE(MIME)@en[[[text/plain]]]] に [CODE(MIME)@en[[[format]]]]
[[引数]]を後から追加したのは、かなり大きな変更のような気がしますが、
これは許されていいのですかねぇ。
[[木]]によって制約が緩和される理由もよくわかりません。

[196] その他の個別の[[引数]]は、各[[MIME型]]や[[最上位型]]の項を参照してください。

[REFS[
- [1] [CITE[OData Version 4.0 Part 1: Protocol Plus Errata 01]] ([TIME[2014-09-04 16:00:00 +09:00]] 版) <http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html#_Toc393958670>
]REFS]

[232] [[引数]]によっては、必須とされているものもあります [SRC[>>223]]。

[235] 次の[[引数]]は、必須です。
[FIG(list middle)[
- [CODE(MIME)@en[[[multipart/[VAR[*]]]]]] [CODE(MIME)@en[[[boundary]]]]
- [CODE(MIME)@en[[[message/partial]]]] [CODE(MIME)@en[[[id]]]]
- [CODE(MIME)@en[[[message/partial]]]] [CODE(MIME)@en[[[number]]]]
- [CODE(MIME)@en[[[application/index.obj.[VAR[*]]]]]] [CODE(MIME)@en[[[dsi]]]]
- [CODE(MIME)@en[[[application/index.obj.[VAR[*]]]]]] [CODE(MIME)@en[[[base-uri]]]]
- [CODE(MIME)@en[[[application/index.response]]]] [CODE(MIME)@en[[[code]]]]
- [CODE(MIME)@en[[[application/index.cmd.poll]]]] [CODE(MIME)@en[[[type]]]]
- [CODE(MIME)@en[[[application/index.cmd.poll]]]] [CODE(MIME)@en[[[dsi]]]]
- [CODE(MIME)@en[[[application/index.cmd.datachanged]]]] [CODE(MIME)@en[[[type]]]]
- [CODE(MIME)@en[[[application/index.cmd.datachanged]]]] [CODE(MIME)@en[[[dsi]]]]
- [CODE(MIME)@en[[[application/vnd.pwg-multiplexed]]]] [CODE(MIME)@en[[[type]]]]
- [CODE(MIME)@en[[[application/shf+xml]]]] [CODE(MIME)@en[charset]]
- [CODE(MIME)@en[[[audio/G7221]]]] [CODE(MIME)@en[[[bitrate]]]]
- [CODE(MIME)@en[[[audio/DVI4]]]] [CODE(MIME)@en[[[rate]]]]
- [CODE(MIME)@en[[[audio/L8]]]] [CODE(MIME)@en[[[rate]]]]
- [CODE(MIME)@en[[[audio/L16]]]] [CODE(MIME)@en[[[rate]]]]
- [CODE(MIME)@en[[[audio/PCMA]]]] [CODE(MIME)@en[[[rate]]]]
- [CODE(MIME)@en[[[audio/PCMU]]]] [CODE(MIME)@en[[[rate]]]]
- [CODE(MIME)@en[[[application/cals-1840]]]] [CODE(MIME)@en[[[filename]]]]
- [CODE(MIME)@en[[[application/cals-1840]]]] [CODE(MIME)@en[[[version]]]]
- [CODE(MIME)@en[application/xop+xml]] [CODE(MIME)@en[type][application/xop+xml]]
- [CODE(MIME)@en[text/markdown]] [CODE(MIME)@en[charset]]
- [CODE(MIME)@en[application/coap-payload]] [CODE(MIME)@en[cf]]
]FIG]

[220] 次の[[引数]]には[[自然言語]]文を記述できるようです。
[FIG(list)[
- [CODE(MIME)@en[[[name]]]] ([CODE(MIME)@en[[[application/octet-stream]]]])
- [CODE[process]] ([CODE[text/troff]])
- [CODE[versions]] ([CODE[text/troff]])
]FIG]

* 分類

[179] 次の [[MIME型]]の分類があります。
[FIG(short list)[
- [[画像型]]
- [[音声または動画型]]
- [[フォント型]]
- [[HTML MIME型]]
- [[XML MIME型]]
- [[JSON MIME型]]
- [[ZIPを基にした型]]
- [[書庫型]]
- [[composite type]]
- [[JavaScript MIME型]]
- [[スクリプト可能MIME型]]
- [[CORB被保護MIME型]]
- [[対応MIME型]]
]FIG]

* MIME 型の決め方

[281] 新しい[[MIME型]]を決める方法について、色々な人が色々なことを言っています。
[[IETF]] が発行する [[RFC]] の規定が最も「公式」と考えられていますが、
必ずしも実態に合っていませんし、何かと曖昧です。

[FIG(steps)[
= [282] 既に適当な [[MIME型]]があれば、新しい[[MIME型]]を作る必要はどこにもありません。
== [283] [[JSON]] を使っているなら、 [CODE(MIME)@en[[[application/json]]]] とします。
== [284] [[XML]] を使っているなら、 [CODE(MIME)@en[[[text/xml]]]] とします。
== [285] その他適切な[[MIME型]]があれば、それを使います。
= [286] それ以外の場合、
=-
=-
@@
]FIG]

* MIME 型の登録

[12] [[MIME]] は元々[[電子メール]]のための[[プロトコル]]であり、
[[相互運用性]]のために[[MIME型]]は限られた種類のみに限定することが好ましいと考えられていました
[SRC[>>35]]。そのため [[MIME型]]の [[IANA登録簿]]は用意されていましたが、
登録のハードルは高く設定されていました。

[44] しかし実際には既存の多くのファイル形式が[[添付ファイル]]や [[HTTP]]
でやり取りされるファイルなどの形で [[MIME]] および派生プロトコルの環境下で用いられるようになりました。
[[Windows]] や [[Linux]] 上の[[デスクトップ環境]]などでファイル形式を表す識別子
(の1つ) として [[MIME型]]が採用されたこともあり、ネットワーク上でやり取りされないファイル形式にも
[[MIME型]]が割り当てられるようになりました。
この結果、[[IANA登録簿]]に登録されていない [[MIME型]]が ([CODE[[[x-]]]] を使ったものも使わないものも含め)
相当数利用されることとなりました。

[96] 後に [[MIME型]]の登録手続きは緩和され、 [CODE[[[vnd.]]]] 木であれば比較的簡単に登録できるようになりました。
しかし既存の [[MIME型]]を [[IETF]] 側から積極的に [[IANA登録簿]]に登録しようとする動きはありません。
以前に比べれば [[IANA登録簿]]に登録される [[MIME型]]が多くなったとはいえ、
現実の利用状況と乖離しているという問題は解消されていません。

[163] 未登録の [[MIME型]]を使うべきではないと主張する人もいますが、
現実的ではありません。

[79] [[MIME型]]は、 [[BCP 13]] の手続きにより[[IANA]]に登録する[RUBYB[べき]@en[ought to]]です [SRC[>>71]]。

[167] [[MIME型]]として [[IANA登録簿]]に登録できるのは、
「[RUBYB[[[媒体]]書式]@en[media format]]」に限られます [SRC[>>166]]。
例えば [[Base64]] は[[内容転送符号化]]なので、 [[MIME型]]として登録することはできないとされています。

[168] この制約は [[MIME]] の仕組みに由来するもので、他の文脈には有用な区別ではないかもしれませんし、
曖昧です。これが[[IANA登録簿]]と現実が乖離する一因にもなっています。

[EG[
[169] [[gzip]] の [[MIME型]]は長らく [[IANA登録簿]]に登録されておらず、登録後も引き続き従来の色々な未登録の
[[MIME型]]が使われ続けています。
標準の[[MIME型]]が存在しないことが[[相互運用性]]の問題を引き起こしていただけでなく、
統一に失敗して複数の[[MIME型]]を恒久的に対応し続ける必要が生じてしまいました。
(しかもその重要な情報が [[RFC]] にも [[IANA登録簿]]には掲載されていません。
[[RFC]] だけ読んでも[[相互運用可能]]な実装は作れないということです。)
似たような現象が、例えば [CODE(MIME)@en[[[image/vnd.microsoft.icon]]]]
でも起こっています。こちらも正式な[[MIME型]]が登録されて10年以上経っても統一されていません。
]EG]

[EG[
[189] 同様に[[アーカイブ]]系ファイル形式もほとんどが登録されていません。
[CODE(MIME)@en[[[application/zip]]]] は1993年と早い時期に登録されているものの、
非推奨であり [CODE(MIME)@en[[[multipart/mixed]]]] を使うべきとの記述があります。
もちろん今となっては頓珍漢で誰も相手にしないような記述です。
]EG]

[180] [[最上位型]]は、 [[IETF]] の手続きで追加することは可能 [SRC[>>170]] ながら、
新たなものが必要なことは稀である [SRC[>>170]] として比較的高いハードルが設定されており、
私用の仕組みも用意されていません。これまでに正式に追加されたのは
[CODE(MIME)@en[[[model/*]]]] だけです。

[181] その他にも幾つか提案はありましたが、却下または立ち消えとなっています。
実際にはやはり他の[[最上位型]]に馴染まない [[MIME型]]は存在するので、
非標準のものが使われたり、 [CODE(MIME)@en[[[application/*]]]]
に押し込まれたりしています。

[209] 登録された[[MIME型]]は削除できません [SRC[>>208]]。

;; [247] しかし実際には [CODE(MIME)@en[[[application/xhtml-voice+xml]]]]
のように突然削除された例もあります。

[210] 登録された[[MIME型]]は[[廃止]] ([[OBSOLETE]]) 状態に変更することができます
[SRC[>>208]]。

;; [211] しかしこの[[廃止]]の意味は明確になっていません。[[廃止]]されているからといって、
それを利用してはならないとの明示的な規定は無さそうです。

[EG[
[213] 例えば [CODE(MIME)@en[[[text/javascript]]]] は[[廃止]]状態になっています。
しかし現実には [[JavaScript]] の[[MIME型]]として最も広く用いられている
[[MIME型]]なので、「[[廃止]]」とは一体どういう意味なのかは不明です。
]EG]

[212] なお他に状態らしきものとして非推奨 ([[DEPRECATED]]、
>>182 の Deprecated Alias とは別) や一時 (TEMPORARY) と注記されたものが
[[IANA登録簿]]上にありますが、これらが何を表しているのかは明確にはなっていません。
[[RFC]] にも言及がありません。

;; [265] [[IANA登録簿]]は [[XML]] 版もありますが、 [[IANA]] 内の都合に合わせたもので、
一般利用者向けに整備されているわけではないように見えます。部分型と
「(TEMPORARY - ・・・)」のような注記が混ざっていて、しかもある日突然新形式の注記が混ざったりするので、
機械的な利用にはあまり向きません。

[EG[
[266] [CODE(MIME)@en[[[text/markdown]]]] は、
[PRE[
markdown (temporary registered 2014-11-11, extension registered
        2015-09-17, expires 2016-11-11)
]PRE]
... という謎の注記付き部分型で登録されています。
[TIME[2015-10-07T08:55:01.700Z]]
]EG]

[EG[
[358] [CODE(MIME)@en[application/mud+json]] は次のような謎の注釈付きで登録されています。
[PRE(XML code)[
    <record date="2016-11-17">
      <name>mud+json (TEMPORARY - registered 2016-11-17, expires 2017-11-17)</name>
      <xref type="draft" data="draft-ietf-opsawg-mud"/>
      <file type="template">application/mud+json</file>
    </record>
]PRE]

[377] その後更新されて

> TEMPORARY - registered 2016-11-17, extension registered 2017-10-02, expires 2018-11-17

... となっています。 [TIME[2017-11-22T14:51:18.400Z]]
]EG]

[370] 「expires」とありますが、登録簿からの削除が認められていないこととの関係は不明です。
(expires により削除された例があるのかどうかは不明です。)

[430] 登録雛形の「Intended usage」欄には、
[[OBSOLETE]] の他に、
[[COMMON]] と
[[LIMITED USE]]
を指定できます [SRC[>>170]]。

-*-*-

[363] 後年になって、本登録簿とは別に予備登録簿 [SRC[>>362]] が設けられました。
これは手続きに時間がかかる[[標準木]]の登録に先立って、[[IETF]]
が承認した[[標準化団体]]で[[標準化]]の過程にある[[MIME型]]を予備的に登録できるというものです。

[364] 予備登録簿の [[MIME型]]は、本登録に至って抹消されることもあれば、
取り下げにより削除されることもあります。

[366] 常に十数個登録された状態で、そこそこ活用されてはいますが、
検討中のあらゆる[[MIME型]]が登録されているといえるほど網羅性は高くありません。

[371] この予備登録は、本登録簿の「TEMPORARY」とは異なる制度です。どう異なるのかは不明です。

[365] [[IANA]] の[[Webサイト]]の本登録簿からは[[リンク]]も言及もされていないので、
見つけにくいです。 [TIME[2017-04-01T04:24:18.600Z]]

[367] 本登録簿とは別に[[場当たり的]]に雑な制度を付け足すのは登録制度全体の破綻ですよね。。。

-*-*-

[384] 
[[MIME型]]ごとの登録情報は、例えば [CODE[text/css]] なら
<https://www.iana.org/assignments/media-types/text/css>
のような [[URL]] で提供されています。

[385] この登録情報は登録雛形を使って [[IANA]] に登録する手続きを通過した
[[MIME型]]のみしか存在していないので、例えば [CODE[text/plain]] のものはありません。

[386] [CODE[application/vnd.openxmlformats-officedocument.presentationml'''.'''template]]
<https://www.iana.org/assignments/media-types/application/vnd.openxmlformats-officedocument.presentationml'''-'''template>
のように、 [[MIME型]]と [[URL]] で微妙に綴りが違うものもいくつかあります。


-*-*-

[440] [CITE[Wayback Machine]], [TIME[2024-11-17T05:06:42.000Z]] <https://web.archive.org/web/20200328195802/http://www.iana.org/assignments/media-types/application/cap+xml>


[441] >>440 登録データがいつの間にか抹消されている事案


- [442] <https://www.iana.org/assignments/media-types/application/vnd.adobe.xfdf>
- [443] [TIME[2022-04-29T18:41:11.000Z]], [TIME[2024-11-17T05:12:48.933Z]] <https://www.iana.org/assignments/media-types/application/xfdf>

[444] >>442 はかつてあったらしい [[URL]]。今は >>443 への[[リダイレクト]]になっている。
>>443 の文中に

>   1. Deprecated alias names for this type: application/vnd.adobe.xfdf

とある。しかし現在の[[媒体型]]登録簿には [CODE[application/vnd.adobe.xfdf]]
が掲載されていない。かつては [CODE[application/vnd.adobe.xfdf]]
が[[媒体型]]登録簿にあった。

- [445] 
<https://www.iana.org/assignments/media-types/application/vnd.fdf>
- [446] [TIME[2022-04-05T21:26:10.000Z]], [TIME[2024-11-17T05:15:26.872Z]] <https://www.iana.org/assignments/media-types/application/fdf>

[447] [CODE[application/vnd.fdf]] → [CODE[application/fdf]]
でも同じ現象が起こっている。


* MIME 型の構文に従わない型

[5] [[MIME型]]のように「型/部分型」の構文となっていない値が [[MIME型]]と同じ文脈で使われることがあります。

[6] [CODE(822)@en[[[Content-Type:]]]] [[ヘッダー]]を [[MIME]]
以前から定義していた [[RFC 1049]] は、 [CODE[[[/]]]] が入らない型を規定していました。

;; [[RFC1049とInternet媒体型の対応]]参照。

[7] [[Atom]] の [[Text construct]] および [CODE(XMLe)@en[[[atom:content]]]]
[[要素]]の [CODE(XMLa)@en[[[type]]]] [[属性]]では、 [[MIME型]]以外に特殊な意味を持つ
[CODE(XML)@en[[[text]]]]、[CODE(XML)@en[[[html]]]]、[CODE(XML)@en[[[xhtml]]]]
を指定できます。

[8] [[Metalink]] の [CODE(XMLe)@en[[[metaurl]]]] [[要素]]の [CODE(XMLa)@en[[[mediatype]]]]
[[属性]]には [[MIME型]]以外に [CODE(XML)@en[[[torrent]]]] を指定できます。

* API

[269] [[DOM]] の [[API]] は基本的に [[MIME型]]を[[文字列]]として扱っています。
構文解析して部分を取り出したり、比較したりする標準の [[API]] はありません。

;; [255] [[MIME型]]を表す [CODE(DOMi)@en[[[MimeType]]]]
[[インターフェイス]]とその[[配列]]である [CODE(DOMi)@en[[[MimeTypeArray]]]]
[[インターフェイス]]がありますが、
[[プラグイン]]の [[API]] の一部ですから、汎用的なものではありません。

[270] [[プログラミング言語]]の[[ライブラリー]]等の中には、[[MIME型]]を操作する
[[API]] を提供するものもあります。しかし一般的には、 
[[MIME型]]は[[文字列]]ないしは[[バイト列]]として操作されることが多いと思われます。

;; [271] そのため[[引数]]の扱いや[[大文字]]と[[小文字]]の扱いなどで不具合を誘発しています。
問題を避けるためにも、[[引数]]はできるだけ使うべきではありませんし、
[[MIME型]]はすべて[[小文字]]表記とするのが無難でしょう。

* パターン

[86] [[MIME型]]の集合を表す構文がいくつかあります。

[FIG(list)[ [450] [[MIME型]]の[[範囲]]

- [[媒体範囲]]
- [CODE[accept=""]]

]FIG]

* 文脈

[94] [[MIME型]]は色々なところで利用されています。

[FIG(middle list)[
- [CODE(MIME)@en[[[Content-Type:]]]]
- [CODE(HTTP)@en[[[Accept:]]]]
- [CODE(HTTP)@en[[[Content-Style-Type:]]]]
- [CODE(HTTP)@en[[[Content-Script-Type:]]]]
- [CODE(HTMLa)@en[[[type]]]] [[属性]] ([[HTML]])
- [CODE(MIME)@en[[[type]]]] [[引数]] ([CODE(MIME)@en[[[application/vnd.pwg-multiplexed]]]])
- [CODE(HTMLa)@en[[[accept]]]]
- [CODE(HTMLa)@en[[[enctype]]]]
- [CODE(HTMLa)@en[[[srctype]]]]
- [CODE(XMLa)@en[[[contentStyleType]]]]
- [CODE(XMLa)@en[[[contentScriptType]]]]
- [CODE(DOMa)@en[[[contentType]]]]
- [CODE(DOMm)@en[[[overrideMimeType]]]]
- [CODE(URI)@en[data:]] (>>339)
- [CODE(URI)@en[[[ct=]]]]
- [CODE(JS)@en[[[navigator.mimeTypes]]]]
- [CODE(MIME)@en[preview-type]]
- [CODE[typ]]、[CODE[cty]]
]FIG]

[187] [[MIME型]]に関わる次のプロトコルがあります。
[FIG(middle list)[
- [[MIME]]
- [[HTTP]]
- [[MIME Sniffing]]
- [CODE(HTTP)@en[[[X-Content-Type-Options:]]]]
- [CODE(HTMLa)@en[[[typemustmatch]]]]
- [[素片識別子]]
- [CODE(HTMLa)@en[[[language]]]] [[属性]]
- [[mailcap]]
]FIG]

[272] [[Web]] を含む[[インターネット]]では[[MIME型]]がデータ型を表記する[[政治的に正しい]]方法とされています。
[[IETF]] や [[W3C]] などの公式な[[標準仕様]]が規定する技術は、
もっぱら[[MIME型]]を用いるのが普通です。

[273] しかし現実は必ずしもそうなっているわけではありません。特に [[Web]]
では、[[拡張子]]や [[MIME Sniffing]] が [[MIME型]]と併用されています。

[EG[
[274] [CODE(HTMLe)@en[[[input]]]] [[要素]]の [CODE(HTMLa)@en[[[accept]]]]
[[属性]]では、[[MIME型]]だけでなく[[拡張子]]も指定できます。
]EG]

-*-*-

[339] [[[CODE[data:]] URL構造体]]は、
[DFN[[F[[RUBYB[[[MIME型]]]@en[MIME type]]]]]]を持ち、
その値は[[MIME型]]です [SRC[>>338]]。

** ファイルシステムと MIME 型

@@ [268] XXX

** RTP

[267] [[RTP]] は [[MIME型]]の指定に ([[RTP]] の他の部分と整合した) 独特の構文を採用しています。
また [[RTP]] で使う [[MIME型]]とそれ以外の[[プロトコル]]で使う[[MIME型]]のほとんどは重なりません。
([[RTP]] で使うことができるデータ形式は「[[framed]]」と呼ばれています。)
登録手続きは一応共通ですが、別の特別な [[RFC]] で規定されています (>>130)。
実質的に従来の[[MIME型]]とは異なる別のデータ形式記述方式ですが、
[[IETF]] 内で複数の似たものが存在するのは良くないとの[[政治的]]な理由からなのか、
無理矢理に統合されているように見えます。

** top-level type だけを使う

[453] [CITE@en[Content Credentials : C2PA Technical Specification :: C2PA Specifications]], [TIME[2026-01-15T06:08:55.000Z]], [TIME[2026-01-27T01:46:08.708Z]] <https://spec.c2pa.org/specifications/specifications/2.3/specs/C2PA_Specification.html#_soft_binding_algorithm_list>

* 処理

[239] 処理方法は、個々の [[MIME型]]によります。

[240] 未知の[[最上位型]]をどう処理するべきか [[RFC 2046]] は明記していません。
が [CODE(MIME)@en[[[application/octet-stream]]]] のように扱うべきと思われます。

* 比較

[254] [CODE(HTMLe)@en[[[object]]]] [[要素]]の処理では、[[引数]]も含めて
[[ASCII大文字・小文字不区別]]で比較されます。

* 他の識別子との関係

[206] [[MIME型]]の [[IANA登録簿]]は、[[拡張子]]や[[魔法数]]、
[[Mac OS File Type]] といった識別子を (あれば) 登録時に記述することを推奨しています。

[207] [[Apache]] や [[Windows]] をはじめ多くの [[MIME型]]の実装は、
[[ファイルシステム]]上の[[ファイル]]の [[MIME型]]を決定する際に[[ファイル名]]の[[拡張子]]を使っています。

;; ただし[[拡張子]]と [[MIME型]]の関係は多対多であり、確実に決定することはできません。
また[[拡張子]]がない [[MIME型]]や [[MIME型]]がない[[拡張子]]も珍しくありません。

* テスト

[337] [CITE@en[web-platform-tests/mimesniff/mime-types at master · w3c/web-platform-tests]] ([TIME[2018-02-04 21:54:08 +09:00]]) <https://github.com/w3c/web-platform-tests/tree/master/mimesniff/mime-types>

* 歴史

[101] [[MIME型]]の前身となるものは [[RFC 1048]] で規定されていました。
後に [[MIME]] により現在の「型/部分型」の形に変更されました。

** RFC 1049

[81] [[RFC1049とInternet媒体型の対応]]参照。

** MIME

[236] [[MIME型]]は [[RFC 1341]]、[[RFC 1521]] を経て [[RFC 2046]]
で規定されています。

[241] [[RFC 2046]] は [[RFC 822]] の [[ABNF]] を採用しているように見えますが、
明記されていません。

[242] 多くの[[引数]]の構文は明記されていません。旧版の [[RFC 1521]] には [[ABNF]]
があったのに、なぜか削除され、退化しています。

[REFS[
- RFC 1341 <urn:ietf:rfc:1341> (廃止)
- RFC 1437 <urn:ietf:rfc:1437> matter-transport/* 媒体型
- RFC 1521 <urn:ietf:rfc:1521> (廃止)
- RFC 2046 <urn:ietf:rfc:2046> 媒体型
- RFC 2376 <urn:ietf:rfc:2376> XML 媒体型 (廃止)
- RFC 3023 <urn:ietf:rfc:3023> XML 媒体型
- [30] [[IANA登録簿]] <http://www.iana.org/assignments/media-types/>
-- [132] [CITE[IANA | MIME Media Types]] ([TIME[2015-04-19 12:15:10 +09:00]] 版) <http://web.archive.org/web/20020805230715/http://www.iana.org/assignments/media-types/>
]REFS]

[237] [[RFC 2046]] は次の通り部分的に[[更新]]されています。
[FIG(list)[
- [[RFC 2646]] - [CODE(MIME)@en[[[text/plain]]; [[format]]]] [[引数]]の追加
- [[RFC 3798]] - [CODE(MIME)@en[[[message/partial]]]] の規定の追加
- [[RFC 5147]] - [CODE(MIME)@en[[[text/plain]]]] の[[素片識別子]]
- [[RFC 6657]] - [CODE(MIME)@en[[[charset]]]] [[引数]]の既定値の改訂
]FIG]

;; [243] 登録手続きの改訂版である [[RFC 4288]] が [[RFC 2046]]
の一部規定をコピペ改訂しているようですが、なぜか[[更新]]とはなっていません。
[[RFC 2046]] と登録手続きの [[RFC]] は内容に重複がありつつ完全な整合性は無く、
解釈が難しい状態です。

[103] [[MIME型]]の登録手続きは当初 [[RFC 1341]] [SRC[>>102]]、[[RFC 1521]] [SRC[>>106]] と 
[[MIME]] 第1部の[[附属書]]で規定されていました。

[REFS[
- [106] [CITE@en[RFC 1341 - MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifying and Describing the Format of Internet Message Bodies]] ([TIME[2015-02-01 12:14:56 +09:00]] 版) <http://tools.ietf.org/html/rfc1341#page-52>
- [102] [CITE@en[RFC 1341 - MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifying and Describing the Format of Internet Message Bodies]] ([TIME[2015-02-01 12:14:56 +09:00]] 版) <http://tools.ietf.org/html/rfc1341#page-68>
- [107] [CITE@en[RFC 1521 - MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies]] ([TIME[2015-03-15 13:27:10 +09:00]] 版) <http://tools.ietf.org/html/rfc1521#page-55>
- [105] [CITE@en[RFC 1521 - MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies]] ([TIME[2015-03-15 13:27:10 +09:00]] 版) <http://tools.ietf.org/html/rfc1521#page-72>
]REFS]

[FIG(quote)[
[FIGCAPTION[
[90] RFC 2046 2.  Definition of a Top-Level Media Type
]FIGCAPTION]

The definition of a top-level media type consists of:

上位媒体型の定義は次のものから構成されます。

[PRE[
    (1)   a name and a description of the type, including
          criteria for whether a particular type would qualify
          under that type,
]PRE]

(1) 型の名前と説明。特定の型をその型の下に置けるかどうかの適合基準

[PRE[
    (2)   the names and definitions of parameters, if any, which
          are defined for all subtypes of that type (including
          whether such parameters are required or optional),
]PRE]

(2) その型のすべての亜型用に定義するパラメーターがあればその名前と定義
(そのパラメーターが必須か省略可能かを含む)

[PRE[
    (3)   how a user agent and/or gateway should handle unknown
          subtypes of this type,
]PRE]

(3) 利用者代理者や関門がその型の未知の亜型をどう取り扱うべきか

[PRE[
    (4)   general considerations on gatewaying entities of this
          top-level type, if any, and
]PRE]

(4) 必要なら、この上位型の実体の関門通過に関しての考慮一般

[PRE[
    (5)   any restrictions on content-transfer-encodings for
          entities of this top-level type.
]PRE]

(5) この上位型の実体の内容転送符号化の制限
]FIG]

[FIG(quote)[
[FIGCAPTION[
[91] RFC 2046 3.  Overview Of The Initial Top-Level Media Types
]FIGCAPTION]

The five discrete top-level media types are:

5つの個々上位媒体型は次の通りです。

[PRE[
    (1)   text -- textual information.  The subtype "plain" in
          particular indicates plain text containing no
          formatting commands or directives of any sort. Plain
          text is intended to be displayed "as-is". No special
          software is required to get the full meaning of the
          text, aside from support for the indicated character
          set. Other subtypes are to be used for enriched text in
          forms where application software may enhance the
          appearance of the text, but such software must not be
          required in order to get the general idea of the
          content.  Possible subtypes of "text" thus include any
          word processor format that can be read without
          resorting to software that understands the format.  In
          particular, formats that employ embeddded binary
          formatting information are not considered directly
          readable. A very simple and portable subtype,
          "richtext", was defined in RFC 1341, with a further
          revision in RFC 1896 under the name "enriched".
]PRE]

(1) text —— 文字情報。亜型 "plain" は特に、いかなる類の書式化命令・指令
を含まない平文 (plain-text) を示します。平文は「そのまま」表示する
ことを意味します。文の完全な意味を得るのに、指定された文字集合への対応を
除いて特別なソフトウェアは必要ありません。他の亜型は応用ソフトウェアが
文の見た目をよくする裕福文に使われるかもしれませんが、内容の
一般的な着想を得るのにはこのようなソフトウェアは必須ではありません。
ですから "text" の亜型となりえるものにはその形式を理解するソフトウェア
無しに読むことが出来る言葉処理器 (ワード・プロセッサー) の形式を含みます。
特に、バイナリ書式付け情報を埋め込んだ形式は直接可読とは言えません。
とても単純で移植性ある亜型, "richtext" (裕福文) は RFC 1341 
で定義されていましたが、 RFC 1896 で "enriched" (裕福化) という名前で
更に改訂されています。

訳注: embeddded は d が一個多い。

[PRE[
    (2)   image -- image data.  "Image" requires a display device
          (such as a graphical display, a graphics printer, or a
          FAX machine) to view the information. An initial
          subtype is defined for the widely-used image format
          JPEG. .  subtypes are defined for two widely-used image
          formats, jpeg and gif.
]PRE]

(2) image ——画像データ。 "image" は情報を見るのに表示機器 
(画像画面, 画像印刷機, FAX 機器など) が必要です。初期亜型としては
広く使われている画像形式 JPEG を定義します。。 亜型としては
2つの広く使われている画像形式, jpeg と gif を定義します。
(訳注: 誤植というか編集ミスというか。)

[PRE[
    (3)   audio -- audio data.  "Audio" requires an audio output
          device (such as a speaker or a telephone) to "display"
          the contents.  An initial subtype "basic" is defined in
          this document.
]PRE]

(3) audio ——音声データ。 "audio" は音声出力機器 (スピーカーとか電話とか)
が内容を「表示」するのに必要です。初期亜型としては "basic"
をこの文書で定義します。

[PRE[
    (4)   video -- video data.  "Video" requires the capability
          to display moving images, typically including
          specialized hardware and software.  An initial subtype
          "mpeg" is defined in this document.
]PRE]

(4) video 動画データ。 "video" は動く画像を表示する能力が必要です。
典型的には特別なハードウェアとソフトウェアを含みます。
初期亜型としては "mpeg" をこの文書で定義します。

[PRE[
    (5)   application -- some other kind of data, typically
          either uninterpreted binary data or information to be
          processed by an application.  The subtype "octet-
          stream" is to be used in the case of uninterpreted
          binary data, in which case the simplest recommended
          action is to offer to write the information into a file
          for the user.  The "PostScript" subtype is also defined
          for the transport of PostScript material.  Other
          expected uses for "application" include spreadsheets,
          data for mail-based scheduling systems, and languages
          for "active" (computational) messaging, and word
          processing formats that are not directly readable.
          Note that security considerations may exist for some
          types of application data, most notably
          "application/PostScript" and any form of active
          messaging.  These issues are discussed later in this
          document.
]PRE]

(5) appliaction 他の種類のデータ, 典型的には解釈出来ないバイナリ・データ
や応用により処理される情報です。亜型 "octet-stream" は解釈出来ない
バイナリ・データに使われ、この場合の最も簡単な推奨動作は情報を
ファイルに書き出すと利用者に申し出ることです。 "PostScript" 亜型も
PostScript 物体を転送するために定義します。他の "application"
で使うべきものには表計算, 基メイル予定系統, 「動的」(計算的)メッセージの言語,
直接可読でないワード・プロセッサーの形式があります。なお、
応用データの幾つかの型, とりわけ "application/PostScript" や動的
目セージの形式には安全性について考慮すべきことがあたりします。
この問題についてはこの文書の後の方で話します。

The two composite top-level media types are:

2つの合成上位媒体型は次の通りです。

[PRE[
    (1)   multipart -- data consisting of multiple entities of
          independent data types.  Four subtypes are initially
          defined, including the basic "mixed" subtype specifying
          a generic mixed set of parts, "alternative" for
          representing the same data in multiple formats,
          "parallel" for parts intended to be viewed
          simultaneously, and "digest" for multipart entities in
          which each part has a default type of "message/rfc822".
]PRE]

(1) multipart 複数の独立したデータ型の実体で構成されるデータ。
4つの亜型がはじめから定義されています。 "mixed" 亜型は
一般の混成の部分の集合を示し, "alternative" は同じデータを複数の形式で
表現していることを表し, "parallel" は同時に表示されることを意図した
部分を組み合わせたもので、 "digest" は各部分の既定値が "message/rfc822"
の多部分実体で構成されるものです。

[PRE[
    (2)   message -- an encapsulated message.  A body of media
          type "message" is itself all or a portion of some kind
          of message object.  Such objects may or may not in turn
          contain other entities.  The "rfc822" subtype is used
          when the encapsulated content is itself an RFC 822
          message.  The "partial" subtype is defined for partial
          RFC 822 messages, to permit the fragmented transmission
          of bodies that are thought to be too large to be passed
          through transport facilities in one piece.  Another
          subtype, "external-body", is defined for specifying
          large bodies by reference to an external data source.
]PRE]

(2) message カプセル化メッセージ。媒体型 "message" の本文は
それ自体が何らかの種類のメッセージ物体の一部又は全部です。
この物体が今度は他の実体を含むかもしれませんし、含まないかもしれません。
"rfc822" 亜型はカプセル化内容が RFC 822 メッセージである時に使います。
"partial" 亜型は RFC 822 メッセージの一部用に定義するもので、
転送機能を一片でまとめて通過させるには大き過ぎると思われる
本文を断片化して送ることが出来ます。他の亜型, "external-body"
は外部データ源を使って大きな本文を示すのに定義します。

It should be noted that the list of media type values given here may
be augmented in time, via the mechanisms described above, and that
the set of subtypes is expected to grow substantially.

媒体型値は上述の機構でいつ増補されるかもしれませんし、
亜型の集合は本質的に増えて行くだろうことに注意して下さい。
]FIG]

[FIG(quote)[
[FIGCAPTION[
[92] RFC 2046 6.  Experimental Media Type Values
]FIGCAPTION]

[PRE[
   A media type value beginning with the characters "X-" is a private
   value, to be used by consenting systems by mutual agreement.  Any
   format without a rigorous and public definition must be named with an
   "X-" prefix, and publicly specified values shall never begin with
   "X-".  (Older versions of the widely used Andrew system use the 
 "X-BE2" name, so new systems should probably choose a different name.)
]PRE]

文字 "X-" から始まる媒体型値は私用値で、相互の同意により同意系統で
使われます。厳密に公的に定義されていない形式は "X-" 接頭辞つきで
名前をつけなければなりませんし、公的規定値は "X-" で始めてはいけません。
(広く使われている Andrew の系統の古い版は "X-BE2" 名を使っていましたので、
新しい系統は違う名前を選ぶのがよろしいでしょう。)

[PRE[
   In general, the use of "X-" top-level types is strongly discouraged.
   Implementors should invent subtypes of the existing types whenever
   possible. In many cases, a subtype of "application" will be more
   appropriate than a new top-level type.
]PRE]

通常、 "X-" を上位型に使うのは強く非推奨です。実装者は出来る限り
既存の型の亜型をでっち上げるべきです。多くの場合、 "application"
の亜型にするのが新しい上位型にするのより適切です。
]FIG]

** RFC 1927

[333] 
[DFN[RFC 1927]] は[TIME[1996-04-01]]発行の[[4月1日のRFC]]でした。
[[MIME型]]を提案するといいつつ、その肝心の[[MIME型]]がどこにも説明されていないというのが[[冗談]]としても成り立っていないような。

[REFS[
- [331] [CITE@en[RFC 1927 - Suggested Additional MIME Types for Associating Documents]], [TIME[2021-01-31T15:46:25.000Z]], [TIME[2021-03-22T09:37:11.584Z]] <https://tools.ietf.org/html/rfc1927>
- [332] [CITE[RFC Errata Report » RFC Editor]], [TIME[2021-03-22T09:37:53.000Z]] <https://www.rfc-editor.org/errata_search.php?rfc=1927>
]REFS]


** HTTP および派生プロトコルでの扱い

[4] [[HTTP92]] は、[[電子メール]]とは違って [[HTTP]] では[[内容折衝]]が使えるので、
[[MIME]] にない[[媒体型]]も認めるべきだと述べていました [SRC[>>3]]。

[REFS[
- [3] [CITE[Object Header lines in HTTP]] ([TIME[2002-04-11 00:31:17 +09:00]] 版) <http://www.w3.org/Protocols/HTTP/Object_Headers.html#z16>
]REFS]

[FIG(quote)[
[FIGCAPTION[
[93] RFC 1945 (HTTP/1.0) 3.6; RFC 2068・2616 (HTTP/1.1) Media Types
]FIGCAPTION]

> HTTP uses Internet Media Types [DEL[[INS[{1945}]] [13] ]] [INS[[INS[{2616}]] [17] ]] in the Content-Type [DEL[[INS[{1945}]] header field]] ([DEL[[INS[{1945}]] Section 10.5]] [INS[section [DEL[[INS[{2068}]] 14.18]] [INS[[INS[{2616}]] 14.17]]]]) [INS[[INS[{2068,2616}]] and Accept (section 14.1) header fields]]
in order to provide open and extensible data typing [INS[[INS[{2068,2616}]] and type negotiation]].

[39] [[HTTP]] は Internet [[媒体型]]を Content-Type 頭欄と
Accept 頭欄において開放的で拡張可能なデータ型指定及びデータ型折衝のために使用します。

>
-media-type     = type "/" subtype *( ";" parameter )
-type           = token
-subtype        = token

> Parameters [DEL[may]] [INS[[INS[{2616}]] MAY]] follow the type/subtype in the form of attribute/value pairs [INS[[INS[{2616}]] (as defined in section 3.6)]].

[40] 引数が型/亜型の後に属性/値の組の形で続いても'''構いません'''。

[DEL[
>[INS[{1925,2068}]]
-parameter      = attribute "=" value
-attribute      = token
-value          = token | quoted-string
]DEL]

> The type, subtype, and parameter attribute names are case-insensitive.  Parameter values [DEL[may]] [INS[[INS[{2616}]] might]] or [DEL[may]] [INS[might]] not be case-sensitive,
depending on the semantics of the parameter name. [DEL[[INS[{1945}]] LWS must not be generated]] [INS[Linear white space (LWS) MUST NOT be used]]
between the type and subtype, nor between an attribute and its value. [DEL[[DEL[[INS[{1945}]] Upon receipt of a media type with an unrecognized parameter, a user agent should treat the media type as if the unrecognized parameter and its value were not present.]] [INS[[INS[{2068}]] User agents that recognize the media-type MUST process (or arrange to be processed by any external applications used to process that type/subtype by the user agent) the parameters for that MIME type as described by that type/subtype definition to the and inform the user of any problems discovered.]]]] [INS[[INS[{2616}]] The presence or absence of a parameter might be significant to the processing of a media-type, depending on its definition within the media type registry.]]

[41] 型, 亜型, 引数属性名は大文字と小文字を区別しません。
引数値は、引数名の意味によって、区別するかもしれませんし区別しないかもしれません。
型及び亜型の間ならびに属性及びその値の間には線形空白 ([[LWS]])
を入れては'''なりません'''。[DEL[[DEL[認識できない引数のある媒体型を受信した際は、その認識できない引数と値は現れていないものとして取扱うべきです。]] [INS[ある [CODE(ABNF)[media-type]] を認識する[[利用者エージェント]]は、その MIME 型の引数を型・亜型定義で記述されているように処理 (あるいは利用者エージェントが型・亜型を処理するのに使う外部応用に処理させるように調整) し、問題が見つかれば利用者に知らせなければ'''なりません'''。]]]] [INS[引数の有無は、媒体型登録簿中の定義によっては、媒体型の処理に意味を持つかもしれません。]]

> [INS[Note[DEL[:]] [INS[that]] some]] [DEL[[INS[{1945}]] Some]]
older HTTP applications do not recognize media type parameters. [INS[When sending data to older HTTP applications, implementations]] [DEL[[INS[{1945}]] HTTP/1.0 applications]] [DEL[[INS[{1945,2068}]] should]] [INS[SHOULD]] only use media type parameters when they are [DEL[[INS[{1945}]] necessary to define the content of a message]] [INS[required by that type/subtype definition]].

[42] 古い HTTP 応用には媒体型引数を認識しないものがあることに注意してください。
古い HTTP 応用にデータを送るときには、型・亜型定義が必須としている媒体型引数だけを使う'''べきです'''。

> Media-type values are registered with the Internet Assigned Number
Authority (IANA [DEL[[INS[{1945}]]  [15] ]] [INS[[INS[{2616}]] [19] ]]).
The media type registration process is outlined in
RFC [DEL[[DEL[[DEL[1590 [13] [INS[{1945}]]]] [INS[2048 [17] [INS[{2068}]]]]]] [INS[1590 [17] [INS[{2616}]]]]]] [INS[2048 [17] [INS[{Errata}]]]].
Use of non-registered media types is discouraged.

[43] 媒体型値は Internet 割当番号事務局 (IANA)
で登録されます。媒体型登録過程は RFC 1590
にまとめられています。未登録の媒体型の使用は非推奨です。
**** 3.6.1; 3.6.7 Canonicalization and Text Defaults
→[CODE(WikiPage)[[[text/*//正規化]]]]
****3.6.2; 3.7.2 Multipart Types
→[CODE(WikiPage)[[[multipart/*]]]]
]FIG]

[FIG(quote)[
[FIGCAPTION[
[27] RFC 1945 (HTTP/1.0); RFC 2068・2616 (HTTP/1.1)  7.2.1 Type
]FIGCAPTION]
> When an [DEL[Entity-Body]] [INS[entity-body]] is included with a message, the data type of that
body is determined via the header fields Content-Type and Content-Encoding. These define a two-layer, ordered encoding model:

メッセージに [CODE(ABNF)[[[entity-body]]]] が含まれているときには、
その[[本体]]のデータ型は頭欄 [CODE(HTTP)[[[Content-Type]]]] および
[CODE(HTTP)[[[Content-Encoding]]]] により決定します。
この2つの頭欄は2層順序付き符号化模型を定義します。

>
-entity-body := Content-Encoding( Content-Type( data ) )

> [DEL[A]] Content-Type specifies the media type of the underlying data. [DEL[A]]
Content-Encoding may be used to indicate any additional content
coding[INS[s]] applied to the [DEL[type]] [INS[data]], usually for the purpose of data
compression, that [DEL[is]] [INS[are]] a property of the [DEL[resource requested]] [INS[requested resource]]. [DEL[The default for the content encoding is none (i.e., the identity function).]] [INS[There is no default encoding.]]

[CODE(HTTP)[Content-Type]] はそのデータの[[媒体型]]を規定します。
[CODE(HTTP)[Content-Encoding]] は、そのデータに適用されている、
要求された[[資源]]の特性である追加の[[内容符号化]]
(通常はデータ圧縮目的。) を示すのに使うことができます。
既定の符号化はありません。

> Any [DEL[HTTP/1.0]] [INS[HTTP/1.1]] message containing an entity[INS[-]]body [DEL[should]] [INS[SHOULD]] include a
Content-Type header field defining the media type of that body. If
and only if the media type is not given by a Content-Type [DEL[header, as is the case for Simple-Response messages]] [INS[field]],
the recipient [DEL[may]] [INS[MAY]]
attempt to guess the media type via inspection of its content and/or the name
extension(s) of the [DEL[[INS[{1945,2068}]] URL]] [INS[[INS[{2616}]] URI]] used to identify the resource. If the media type remains unknown, the recipient [DEL[should]] [INS[SHOULD]]
treat it as type "application/octet-stream".

[CODE(ABNF)[[[entity-body]]]] を含んだ HTTP メッセージは、
その本体の媒体型を定義する [CODE(HTTP)[Content-Type]]
頭欄を含める'''べきです'''。
媒体型が [CODE(HTTP)[Content-Type]] 頭欄で与えられていない場合[DEL[と [CODE(ABNF)[Simple-Response]] メッセージの場合]]は、
この場合に限って、受信者は内容[[及び/又は]]資源を識別するのに使う
[[URI]] の名前[[拡張子]]をを調べて媒体型を推測しても'''構いません'''。
媒体型がそれでも分からない時は、受信者はその媒体を型
[CODE(MIME)[[[application/octet-stream]]]] として扱う'''べきです'''。
]FIG]

;; [29] 注記なき変更点は 1945→2068 のもの。

** 登録手続きの独立

[112] [DFN[[[RFC 1590]]]] [SRC[>>111]] は、[[MIME]] 
以外への用法の拡大を踏まえて改めて登録手続きを規定するものでした。
[[RFC 1521]] を[[更新]]する形となっていました。

[115] [DFN[[[RFC 2048]]]] ([DFN[[[BCP 13]]]]) [SRC[>>114]] は [[MIME型]] (や他の [[MIME]] 関係の[[プロトコル要素]])
の登録手続きを規定するものでした。 [[RFC 1521]] と [[RFC 1590]]
を[[廃止]]するものでした。

;; [116] [[RFC 1590]] で一旦 [[MIME]] から独立したものが、なぜか [[RFC 2048]]
でまた [[MIME]] に戻っています。

[119] [[RFC 3023]] は [CODE[[[+xml]]]] [[構造化構文接尾辞]]を規定するもので、
[[MIME型]]の登録時に [CODE[[[+xml]]]] に関する制約に従うことを求めています。
[[RFC 2048]] を[[更新]]する形となっています。

;; [120] しかし登録手続きそのものへの大きな変更はありません。

[160] RFC 3023 は XML の媒体型には亜型の最後に "+xml" をつけることを推奨しています。
また、あまり喜ばしくないとしながらも、将来同様のメタ型を使う時にも
"+ebml" とか "+ebml+xml" とかすることを提案しています。

[123] [DFN[[[RFC 4288]]]] [SRC[>>121, >>122]] は再び [[MIME]]
から独立した登録手続きを規定するものでした。 [[MIME]] の他の登録手続きを定義する
[[RFC 4289]] と共に新 [[BCP 13]] として [[RFC 2048]] を[[廃止]]するものでした。

[245] [CODE[[[vnd.]]]]、[CODE[[[prs.]]]]、[CODE[[[x.]]]] のような[[木]]も導入されています。

[126] [DFN[[[RFC 6838]]]] [SRC[>>125]] は [[RFC 4288]] を[[廃止]]するものです。
更に [[RFC 6838]] は[[構造化構文接尾辞]]の登録も扱っています。

;; [100] この [[RFC]] は登録できる [[MIME型]]の条件や意味は規定していますが、
実際に[[プロトコル]]や[[マーク付け言語]]で使う構文の規定や、
登録されていない [[MIME型]]の扱いについての規定はありません。
(そうした事項は [[MIME]] や [[HTTP]] の規定が適用されるものと思われます。)

[REFS[
- [111] [CITE@en[RFC 1590 - Media Type Registration Procedure]] ([TIME[2015-03-15 13:29:40 +09:00]] 版) <http://tools.ietf.org/html/rfc1590>
- [114] [CITE@en[RFC 2048 - Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures]] ([TIME[2015-01-18 14:14:19 +09:00]] 版) <http://tools.ietf.org/html/rfc2048>
- [118] [CITE@en[RFC 3023 - XML Media Types]] ([TIME[2015-01-18 14:45:22 +09:00]] 版) <http://tools.ietf.org/html/rfc3023#section-7>
- [121] [CITE@en[RFC 4288 - Media Type Specifications and Registration Procedures]] ([TIME[2015-03-22 16:10:51 +09:00]] 版) <http://tools.ietf.org/html/rfc4288>
- [122] [CITE[RFC Errata Report]] ([TIME[2015-04-19 12:00:18 +09:00]] 版) <http://www.rfc-editor.org/errata_search.php?rfc=4288>
- [125] [CITE@en[RFC 6838 - Media Type Specifications and Registration Procedures]] ([TIME[2015-02-11 00:35:08 +09:00]] 版) <http://tools.ietf.org/html/rfc6838>
- [109] [CITE@en[BCP 13 - Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures]] ([TIME[2014-07-28 01:16:31 +09:00]] 版) <http://tools.ietf.org/html/bcp13>
]REFS]

[110] [[媒体型]]の登録手続きが [[MIME]] じゃなくなった件
([[RFC 4288]] + [[RFC 4289]] obsoletes [[RFC 2048]])、
[[BCP]] としてはどちらも [[BCP 13]] のままみたいです。
([[名無しさん]] [WEAK[2006-07-27 11:19:42 +00:00]])

** [CODE(MIME)@en[model/*]]

[244] [[RFC 2077]] は [CODE(MIME)@en[[[model/*]]]] を規定しています。
現在までこれが唯一 [[IETF]] が公式に新設した[[最上位型]]です。

;; [246] なお1993年[[4月1日]]に発行された [[RFC 1437]] が
[CODE(MIME)@en[[[matter-transport/sentient-life-form]]]] を規定していますが、
[[IANA登録簿]]には登録されていません。

** RTP における MIME 型

[129] [[RFC 3555]] は [[RTP]] で使う [[MIME型]]に関する登録手続きの追加の規定を含んでいました。

[130] [[RFC 4855]] は [[RFC 3555]] を[[廃止]]して改めて [[RTP]]
に関する登録手続きを規定するものです。

[REFS[
- [127] [CITE@en[RFC 3555 - MIME Type Registration of RTP Payload Formats]] ([TIME[2015-02-01 15:31:23 +09:00]] 版) <http://tools.ietf.org/html/rfc3555#section-2>
- [128] [CITE@en[RFC 4855 - Media Type Registration of RTP Payload Formats]] ([TIME[2015-03-23 08:23:49 +09:00]] 版) <http://tools.ietf.org/html/rfc4855>
]REFS]

* 実装

[32]
[CITE[freedesktop.org - Standards/shared-mime-info-spec]] 
<http://freedesktop.org/wiki/Standards_2fshared_2dmime_2dinfo_2dspec>

* メモ

- [13] >>12 禁止ではないわけだ。
実際 HTTP な世界では登録簿に無い媒体型が結構良く使われてます。
- [14] >>13 もしかしてこの注は解釈が間違ってる? 
確かに未登録は非推奨とは言ってるけど、 "x-" なしのを未登録でとは言ってないな。
非推奨している「未登録媒体型」は x-媒体型のことを指してるのかもしれん。
- [16] [WEAK[2002-12-29 21:16]] ''[[名無しさん]]'': ''CVS log for gnue/gnue/common/src/GMimeTypes.py'' <http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/src/GMimeTypes.py>
- [18] [[RFC1927]] Suggested Additional MIME Types for Associating Documents も幾つかの型を提案しています。
- [19] ''How to Register a Media Type with IANA (for the IETF tree)'' <http://www.w3.org/2002/06/registering-mediatype> [[W3C]] の規格で使う媒体型を登録するための手引き。なお、 W3C の媒体型も ietf-tree に登録されます。
- [20] ''Appendix A: MIME Type Detection in Internet Explorer'' <http://msdn.microsoft.com/workshop/networking/moniker/overview/appendix_a.asp>: [[M$]] の [[HTTP]] における媒体型のへたれ実装について。
- [22] [[Windoze]] では[[拡張子]]と媒体型の関連付けは、 [CODE(reg)[[[HKCR]]\.[VAR[拡張子]]\"Content Type"([[REG_SZ]])]] に値を設定することで行えます。
- [23] [[Win98]]/[[WinNT4.0]] まででは、 [[explorer]] のフォルダの設定画面の[CODE[ファイル タイプ]][[タブ]]から設定できましたが、 [[WinMe]] から初心者?にやさしい(つもりの)設定画面に変わって、媒体型の編集はまったくできなくなりました。
- [24] >>23 初心者が関連付けの設定なんかいじるのか謎ですがね。というかそもそも初心者がいじらないといけないような設計が間違ってるのであって。
- [25] [WEAK[2003-10-26 01:43:11 +00:00]] ''[[名無しさん]]'': '''' <http://proxy1.rz.uni-karlsruhe.de/stats/20020628.html>'''

[31]
[CITE[A question on Media Type Registrations]] <http://ietfreport.isoc.org/idref/draft-iesg-media-type/>

非 [[MIME]] 型プロトコル (具体的には [[RTP]]) で媒体型を使いたいけど
[[MIME]] のしがらみがうざいというのが最近 [[ietf-types]]
等々で議論になってます。
([[名無しさん]] [sage] [WEAK[2005-06-09 00:47:27 +00:00]])

[36]
[[RFC 2046]] の6章の

> Any format without a rigorous and public definition must be named with an "X-" prefix, and publicly specified values shall never begin with "X-".

この規定(?)に従うと、 [[RFC 2046]] で定義されている[[媒体型]]はみんな [CODE(MIME)@en[[[X-]]]] ではじめなければならなくなってしまうw
([[名無しさん]])

[37]
>>36 ところが [CODE(MIME)@en[[[X-]]]] にしてしまうと後者の要件に違反してしまうw

[38] 
>[DFN[[RUBYB[内容型]@en[content type]]]] ― Describes the content stored in a part. Content types define a media type, a subtype, and an
optional set of parameters, as defined in RFC 2616.

;; [[ECMA-376]] Second Edition, Part 1, 4.




[46] [CITE@en['''['''Apache-SVN''']''' Log of /httpd/httpd/trunk/docs/conf/mime.types]]
([TIME[2009-10-04 15:13:09 +09:00]] 版)
<http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/conf/mime.types?view=log>

[47] [CITE@en[(X)HTML5 Tracking]]
([TIME[2010-01-10 17:57:42 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4553&to=4554>

[48] 「[[MIME型]]」のような用語の意味するところは曖昧です。

[49] [[Web Applications 1.0]] は「[[妥当なMIME型]]」や「[[妥当な引数なしのMIME型]]」
といった用語を [[RFC 2616]] を参照しつつ独自に規定しています。

[50] [[RFC 4287]] ([[Atom 1.0]]) は [[RFC 4288]] を参照するだけで、
[[RFC 4288]] は構文を完全には規定していないため、実際にどのような構文で記述するべきなのかがはっきりしません。

[51] [[RFC 4855]] (旧 [[RFC 3555]]) は、[[RTP]] で使うための[[MIME型]]の登録に関する規定を行っています。



[52] [CITE@ja[iモード対応HTMLタグ一覧 : <OBJECT>(PDF関連) | サービス・機能 | NTTドコモ]]
([TIME[2010-03-20 23:46:13 +09:00]] 版)
<http://www.nttdocomo.co.jp/service/imode/make/content/browser/html/tag/object_pdf.html>

[53] [CITE@en[Registry-MIME-types - WHATWG Wiki]]
( ([TIME[2010-09-08 17:06:48 +09:00]] 版))
<http://wiki.whatwg.org/wiki/Registry-MIME-types>

[54] [CITE@en[Video type parameters - WHATWG Wiki]]
( ([TIME[2011-01-27 18:22:49 +09:00]] 版))
<http://wiki.whatwg.org/wiki/Video_type_parameters>

[55] [CITE@en[Registry-MIME-types - WHATWG Wiki]]
( ([TIME[2011-01-27 07:03:43 +09:00]] 版))
<http://wiki.whatwg.org/wiki/Registry-MIME-types>

[56] [CITE[IRC logs: freenode / #whatwg / 20110419]]
( ([TIME[2011-04-24 17:32:23 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110419#l-933>

[57] [CITE@en[draft-masinter-mime-web-info-02 - MIME and the Web]]
( ([TIME[2011-08-15 00:37:20 +09:00]] 版))
<http://tools.ietf.org/html/draft-masinter-mime-web-info-02>

[58] [CITE[IRC logs: freenode / #whatwg / 20120928]]
( ([TIME[2012-10-03 22:06:16 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20120928#l-669>

[59] [CITE@en[draft-ietf-appsawg-media-type-suffix-regs-08 - Additional Media Type Structured Syntax Suffixes]]
( ([TIME[2012-11-07 16:48:50 +09:00]] 版))
<http://tools.ietf.org/html/draft-ietf-appsawg-media-type-suffix-regs-08>

[60] [CITE[IRC logs: freenode / #whatwg / 20121105]]
( ([TIME[2012-11-24 13:19:40 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121105>

[61] [CITE[Packaged Web Apps (Widgets) - Packaging and XML Configuration (Second Edition)]]
( ([TIME[2012-11-22 21:22:20 +09:00]] 版))
<http://w3c.github.com/packed-webapps/packaging/#media-type-attribute>

[62] [CITE[IRC logs: freenode / #whatwg / 20130326]]
( ([TIME[2013-03-30 21:50:49 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130326>

[63] ( ([TIME[2013-04-08 19:35:49 +09:00]] 版))
<http://cpansearch.perl.org/src/MIYAGAWA/Plack-1.0023/lib/Plack/MIME.pm>

[64] [CITE[IRC logs: freenode / #whatwg / 20130424]]
( ([TIME[2013-05-04 00:32:00 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130424#l-84>

[65] [CITE[IRC logs: freenode / #whatwg / 20130507]]
( ([TIME[2013-05-16 21:22:04 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130507#l-506>

[66] [CITE[''''''[''''''whatwg'''''']'''''' '''['''mimesniff''']''' Review request: Parsing a MIME type]]
( ([TIME[2013-06-01 02:31:20 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-May/039678.html>

[69] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#attributes1>

[70] [CITE@en-us[Metadata API for Media Resources 1.0]]
( ([TIME[2014-03-12 15:50:19 +09:00]] 版))
<http://www.w3.org/TR/mediaont-api-1.0/#format>

[82] [CITE[Decide that parameters are ignored for the purposes of simple header · c5e6750 · whatwg/fetch]]
( ([TIME[2014-06-28 05:00:42 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/c5e67505d2badfc480d3d4e1f9eb7952ab496f34>

[83] [CITE[RFC Errata Report]]
( ([TIME[2014-07-01 07:56:59 +09:00]] 版))
<http://www.rfc-editor.org/errata_search.php?rfc=7231&eid=4031>

[87] [CITE@en[Web Applications 1.0 r8690 Checkpoint recent updates relating to changing the pipeline. This fixes a bunch of editorial mistakes I uncovered with the new scripts. Shouldn't have any normative changes.]]
( ([TIME[2014-07-16 03:16:00 +09:00]] 版))
<http://html5.org/r/8690>

[88] [CITE[shared-mime-info-spec]]
( ([TIME[2014-04-03 14:15:07 +09:00]] 版))
<http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec/>

[89] [CITE@en[Re: ''''''[''''''whatwg'''''']'''''' How to determine content-type of file: protocol]]
( ([[Gordon P. Hemsley]] 著, [TIME[2014-07-28 23:08:00 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-whatwg-archive/2014Jul/0173.html>

[95] [CITE[RFC Errata Report]]
( ([TIME[2014-09-04 11:09:37 +09:00]] 版))
<http://www.rfc-editor.org/errata_search.php?rfc=7231&eid=4031>

[97] [CITE@en-us[How to Register a Media Type for a W3C Specification]]
( ([TIME[2014-09-02 18:00:39 +09:00]] 版))
<http://www.w3.org/2002/06/registering-mediatype2014.html>

[98] [CITE@en[RFC 5547 - A Session Description Protocol (SDP) Offer/Answer Mechanism to Enable File Transfer]]
( ([TIME[2014-09-13 18:22:39 +09:00]] 版))
<https://tools.ietf.org/html/rfc5547#section-6>

[99] [CITE@en[Metadata Vocabulary for Tabular Data]]
( ([TIME[2015-01-05 18:54:19 +09:00]] 版))
<http://www.w3.org/TR/2015/WD-tabular-metadata-20150108/>

[11] [CITE@en[Bug 28094 – Unclear wording]]
([TIME[2015-02-26 11:31:05 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=28094>

[33] [CITE[Web Font Media Type Analysis - Google ドキュメント]]
([TIME[2015-04-04 11:32:38 +09:00]] 版)
<https://docs.google.com/document/d/1kP3Edo3nDN_2HS6IZK6DMnrvEG1StbY5OKmbwA1ilXI/edit>

[FIG(quote)[
[FIGCAPTION[
[34] [CITE@en[RFC 3709 - Internet X.509 Public Key Infrastructure: Logotypes in X.509 Certificates]]
([TIME[2015-04-05 18:07:12 +09:00]] 版)
<https://tools.ietf.org/html/rfc3709#page-10>
]FIGCAPTION]

> A MIME type is used to specify the format of the file containing the logotype data.
> MIME types MAY include parameters.

]FIG]

[188] [CITE[IANA | Application for Media Type]]
([TIME[2015-04-20 14:22:38 +09:00]] 版)
<http://www.iana.org/form/media-types>

[190] [CITE@en[RFC 5688 - A Session Initiation Protocol (SIP) Media Feature Tag for MIME Application Subtypes]]
([TIME[2015-04-06 00:45:31 +09:00]] 版)
<https://tools.ietf.org/html/rfc5688>

[214] [CITE@en-us[How to Register a Media Type for a W3C Specification]]
([TIME[2014-12-05 05:28:36 +09:00]] 版)
<http://www.w3.org/2002/06/registering-mediatype2014>

[215] [CITE@en[gecko-dev/nsMimeTypes.h at dfd4efa147e3604707e65b502e142aa8e1dce737 · mozilla/gecko-dev]]
([TIME[2015-05-07 20:21:48 +09:00]] 版)
<https://github.com/mozilla/gecko-dev/blob/dfd4efa147e3604707e65b502e142aa8e1dce737/netwerk/mime/nsMimeTypes.h>

[216] [CITE[base/mime_util.cc - chromium/src/net - Git at Google]]
([TIME[2015-05-07 21:44:05 +09:00]] 版)
<https://chromium.googlesource.com/chromium/src/net/+/master/base/mime_util.cc>

[217] [CITE@en-AU[PluginDoc: Windows (MIME Type List)]]
([TIME[2015-05-07 21:46:31 +09:00]] 版)
<http://web.archive.org/web/20100911055400/http://plugindoc.mozdev.org/winmime.php>

[218] [CITE[net/base/mime_util.cc - chromium/src - Git at Google]]
([TIME[2015-05-07 21:59:10 +09:00]] 版)
<https://chromium.googlesource.com/chromium/src/+/master/net/base/mime_util.cc>

[219] [CITE[mime_util.cc - Code Search]]
([TIME[2015-05-07 22:02:30 +09:00]] 版)
<https://code.google.com/p/chromium/codesearch#chromium/src/components/mime_util/mime_util.cc>

[FIG(quote)[
[FIGCAPTION[
[248] [CITE[<data> | Android Developers]]
([TIME[2015-06-09 13:07:46 +09:00]] 版)
<http://developer.android.com/guide/topics/manifest/data-element.html>
]FIGCAPTION]

> MIME type matching in the Android framework is case-sensitive, unlike formal RFC MIME types. As a result, you should always specify MIME types using lowercase letters.

]FIG]

[249] [CITE@en[jshttp/mime-db]]
([TIME[2015-06-10 13:03:35 +09:00]] 版)
<https://github.com/jshttp/mime-db>

[250] [CITE@en[mime-types/ruby-mime-types]]
([TIME[2015-06-23 17:55:51 +09:00]] 版)
<https://github.com/mime-types/ruby-mime-types>

[251] [CITE@ja[2007 Office system ファイル形式の MIME タイプをサーバーで登録する]]
([TIME[2015-06-26 17:10:19 +09:00]] 版)
<https://technet.microsoft.com/ja-jp/library/ee309278(v=office.12).aspx>

[252] [CITE[shared-mime-info-spec]]
([TIME[2015-03-24 02:51:19 +09:00]] 版)
<http://freedesktop.org/wiki/Specifications/shared-mime-info-spec/>

[253] [CITE[Association between MIME types and applications]]
([TIME[2014-09-08 06:45:24 +09:00]] 版)
<http://standards.freedesktop.org/mime-apps-spec/mime-apps-spec-latest.html>

[FIG(quote)[
[FIGCAPTION[
[257] [CITE[Packaged Web Apps (Widgets) - Packaging and XML Configuration (Second Edition)]]
([TIME[2015-01-27 11:24:04 +09:00]] 版)
<http://w3c.github.io/packaged-webapps/packaging/#valid-mime-type>
]FIGCAPTION]

> A valid media type is string that matches the production for valid-MIME-type in the following '''['''ABNF''']''':
> valid-MIME-type = type "/" subtype *(";" parameter)
> The type, subtype, and parameter tokens are defined in the '''['''MIME''']''' specification.

]FIG]

[277] [CITE@en[draft-ietf-acap-mediatype-01 - ACAP Media Type Dataset Class]]
([TIME[2015-10-12 03:13:21 +09:00]] 版)
<https://tools.ietf.org/html/draft-ietf-acap-mediatype-01>

[FIG(quote)[
[FIGCAPTION[
[278] [CITE@en[Metadata Vocabulary for Tabular Data]]
([TIME[2015-12-03 20:03:14 +09:00]] 版)
<http://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#transformation-scriptFormat>
]FIGCAPTION]

> scriptFormat
> A link property giving the single URL for the format that is used by the script or template. If one has been defined, this should be a URL for a media type, in the form http://www.iana.org/assignments/media-types/media-type such as http://www.iana.org/assignments/media-types/application/javascript. Otherwise, it can be any URL that describes the script or template format.
> NOTE
> The scriptFormat URL is intended as an informative identifier for the template format, and applications should not access the URL. The template formats that an application supports are implementation defined.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[279] [CITE@en[Metadata Vocabulary for Tabular Data]]
([TIME[2015-12-03 20:03:14 +09:00]] 版)
<http://www.w3.org/TR/2015/REC-tabular-metadata-20151217/#transformation-targetFormat>
]FIGCAPTION]

> targetFormat
> A link property giving the single URL for the format that will be created through the transformation. If one has been defined, this should be a URL for a media type, in the form http://www.iana.org/assignments/media-types/media-type such as http://www.iana.org/assignments/media-types/text/calendar. Otherwise, it can be any URL that describes the target format.
> NOTE
> The targetFormat URL is intended as an informative identifier for the target format, and applications should not access the URL.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[280] [CITE[Custom content-types | - The RESTful cookbook]]
([[]] 著, [TIME[2015-05-18 19:08:49 +09:00]] 版)
<http://restcookbook.com/Resources/using-custom-content-types/>
]FIGCAPTION]

> How can I create my own custom content-types that are representations of users, categories, articles etc?
> Do not use a standard text/xml content-type. A client is not capable of handling this kind of information. Instead, use a custom format in the following form:
> Content-type: application/vnd+company.category+xml
> Content-type: application/vnd+company.category+html
> Content-type: application/vnd+company.category+json
> This allows your clients to process the information (in this case: your categories) as the specified content-type. All three of these content-types are categories, but they are represented in different formats (xml, html and json). Even though this is still information that clients need to know in advance, clients know what to expect, since they can ask for the specific information (categories, in this case), without outside knowledge like the URL etc.
> All application/vnd are vendor-specific content-types and are not standardized. These are for non-standard content-types only.

]FIG]

[FIG(quote)[
[FIGCAPTION[
[287] [CITE@en[RFC 7749 - The "xml2rfc" Version 2 Vocabulary]]
([TIME[2016-02-04 22:54:51 +09:00]] 版)
<https://tools.ietf.org/html/rfc7749#section-2.5.6>
]FIGCAPTION]

> The value is either an Internet Media Type (see '''['''RFC2046''']''') or a
>    keyword (such as "abnf").  The set of recognized keywords varies
>    across implementations.
>    How it is used depends on context and application.  For instance, a
>    formatter can attempt to syntax-highlight code in certain known
>    languages.

]FIG]

[FIG(quote)[
[FIGCAPTION[
[355] [CITE@en[XProc 2.0: An XML Pipeline Language]]
([TIME[2016-07-21 14:35:49 +09:00]])
<https://www.w3.org/TR/2016/NOTE-xproc20-20160721/#p.input>
]FIGCAPTION]

> The content-types attribute lists one or more (space separated) content types that this input port will accept. A content type must be of the form “type/subtype+ext” where any of type, subtype, and ext can be specified as “*” meaning “any”. The “+ext” is optional. Here are some examples of content types for matching:
> text/plain, plain text documents
> text/*, any kind of text document.
> */*+xml, any XML content type.
> */*, any content type.

]FIG]


[356] [CITE@en[Let '''['''MIMESNIFF''']''' define MIME-related concepts]]
([[domenic]]著, [TIME[2016-11-15 19:25:32 +09:00]])
<https://github.com/whatwg/html/commit/0d08aea0733e5ad21f15f626b64d413a8c447083>

[357] [CITE@en[Add MIME types section by domenic · Pull Request #26 · whatwg/infra]]
([TIME[2016-11-18 11:44:18 +09:00]])
<https://github.com/whatwg/infra/pull/26>

[FIG(quote)[
[FIGCAPTION[
[359] [CITE@en[Web Annotation Data Model]]
([TIME[2017-02-24 02:14:26 +09:00]])
<https://w3c.github.io/web-annotation/model/wd2/#h-external-web-resources>
]FIGCAPTION]

> The value of the property should be the media-type of the format, following the '''['''rfc6838''']''' specification.

]FIG]


[360] [CITE@en[RFC 8098 - Message Disposition Notification]]
([TIME[2017-03-02 23:20:54 +09:00]])
<https://tools.ietf.org/html/rfc8098>

[FIG(quote)[
[FIGCAPTION[
[361] [CITE@en[RFC 8075 - Guidelines for Mapping Implementations: HTTP to the Constrained Application Protocol (CoAP)]]
([TIME[2017-03-01 17:25:23 +09:00]])
<https://tools.ietf.org/html/rfc8075#section-6.3>
]FIGCAPTION]

>  To remedy this loss of flexibility, we introduce the concept of a
>    "loose" media type mapping, where media types that are
>    specializations of a more generic media type can be aliased to their
>    super-class and then mapped (if possible) to one of the CoAP content-
>    formats. 

]FIG]

[368] [CITE[TracSyntaxColoring – Applications and Real-Time Area Wiki]] ([TIME[2017-04-02 12:34:20 +09:00]]) <https://trac.ietf.org/trac/art/wiki/TracSyntaxColoring#SyntaxColoringSupport>

[369] >>368 は [[Trac]] の附属ドキュメントで [[IETF]] の独自コンテンツではないのですが、
[[IANA登録簿]]に載っていない[[MIME型]]ばかりの一覧表が並んでいることに、
[[IETF]] の人は何も思わないのでしょうか。

[372] [CITE@en[Bring outdated parts of the FAQ up to date]]
([[sideshowbarker]]著, [TIME[2017-09-07 04:38:34 +09:00]])
<https://github.com/whatwg/html/commit/5d512fe6f54a332d13ff2d0fee59f12a8d1701b3>

[373] [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>

[374] [CITE@en[<style type>/<script type> and MIME type parameters · Issue #3022 · whatwg/html]]
([TIME[2017-09-19 22:45:14 +09:00]])
<https://github.com/whatwg/html/issues/3022>

[375] [CITE@en[Improve <style> and <script> processing and conformance by domenic · Pull Request #3024 · whatwg/html]]
([TIME[2017-09-19 22:47:24 +09:00]])
<https://github.com/whatwg/html/pull/3024>

[376] [CITE[MIME type interoperability — Anne’s Blog]]
([TIME[2017-10-11 17:02:23 +09:00]])
<https://annevankesteren.nl/2017/10/mime-type-interoperability>

[378] [CITE@en[MIME type parsing, comments · Issue #33 · whatwg/mimesniff]]
([TIME[2017-11-26 21:56:24 +09:00]])
<https://github.com/whatwg/mimesniff/issues/33>

[379] [CITE@en[MIME type parsing, spaces before = · Issue #34 · whatwg/mimesniff]]
([TIME[2017-11-26 21:56:38 +09:00]])
<https://github.com/whatwg/mimesniff/issues/34>

[380] [CITE@en[MIME type parsing, single quote parameter values · Issue #35 · whatwg/mimesniff]]
([TIME[2017-11-26 21:56:51 +09:00]])
<https://github.com/whatwg/mimesniff/issues/35>

[381] [CITE@en[MIME type parsing, backslash · Issue #38 · whatwg/mimesniff]]
([TIME[2017-11-26 21:57:12 +09:00]])
<https://github.com/whatwg/mimesniff/issues/38>

[382] [CITE@en[MIME type parsing, duplicate parameters · Issue #41 · whatwg/mimesniff]]
([TIME[2017-11-26 21:58:11 +09:00]])
<https://github.com/whatwg/mimesniff/issues/41>

[383] [CITE@en[MIME type parsing, stricter rules · Issue #44 · whatwg/mimesniff]]
([TIME[2017-11-26 21:58:32 +09:00]])
<https://github.com/whatwg/mimesniff/issues/44>

[387] [CITE@en[MIME type parsing, code points · Issue #45 · whatwg/mimesniff]]
([TIME[2017-12-08 16:40:41 +09:00]])
<https://github.com/whatwg/mimesniff/issues/45>

[388] [CITE@en[Do separators need to be preserved when parsing? · Issue #39 · whatwg/mimesniff]]
([TIME[2017-12-08 16:41:26 +09:00]])
<https://github.com/whatwg/mimesniff/issues/39>

[389] [CITE@en[MIME type parsing, parameter canonicalization · Issue #46 · whatwg/mimesniff]]
([TIME[2017-12-08 16:41:56 +09:00]])
<https://github.com/whatwg/mimesniff/issues/46>

[390] [CITE@en[Define a new MIME type model, parser, and serializer]]
([[annevk]]著, [TIME[2017-12-07 22:11:12 +09:00]])
<https://github.com/whatwg/mimesniff/commit/cc81ec48288944562c4554069da1d74a71e199fb>

[391] [CITE@en[Revamp MIME type section by annevk · Pull Request #36 · whatwg/mimesniff]]
([TIME[2017-12-09 21:29:58 +09:00]])
<https://github.com/whatwg/mimesniff/pull/36>

[392] [CITE@en[Define data: URLs by annevk · Pull Request #579 · whatwg/fetch]]
([TIME[2018-02-01 23:20:38 +09:00]])
<https://github.com/whatwg/fetch/pull/579>

[341] [CITE@en[Editorial: tweak MIME type group definitions by domenic · Pull Request #59 · whatwg/mimesniff]]
([TIME[2018-02-17 18:27:43 +09:00]])
<https://github.com/whatwg/mimesniff/pull/59>

[343] [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>

[344] [CITE@en[Editorial: update usage of the MIME Sniffing Standard by domenic · Pull Request #3455 · whatwg/html]]
([TIME[2018-02-17 18:45:56 +09:00]])
<https://github.com/whatwg/html/pull/3455>

[FIG(quote)[
[FIGCAPTION[
[345] [CITE[Provisional Standard Media Type Registry]]
([TIME[2018-03-20 02:00:14 +09:00]])
<https://www.iana.org/assignments/provisional-standard-media-types/provisional-standard-media-types.xml>
]FIGCAPTION]

> 
>     <record date="2018-03-19">
>       <name>[ASIS[q]]pplication/wasm</name>
>       <org>W3C</org>
>       <xref type="person" data="Bradley_Nelson"/>
>     </record>

]FIG]


[354] [CITE@en[Fix overrideMimeType() again]]
([[annevk]]著, [TIME[2018-04-17 17:54:28 +09:00]])
<https://github.com/whatwg/xhr/commit/121cee50b6f51215f046266642964b4c53a02a7c>

[426] [CITE@en[Look at overrideMimeType() again · Issue #157 · whatwg/xhr]]
([TIME[2018-04-18 13:57:24 +09:00]])
<https://github.com/whatwg/xhr/issues/157>

[427] [CITE@en[Fix overrideMimeType() again by annevk · Pull Request #174 · whatwg/xhr]]
([TIME[2018-04-18 13:57:59 +09:00]])
<https://github.com/whatwg/xhr/pull/174>

[428] [CITE@en[918731 - XMLHttpRequest's overrideMimeType() does not follow the standard]]
([TIME[2018-04-18 13:58:35 +09:00]])
<https://bugzilla.mozilla.org/show_bug.cgi?id=918731>

[429] [CITE@en[Editorial: rewrite send()'s body/content-type processing]]
([[domenic]]著, [TIME[2018-04-24 00:09:11 +09:00]])
<https://github.com/whatwg/xhr/commit/f47bbab42dabe1f52e5e9f1ed1fa6df06a6eb310>

[431] [CITE@en[Correct Unicode reference for backslash]]
([[rwlbuis]]著, [TIME[2018-10-04 23:00:37 +09:00]])
<https://github.com/whatwg/mimesniff/commit/dc35803b66f96ccda3da53ab45819f592b0f9d6d>

[432] [CITE@en[Indicate correct unicode by rwlbuis · Pull Request #83 · whatwg/mimesniff]]
([TIME[2018-10-22 01:20:34 +09:00]])
<https://github.com/whatwg/mimesniff/pull/83>

[433] [CITE@en[Use HTTP rather than ASCII whitespace by annevk · Pull Request #90 · whatwg/mimesniff]]
([TIME[2019-04-15 18:41:51 +09:00]])
<https://github.com/whatwg/mimesniff/pull/90>

[434] [CITE@en[Use HTTP whitespace rather than ASCII whitespace]]
([[annevk]]著, [TIME[2018-11-13 20:11:52 +09:00]])
<https://github.com/whatwg/mimesniff/commit/126286ab2dcf3e2d541349ed93539a88bf394ad5>

[435] [CITE@en[MIME type parsing: stop treating 0x0C as whitespace · Issue #89 · whatwg/mimesniff]]
([TIME[2019-04-15 18:44:03 +09:00]])
<https://github.com/whatwg/mimesniff/issues/89>

[436] [CITE@en[Content-Type parsing (MIME type parsing) · Issue #30 · whatwg/mimesniff]]
([TIME[2019-06-19 15:03:43 +09:00]])
<https://github.com/whatwg/mimesniff/issues/30>

[437] [CITE@en[Define the Content-Type header parser by annevk · Pull Request #831 · whatwg/fetch]]
([TIME[2019-06-19 15:08:46 +09:00]])
<https://github.com/whatwg/fetch/pull/831>

[438] [CITE@en[Use collect an HTTP quoted string from Fetch]]
([[annevk]]著, [TIME[2018-11-28 18:42:02 +09:00]])
<https://github.com/whatwg/mimesniff/commit/8e9a7dd90717c595a4e4d982cd216e4411d33736>

[323] [CITE@en[Use collect an HTTP quoted string by annevk · Pull Request #92 · whatwg/mimesniff]]
([TIME[2019-06-21 11:18:17 +09:00]])
<https://github.com/whatwg/mimesniff/pull/92>

[325] [CITE@en[Extract a MIME type no longer returns bytes]]
([[annevk]]著, [TIME[2018-11-13 22:03:50 +09:00]])
<https://github.com/whatwg/xhr/commit/cf97f4e614235140f77f91bba77099f66501d89b>

[326] [CITE@en[Extract a MIME type no longer returns bytes by annevk · Pull Request #227 · whatwg/xhr]]
([TIME[2019-08-29 20:10:20 +09:00]])
<https://github.com/whatwg/xhr/pull/227>

[328] [CITE@en[Extract a MIME type no longer returns bytes by annevk · Pull Request #227 · whatwg/xhr]]
([TIME[2019-08-29 20:10:33 +09:00]])
<https://github.com/whatwg/xhr/pull/227>

[330] [CITE[ANSI/NISO Z39.96-2012, JATS: Journal Article Tag Suite, version 1.0 - z39.96-2012.pdf]], [TIME[2020-10-28T09:17:55.000Z]] <https://groups.niso.org/apps/group_public/download.php/10904/z39.96-2012.pdf#page=483>

[CODE[mimetype]],
[CODE[mime-subtype]]



[334] [CITE@en[rfc3659]]
([TIME[2021-07-16T03:25:36.000Z]])
<https://datatracker.ietf.org/doc/html/rfc3659#section-7.5>



- [448] 
[CITE@en[Editorial updates to media types section by martinthomson · Pull Request #488 · w3ctag/design-principles · GitHub]], [TIME[2025-01-24T07:03:03.000Z]] <https://github.com/w3ctag/design-principles/pull/488>
- [449] 
[CITE@en[Don't use "MIME" · Issue #195 · whatwg/mimesniff]], [TIME[2025-01-24T07:04:01.000Z]] <https://github.com/whatwg/mimesniff/issues/195>



