以前の記事でも触れましたが、XMLは汎用的に利用されるデータ格納形式です。
アプリケーションが外部ファイルからデータを読み込みたい場合、XMLが登場する以前は、データ格納形式としてCSV(Comma Separated Value)が主に採用されてきました。
CSVは下記例のように、テキストファイルの中にデータをカンマ(,)で区切って格納します。
"0001","チョコレート",200 "0002","アイスクリーム",150 "0003","ポテトチップス",130
※文字データはダブルクォーテーションで囲み、数値データはそのまま記述する。1行が1レコード(意味のあるデータのまとまり)となる。
上記例は、商品情報をあらわすCSVデータです。各データの意味は左から順に、商品コード、商品名、価格をあらわしています。
しかしこれでは、前述したように明示的に各データが何をあらわしているかを書けばわかるかもしれませんが、初めて見る人はすぐにはわからないのではないでしょうか。
「”0001″が商品コードである」などは、データ項目を定義した人にしかわかりません。
XMLのメリット
CSVでは、各データが何をあらわしているのかが、データ項目を定義した人にしかわかりません。それに対し、XMLでは、タグでデータの意味をあらわすことができます。
例えば、下記例を見てください。
<?xml version="1.0" encoding="Shift_JIS" ?> <商品リスト> <商品情報> <商品コード>0001</商品コード> <商品名>チョコレート</商品名> <価格>200</価格> </商品情報> <商品情報> <商品コード>0002</商品コード> <商品名>アイスクリーム</商品名> <価格>150</価格> </商品情報> <商品情報> <商品コード>0003</商品コード> <商品名>ポテトチップス</商品名> <価格>130</価格> </商品情報> </商品リスト>
「<商品コード>~</商品コード>」というタグから、このデータが商品コードをあらわしていることが一目瞭然です。また、「<商品名>~</商品名>」は商品名、「<価格>~</価格>」は価格をあらわしていることがすぐにわかります。これなら、データ項目を定義した人以外でも容易に理解できるでしょう。
文字コードの指定が可能
XMLを利用する大きなメリットとして、文字コードの指定が可能な点もあげられます。
XML文書もCSVファイルも、その実体はただのテキストファイルです。ですので、簡単に読み書きでき、コンピュータ間でのデータ交換も容易です。ただ、テキストファイルであっても文字コードが異なれば、異なる環境では読み書きできません。例えば、UTF-8で作成されたCSVファイルを、Shift-JISを使用している環境で、開こうとしても、文字化けしてしまい、正しく読み込めません。
しかし、この問題もXMLを利用していれば解決してくれます。
前述したXML文書の先頭行を見てください。
<?xml version="1.0" encoding="Shift_JIS" ?>
先頭行は、言ってみれば、「XML文書の前書き」のような部分です。
「<?xml」と「?>」で囲まれた部分をXML宣言(XML declaration)と言います。
XML宣言は、XML文書本体の前に記述し、以下の内容をあらわします。
- version
- XML仕様バージョン
- encoding
- XML文書で使われている文字コード
versionには、現在、主として使われているバージョン1.0を指定します。
encodingには文字コードを指定します。指定可能なものとして下表に示した文字コードなどがあります。
文字コード | 備考 |
---|---|
UTF-8 | ISO/IEC 10646 UTF-8 |
UTF-16 | ISO/IEC 10646 UTF-16 |
UCS-2 | ISO/IEC 10646 UCS-2 |
UCS-4 | ISO/IEC 10646 UCS-4 |
ISO-8859-X | ISO 8859関連の文字コード |
Shift_JIS | Windowsで使用される文字コード |
EUC-JP | UNIXで使用される文字コード |
XML文書を読み込んだ側は、XML宣言の部分を参照すれば、XML文書本体が何の文字コードで作成されているかわかります。
XML文書を読み込めるアプリケーションとして、主にIEなどのWebブラウザがありますが、IEで読み込めば、そのXML文書がEUC-JPであり、かつ、システムの文字コードがShift-JISの環境であったとしても、IEが自動的に文字コード変換を行い、正常に読み込んでくれます。
まとめ
XMLは、人間にもコンピュータにも扱いやすいデータ形式であり、かつ、異なる様々な環境間、つまりインターネットの世界でデータ交換をするための十分な機能が備わっているのです。このことが、何となくでもわかりましたでしょうか。
CSVはローカルな環境で使用する分は、十分かもしれませんが、インターネットの世界まで幅を広げようとした場合は不十分であり、XMLはそれらの問題を解決するデータ形式と言えるのです。