はじめに
こんにちは、フロントエンドエンジニアのryoです。 個人的に、text/xml と application/xml のどちらを利用するべきなのか悩む機会があり、そもそもXML Media Typesに対する理解も曖昧だったため、 RFC 7303を読んで自分の理解を整理することにしました。RFC 7303自体がボリュームがあるため、私の興味のある範囲を抜粋して整理しています。 また、こちらの通り、私が読んでいる現在はrfc7303が現行ですが、もしかすると読むタイミングによっては現行が変わっているかもしれませんので、その点ご留意頂けますと幸いです。
標準化されているmedia types
重要なことはabstoractに記載されていました。以下が標準化されているmedia typesとのことです。
- application/xml
- application/xml-external-parsed-entity
- application/xml-dtd
- text/xml
- text/xml-external-parsed-entity
- 上記以外の media types の際に、それらが XML MIME entities の場合の接尾辞 「+xml」
さらに以下の様な記載もありました。
for use in exchanging network entities that are related to the Extensible Markup Language (XML) while defining text/xml and text/ xml-external-parsed-entity as aliases for the respective application/ types.
私が疑問に思っていたtext/xmlとapplication/xmlについては、text/xmlはapplication/xmlのエイリアスでしかないため、機能的な違いはない事が伺えます。恐らく違う media types を利用する事自体に 意義があるのだと推測しています。この辺りの歴史的な経緯も気になるので、別で記事を書こうと思います。
XML MIME Entities
RFC 7303上ではXMLの仕様に基づき、XML MiME Entitiesは4つのグループに分類が出来ると記載されています。XMLの用語を用いて以下の様に分類し、定めています。
- document entities
- 関連するxml仕様: https://www.w3.org/TR/xml/#sec-doc-entity
- 利用するべき media types: application/xml, text/xml, もしくはより具体的な media types
- external DTD subsets
- 利用するべき media types: application/xml-dtd
- 利用してはいけない media types: application/xml, text/xml
- external parsed entities
- 利用するべき media types: application/xml-external-parsed-entity, text/xml-external-parsed-entity
- 利用してはいけない media types: application/xml, text/xml
- 例外として、parseされた entity が "document entities"であれば利用して良いとの事
- external parameter entities
- 利用するべき media types: application/xml-dtd
- 利用してはいけない media types: application/xml, text/xml
IANA Considerations について
RFC 7303:section 9には、XMLの標準化されているmedia typesをIANAの登録に基づき整理されています。 私としては気になったのは 9.2の以下の記載です:
The registration information for text/xml is in all respects the same as that given for application/xml above (Section 9.1), except that the "Type name" is "text".
やはり、text/xml は application/xmlと同じだけれども、 Type nameが異なるという事が重要の様です。 つまり人に直接読んでもらうことを想定しているのか、アプリケーションに利用される事を想定しているのか、という点になりそうです。
まとめ
今回はRFC 7303 - XML Media Typesを読んでみました。application/xmlとtext/xmlの理解を整理出来て個人的には満足です。 歴史的な点も気になるため、これは別で記事を作成しようと思います。読んでいただきありがとうございました。