MIME 型は、インターネットの世界では重要な地位を占めています。実際、そのデータや文書がどのような性質を持つものかを知る上で、最も重要な手掛かりとなっているからです。適切な MIME 型を明示させることにより、クライアント側で適切に、効率良くデータを処理することが可能になります。
XML 文書が XML 文書として見倣される為にも、やはり MIME 型の明示が必要になります。 RFC 3023 (XML Media Types) では、以下の型が規定されています。
この説明から分かる通り、巷に出回っている XML 文書には、 text/xml
はそぐわないことが分かります。しかし実際には、サーバ側もクライアント側も、 application/xml
文書のサポートは遅れています。例えば、 XML 対応をうたっている Web ブラウザの中には、 application/xml
で送られた XML 文書をレンダリング出来ないものもあるそうです。両者も同一の拡張子を用いることが多いため、両者が登録されているサーバでは、優先的に text/xml
として送られることもあるように思われます。
かたや、とりわけ日本国内のサーバでは、 .htaccess などによる http ヘッダの操作が不可能なものも多数存在します(ISP 提供のサーバや無料サーバでは多いようです)。本来の仕様に従えば、出回っている国内の XML 文書の多くは、悉く文字化けを起こすはずです。しかし現にそうなっていないのは、クライアント側である程度の融通を利かせているためであり、仕様を軽んじ、サーバ側の「怠慢」を促す意味で、決して許される行為ではありません。
最近(2004年12月現在)は、RSSやFOAPといった、メタデータを記述するための言語が揃い、各種サーバにおいても実装されつつあります。また、XML文書はHTTP経由で伝達させるにしても、Webブラウザによる閲覧に加え、データベースソフト等のように様々な処理系によって扱われます。これらの処理系に負担をかけさせないためにも、MIME型に関しては常に関心を払う必要があります。
RFC 3023 では、 XML をベースとした文書(データベースやプログラム、画像データ、スキーマなども含める)の MIME 型に +xml
接頭辞を附加させるよう求められています。
現在、 +xml
が実際に用いられている例がいくつか存在します(2004年12月末現在)。
application/cnrp+xml は、正式にRFCとして規格化されています。IANAのサイトの情報が間違っていたようです。
application/xhtml+xml
(RFC3236)application/beep+xml
(RFC3080)application/cnrp+xml
(RFC3367)application/cpl+xml
(RFC3880)application/epp+xml
(RFC3730)application/pidf+xml
(RFC3863)application/rdf+xml
(RFC3870)application/reginfo+xml
(RFC3680)application/samlassertion+xml
(OASIS)application/samlmetadata+xml
(OASIS)application/sbml+xml
(RFC3823)application/soap+xml
(RFC3902)application/spirits-event+xml
(RFC3910)application/watcherinfo+xml
(RFC3858)application/xmpp+xml
(RFC3923)application/im-iscomposing+xml
application/xop+xml
application/vnd.irepository.package+xml
application/vnd.mozilla.xul+xml
application/vnd.pwg-xhtml-print+xml
image/svg+xml
(application/svg+xml
); (RFC 3023 で言及)application/mathml+xml
; (RFC 3023 で言及)application/xslt+xml
; (RFC 3023 で言及)application/vml+xml
text/xhtml+xml
+xml
接尾辞を導入することにより、以下の利点があります。
x-
や vnd.
などと名前の取り決めに衝突が起きないため、独自拡張であれ何であれ、いかなるデータ型においても使用出来る。+xml
接尾辞を見るだけで、適切な処理をすることが出来る。知らない MIME 型であっても、取り敢えずは XML 文書として処理してくれる。ただし、このような取り決めにも問題があります。
+xml
だけでは XML 文書と判断出来ない「従来の」クライアントでは、新しく登録された MIME 型を有する XML 文書を適切に処理出来ない (XML 文書としてすら認めてくれない)。単一の XML 応用言語からなる文書ならば、特に問題は起きないと思われます。
しかし実際には、複数の応用言語を組み合わせたり、独自の拡張を施した XML 文書を的確に処理系に認識させることが求められます。このような拡張性は XML の大きな利点の一つです。
しかし MIME 型は、データの役割と文書とを「一対一」に対応させることしか出来ません。従来の如く「MIME 型によって起動するアプリケーションを決める」方法は、 XML 文書に限って言えば、もはや破綻していると言えるかも知れません。
幸い XML 文書においては、名前空間によって XML 文書の特性を「住み分ける」ことが可能です。同一文書内においても、「どこからどこまでが、どのような応用系か」は一目瞭然です。つまり、今後は、以下のような「方針」を立てることにより、多くのアプリケーションで巷の XML 文書を適切に処理出来るようになるかと思われます。
application/xml
とする。このコーナーを作りにあたり、村田真 様から直截アドバイスを頂戴致しました。どうもありがとうございます。