[22] XML MIME型は、多くの XML 関連仕様で XML
として扱われるMIME型です。 text/xml
と
application/xml
の他、 +xml
で終わるMIME型が該当します。
[48] はじめ RFC 2376 で定義されていましたが、改訂され RFC 3023 となりました。 RFC 3023 への改訂は、長らく素案状態で放置されていましたが、 2014年にようやく RFC 7303 となりました。
[65] XML に関係する MIME型は、色々ありすぎます。 どれを使うべきか迷うこともあります。
[108] 特に他の制約がない場合 (例えば特定の Web API の仕様書で限定されていたりしない場合) には、次のように決めると良いでしょう。
[33] なお、 RFC 3023 は「XML MIME型」あるいは「XML媒体型」 という用語は規定していません。 その題名こそ「XML Media Types」ではありますが、本文中では「XML Media Types」 という用語が登場せず、附属書で「XML MIME Types」が節題として使われているのみです。
[24] RFC 3023 の「XML Media Types」と題した章では XML MIME実体のためのMIME型として
text/xml
, application/xml
,
text/xml-external-parsed-entity
、
application/xml-external-parsed-entity
、
application/xml-dtd
の5つを定義していました >>57。
DTD などに使う
MIME型が含まれるため、
他の定義よりも広いことに注意しなければなりません。
[34] RFC 4287 (Atom 1.0) は「XML media types」を RFC 3023 から引用していますが、 >>33 のような状況なので規定の意味するところが曖昧になっています。
If the value of "type" is an XML media type [RFC3023] or ends with "+xml" or "/xml" (case insensitive)
のような記述がわざわざあるので、これを定義とみなすなら、Web Applications 1.0 の >>23 の定義よりはやや広いことになります。
[114] ISO/IEC 19757-4:2006 は「XML media type (i.e., application/xml, text/xml, or */*+xml)」と定義ではなく補足説明のような形で「XML media type」 を記述しています。
[35] HTML Standard (旧 Web Applications 1.0、HTML5) は「XML MIME Types」を >>23 のように正確に定義しています。
application/xml
, text/xml
[64] application/xml
と text/xml
は、
XML 文書実体の MIME型です。
[86] RFC 3023 まではどちらが良いともされていなかったようですが、
RFC 7303 では application/xml
を使うべきとされています >>87。
[88] text/*
の charset
引数が省略された場合の既定値については色々な混乱がありました。 RFC 7303
は従来の定義を破棄して新たな (より現実的な) 規定となっています。これが
text/xml
を使うべきでない理由 >>87 とされています。
[109]
ただしこの text/*
に関する混乱とは、 IETF
の仕様書の理論上の規定が現実の運用と乖離していたことによるものでしたが、
UTF-8 への統一が進んだ現在では、ほとんど IETF のメンツだけの問題となっています。
テキストファイルには text/*
を使う方がむしろ適切だとして、
text/xml
を好ましいと考える人もいます。
[6] XML を利用したマーク付け言語によっては、 text/xml
と application/xml
のどちらを使うべきか限定していることがあります。
[9] WebDAV における XML は application/xml
を使うべきであり、 text/xml
は非推奨です >>8。しかしどちらも対応しなければなりません >>8。
[122]
XML-RPC
は
text/xml
の利用を要求していました。
[7] oEmbed は text/xml
を使うことを要求しています。
[56]
OOXML は応用に特化した MIME型が無い時は text/xml
を使うことを要求しています >>63。
[125]
CEA-2014-B は text/xml
を使っていました。
*/*+xml
構造化構文接尾辞 (MIME)[30] 構造化構文接尾辞 xml
は、 XML 文書実体を表しています。
すなわち、 +xml
で終わる MIME型は、
XML を基にした形式であることを表しています。
この構造化構文接尾辞は RFC 3023 で導入され、現在は RFC 7303 >>103
で定義されています。
[95] 例えば XHTML の MIME型は application/xhtml+xml
、
SVG の MIME型は image/svg+xml
です。
[90] XML を基にした形式に新しく MIME型を用意するときは、
+xml
で終わる名前とするべきです。
ただし、一般の XML としての処理が何か不都合な場合はこの限りではありません。 >>89
[101] 特に、素片識別子として XPointer Framework と
element()
XPointer scheme を使うのが不適切な場合は、
+xml
で終わるべきではありません >>46。
[91] 応用は、 +xml
で終わる MIME型なら
XML文書であるとみなして XML の処理を実行できます >>89。
[94] +xml
で終わる MIME型の登録について RFC 7303
は RFC 6838 (MIME型の登録手続き) を参照しています >>89。しかし RFC 6838
は RFC 3023 (RFC 7303) を参照するだけで、実質的な規定を含んでいません >>93。
本来の意図は不明ですが、 RFC 7303 の記述によると、
IANA 登録時に XML ベースの形式は +xml
を使うよう Media Reviewer が注意するべきである、
XML MIME実体を表すMIME型のみが +xml
で終わる形で登録して良い、となっています >>89。
[32] +xml
で終わる MIME型は普通 RFC 3023 を引用していますが、
中にはそうでないものもあります。
+xml
で終わらない XML の MIME 型[31] RFC 3023 以前に使われ始めた MIME型や独自に決められたMIME型は、+xml
が最後についていません。これらは定義上、「XML MIME型」ではありません。
[98] 更に RFC 7303 は、 XML としての一般的な処理が好ましくない場合は
+xml
で終わらない MIME型を使うべきであるとしています。
[99] +xml
で終わらない XML のMIME型としては次のものが知られています。
[44] >>43 には >>31 も含む XML 文書の MIME型の一覧があります。
[77] XHTML や RSS が誤って text/html
, text/plain
,
application/octet-stream
のような他のMIME型で送信されることもあります。
MIME Sniffing はそのような誤ったMIME型の一部を訂正するアルゴリズムを規定しています。
[67] application/xml
には次の引数があります。
[68] */*+xml
構造化構文接尾辞共通の引数はありません。
charset
引数[25] text/xml
、application/xml
を含む多くの XML MIME型は
charset
引数を定義しており、
RFC 3023/RFC 7303 の規定によるとされています。詳しくは charset
の項をご覧ください。
[110]
*/*+xml
MIME型は、一貫性のため、
charset
引数を定義するべきです
>>89。
[97] +xml
で終わらない XML のMIME型をIANA
に登録する場合、 charset
引数を定義するべきです >>96。
その定義は RFC 7303 を参照するべきです >>96。
[100] 処理モデルはXMLにおける文字コードを参照してください。
[111]
RFC 3023 時代には、 MIME の text/*
に関する規定に従い、
charset
引数が省略された場合には US-ASCII
と解釈することになっていました。しかしこの MIME の規定はまったく現実に即しておらず、
RFC 3023 の規定も完全に無視されていました。
[112]
現在となっては Web の文字コードは UTF-8 に収束しており、
charset
引数は指定しなくても問題とはなりません。 (指定しても構いませんが。)
[26] 多くの XML MIME型では素片識別子は RFC 3023 や XPointer の定義によるとされています。詳しくは素片識別子の項をご覧ください。
[113] SGML MIME型も参照。
[50] RFC 2376 は text/xml
と
application/xml
を定義していました。
application/xml
はどんな XML実体
(文書実体、外部部分集合実体、外部解析対象実体、
外部引数実体) にも使うことができ、
text/xml
は text/*
の制約を (MIME で使うときは) 受けるとsらえていました >>49。
[52] どちらにも charset
引数があり、
省略可能であるものの強く推奨 >>49 されていました。
しかしその値域はなぜか明記されていませんでした。
[53] UTF-8 と UTF-16 が特に推奨されていますが、 MIME
では text/xml
で UTF-16 を使えないことになっていました >>49。
[54] text/xml
における既定値は MIME でも HTTP
でも us-ascii
で、 application/xml
では既定値を仮定するべきではないとされていました >>49。
なぜか仮定することを禁止はされていませんでした。
[51] 特定のXML応用の MIME型が必要なら RFC 2376 を基にするべきである >>49 とは述べているものの、 そのための特別な仕組みは用意されていませんでした。
[72] 第2世代である RFC 3023 では、新規に多くの MIME型が追加され、 既存のMIME型の意味も狭く変更されました。
[73] text/xml
と application/xml
は文書実体のための MIME型とされ、
文書実体としても外部解析対象実体としても使える場合を除き、
文書実体以外の実体に使うことは禁止されました >>57。
[74] 外部部分集合実体や外部解析対象実体には新たに
text/xml-external-parsed-entity
、
application/xml-external-parsed-entity
、
application/xml-dtd
が追加されました >>57。
[75] 特定のXML応用のMIME型が必要なら RFC 3023
を基にするべきとの規定 (>>51) は引き続き存在し、
特に charset
引数は RFC 3023
と同じ形で使うことが推奨されていました >>57。
[80] 対象がより限定されたのを除けば、 text/xml
、
application/xml
、charset
の定義は RFC 2376 とほぼ同様でした。
[82] RFC 3023 は更に、構造化構文接尾辞 +xml
を定義していました。 XML ベースの書式の
MIME型はこの構造化構文接尾辞を使うべきであること、
XML 以外のMIME型をこの構造化構文接尾辞で IANA
に登録してはならないこと、 RFC 3023 を参照した形の
charset
引数を定義するべきことなどを規定していました。
[83] +xml
は最初の構造化構文接尾辞で、
当時は「構造化構文接尾辞」という概念もまだありませんでした。
その後 RFC 6839 によって構造化構文接尾辞が定義された時に、
RFC 3023 に基づき素片識別子の解釈を補って IANA
に登録されています >>84。
[104] RFC 7303 は RFC 3023 の13年ぶりの改訂版です。 改訂作業は比較的早くから行われていましたが、半ば放置された状態で10年以上経過し、 2014年にようやく RFC として出版されました。
[105] この改訂では文字コードの判定方法が、 RFC 3023 当時の RFC に基づく政治的に正しい方法に替えて、 より現実に合わせた形に改められています。
[106] また素片識別子が実質未定義だった状態から、 XPointer を参照する形に改められています。
[79] SGML には text/sgml
や application/sgml
が用意されています。理論上は XML文書は SGML文書とみなせるはずですが、
実際には XML が SGML の MIME型で送信されることはなさそうです。
[59] なんの説明もなしに、「XML 文書 = 拡張子 .xml
= MIME text/xml
」のように説明している香具師はアホです。
[60] XML 文書一般に使える媒体型は、 text/xml
のほかに application/xml
があります。そして後者が一般形です。ですから、どちらを使えば良いのかわからない人は application/xml
を使うほうが安全です。 (text/xml
の方が適切なことはほとんどありません。)
[69] 名前空間のある XML 文書には MIME 媒体型は無力だとかで、 XML 文書はすべからく */*+xml
ではなく application/xml
を使うべき、みたいな風潮があることに悪寒を感じます。
[70] 確かに名前空間を使うと XHTML と SVG の混ざった文書が作れます。だけど、それは XHTML が主の文書がなくなることも、 SVG が主の文書がなくなることも意味しない。依然 application/xhtml+xml
と image/svg+xml
の区別の意義は存在するはずです。どっちとも判断しがたい、文章と図が半々に混在した文書なら、そのときはじめて application/xml
の出番でしょう。だってそれは単なる XHTML とも単なる SVG とも違った使われ方を求めているんだから。
[71] 確かに媒体型の仕組みで伝え得る情報は不十分です。 CC/PP とか、他の仕組みも必要なのは事実。だけどそれは媒体型をないがしろにしてもいいことは意味しません。媒体型の支配する世界にいる限りは。
*/*+xml
という媒体型名が増えて実装の対応が大変だからよくないんじゃ? とかあふぉなこと言ってる香具師がいるらしいですが・・・。+xml
なんてへんちくりんな接尾辞がついたんだかわかんないのかな? わかんないんだろーなーapplication/xml
(あるいは + conneg) でいいじゃん?派もいることはいるけどねぇ。application/なんたら+rdf+xml
期待 age[27] >>1-2 でもまあ、共通の処理モデルが RFC 3023 とかで定義されていない以上、 仕方がない気もするわな。 RFC 3023 って実際実装側にとって有意義なことほとんど書いてないじゃん。
[21]
Bug 155730 – Mozilla doesn't handle files served as */*+xml as XML files (2007-02-10 14:34:20 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=155730
[36] draft-murata-kohn-lilley-xml-03 - XML Media Types ( 版) http://tools.ietf.org/html/draft-murata-kohn-lilley-xml
[37] Web Applications 1.0 r6661 Make the */*+xml handling be fallback handling, rather than overriding any registered handlers for specific XML types. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=6660&to=6661
[38] W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures ( ( 版)) http://www.w3.org/TR/2012/REC-xmlschema11-1-20120405/#web-representation
[39] XBL 2.0 ( ( 版)) http://dev.w3.org/2006/xbl2/Overview.html#xml-mime-type
[40] draft-ietf-appsawg-xml-mediatypes-01 - XML Media Types ( ( 版)) http://tools.ietf.org/html/draft-ietf-appsawg-xml-mediatypes-01
[41] RFC 6839 - Additional Media Type Structured Syntax Suffixes ( ( 版)) http://tools.ietf.org/html/rfc6839#section-4.1
[42] XML Binding Language (XBL) 2.0 ( ( 版)) http://www.w3.org/TR/2007/CR-xbl-20070316/#xml-mime
[45] RFC 7252 - The Constrained Application Protocol (CoAP) ( ( 版)) http://tools.ietf.org/html/rfc7252#page-93
[47] Index of /2006/02/son-of-3023 ( 版) http://www.w3.org/2006/02/son-of-3023/
[85] Re: [apps-discuss] Last Call: <draft-ietf-appsawg-xml-mediatypes-09.txt> (XML Media Types) to Proposed Standard ( (Paul Grosso 著, 版)) http://lists.w3.org/Archives/Public/public-xml-core-wg/2014Mar/0003.html
[107] OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 1: OpenDocument Schema ( ( 版)) http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1420348_2538929491
[13] 155730 – (*/*+xml) Mozilla doesn't handle files served as */*+xml as XML files ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=155730
[19] Let [MIMESNIFF] define MIME-related concepts (domenic著, ) https://github.com/whatwg/html/commit/0d08aea0733e5ad21f15f626b64d413a8c447083
[116] Editorial: use HTML/XML MIME type terms (annevk著, ) https://github.com/whatwg/xhr/commit/daa0baea431703640e1d35fde8db8cd5050f578b
[117] Use "XML MIME type" · Issue #160 · whatwg/xhr () https://github.com/whatwg/xhr/issues/160
[118] Editorial: use HTML/XML MIME type terms by annevk · Pull Request #171 · whatwg/xhr () https://github.com/whatwg/xhr/pull/171
[119] Define a new MIME type model, parser, and serializer (annevk著, ) https://github.com/whatwg/mimesniff/commit/cc81ec48288944562c4554069da1d74a71e199fb
[121] CORB: protecting certain nosniff and 206 responses (anforowicz著, ) https://github.com/whatwg/fetch/commit/794dd5452705564538440cc5b2c1f13d909e2f9a