RFC1049とInternet媒体型の対応

RFC1049とInternet媒体型の対応

[1] RFC1049 (旧 Internet標準。) と MIME (現在 IETF Draft 標準。) 以降の Internet 媒体型を使ったものとで Content-Type:欄の値には互換性がありません。

[2] RFC 1049 のメッセージを MIME のメッセージに変換する必要がある時には、対応情報が必要になりますが、 IETF はその情報を公表していません。 ですから、実装が個々で対応することになります。

POSTSCRIPT [; "1.0"/"2.0"/"null" [; #("laserprep2.9"/"laserprep3.0"/"laserprep3.1"/"laserprep4.0"/local-part)]]

[3] 名前の通り PostScript で、 application/postscript媒体型が対応します。

RFC 1049 の細かい指定に対応する parameter はありません。

SCRIBE [; "3"/"4"/"5"/"null"]

[4]

the Scribe document formatting language distributed by the Unilogic Corporation. (RFC 1049)

[5] LaTeX は Scribe とコマンド体系を同じに作られた, とされているので、 application/x-latex媒体型 (IANA に登録されてないが、 de facto の名前。) で良いか? しかしコマンド体系が同じということは全て同じでないわけで、問題があるかも。

[6] >>10 では application/x-scribe という名前を用意して対応させています。

SGML [; "IS.8879.1986"/"null"]

[7] SGML == ISO/IEC8879

text/sgml媒体型または application/sgml媒体型が対応するでしょう。 (これらについては RFC1874 <urn:ietf:rfc:1874> 参照。)

[8] RFC 1874 によると規格の互換性問題はない (ということになってるはずな) ので、版 parameter は無視しても良いのかなあ。 (でも XML は一部非互換な変更で、 ISO/IEC も追従するらしいし;-)

[9] >>8 WebSGML 非互換だけど共存可能だからなあ。

[11] >>10 では (内容を見て text/*媒体型application/*媒体型のどちらが適当か判断するのは面倒なので) 常に application/sgml に対応させています。

TEX

[12] TeXapplication/x-tex媒体型 (IANA にないが、 de facto)。

TROFF [; [; #("eqn"/"tbl"/"me"/local-part)]]

[13] TROFFapplication/x-troff媒体型 (IANA にないが、 de facto)。

Parameter の部分を対応させる方法はないと思ふ。

DVI

[14]

the device independent file format produced by TROFF or TEX. (RFC 1049)

[15] application/x-dvi媒体型 (IANA にないが、 de facto)。

X-*

直接対応不可。 application/octet-stream媒体型

TEXT

[16] RFC 1049 にはないが実際に良く使われている型 TEXT は、 text/plain媒体型が対応します。

但しそのまま Content-Type: text/plain に書き換えると、 charset の解釈 (MIME の既定値は US-ASCII。) で問題になる虞があるので、チユ飯が必要です。 (See MIME以前のメッセージ本文)

Message-pm での実装

[10] Message-pm では Message::Field::ContentType <IW:SuikaCVS:perl/lib/Message/Field/ContentType.pm> が担当しています。

RFC 1049 形式の型指定を読んだときは、内部で値を保持する時に MIME の Internet 媒体型に変換しています。

現在のところ RFC 1049 形式での出力は実装されていませんが、 RFC 1049 形式で含んでいた情報は次の方法で保持しています。

[11]

  1. RFC 1049 の Content-Type: 欄の1つ目の値 (type) を調べ、相当する MIME 媒体型が指定されていたとみなす。 元の値は x-rfc1049-type パラメーターの値であったことにする。
  2. 1049 の 2つ目の値 (ver-num) は x-rfc1049-ver-num パラメーターの値であったことにする。
  3. 1049 の3つ目の値 (resource-ref) は x-rfc1049-resource-ref パラメーターの値であったことにする。
  4. なお、 RFC 1049 的にも MIME 的にも不適当な Content-Type: 欄の本体だった場合は、その値全体を x-invalid-type パラメーターの値であったことにする。

以上の過程において、対応する媒体型が決定できないときは、 application/octet-stream とします。

SEE ALSO

メモ