現行のXML Media Typesを読んでみる

はじめに

こんにちは、フロントエンドエンジニアの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
  • 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の理解を整理出来て個人的には満足です。
歴史的な点も気になるため、これは別で記事を作成しようと思います。読んでいただきありがとうございました。

参考資料