第6回 『XMLメディアタイプ』
インターネット上でXML文書の送受信を行う際の、XMLのメディアタイプを定める標準文書として、RFC3023があります。ここで定められているメディアタイプのうち、「text/xml」と「application/xml」の違いに触れてみます。
まず「text/xml」は、それが人が読むための文書であることを示し、「application/xml」の場合は、人が読むためのものではなく、アプリケーションによって処理されることを示しています。そしてこれに伴って、文字エンコーディング処理に関する違いがあります。メディアタイプとともにcharsetパラメータを記述することによって、XML文書の文字エンコーディングを直接知らせることができますが、charsetパラメータを省略した場合に「text/xml」と「application/xml」で、その扱い方が異なりますので注意します。
charsetパラメータを記述しなかったとき、「text/xml」の場合、その文字エンコーディングは「us-ascii」として扱われます。「application/xml」の場合は、受け取ったアプリケーション、つまりXMLプロセッサがその文字エンコーディングを識別します。
ここでさらに、SOAP 1.1でのHTTPバインディングにおいて、そのメディアタイプを「text/xml」と定めている点に注意します。日本などでは「us-ascii」以外の文字エンコーディングを使用するXMLが多く、このときcharsetパラメータを記述しなかった場合、誤った文字エンコーディングとして処理されてしまうことになります。もしも国際化対応を考慮していないアプリケーションの場合(想定される文字エンコーディングとして「us-ascii」のみを前提とし、)常にcharsetパラメータを省略するような実装になっている可能性もあると思います。
このような、Webサービスに関する運用上の不具合と相互運用性に関する問題点を削減する目的で、Web Services Interoperability Organization(WS-I)が、Basic Profileとして実装時の基準となるものを定めており、そして多くのアプリケーションが、Basic Profileに対応しつつあります。その中の4.1.11節では、上記の問題を解消するため次のような基準を定めています。
●基準(4.1.11節より)
・(SOAP)メッセージは、UTF-8 又は UTF-16 のいずれかの文字エンコーディングでシリアライズされなければならない(R1012)。
・(SOAP)メッセージのエンベロープのメディアタイプは、charsetパラメータを使って正しい文字エンコーディングを指定しなければならない(R1018)。
日時: 2004年10月28日 13:00 | | TrackBack
