さてXMLで商品情報を書いてみましょう。
項目多くてもめんどくさいので、
品名 値段
CDRメディア 2000
DVDメディア 5000
FDメディア 1000
こんなデータを書いてみましょう。
<商品一覧>
<商品>
<品名>CDRメディア</品名>
<値段>2000</値段>
</商品>
<商品>
<品名>DVDメディア</品名>
<値段>5000</値段>
</商品>
<商品>
<品名>FDメディア</品名>
<値段>1000</値段>
</商品>
</商品一覧>
CSVはカンマ区切りでただ表形式(2次元)のデータを格納する事しか出来ません。
翻ってXMLはツリー形式(ディレクトリ構造なんかと一緒)でのデータ管理になるので、表形式でデータを埋めていくのではなく、階層的にデータを埋めていきます。
CSVの場合にはただ生のデータが羅列されているだけですが、XMLの方にはタグが使われているためどういったデータかがわかるようになっています。
これまた見ればわかることですが、生のデータ以外も送っているためデータサイズが膨れ上がっています。
データサイズに関しては固定長とCSVがいい勝負、XMLはぼろ負けです。
それらを補って余りあるパワーを秘めているのがXMLです。
----------------------------------------------------------------------
さて先ほどのXMLはタグの中に"要素"(エレメント)として値を格納していました。
もうひとつの書き方があります。
<商品一覧>
<商品 品名="CDRメディア" 値段="2000" />
<商品 品名="DVDメディア" 値段="5000" />
<商品 品名="FDメディア" 値段="1000" />
</商品一覧>
これは"属性"(アトリビュート)を使った場合。
この場合エレメントで無い為最小限の文字数で同じようなことが実現可能です。
ただし属性にすると要素をもてないため、まったく同じではないことに注意してください。
あくまで属性は属性なので、その要素を補足するものとして使うのがいいでしょう
----------------------------------------------------------------------
たとえば以下のようなXMLがあったとしよう
<商品一覧>
<商品 品名="CDRメディア" 値段="2000">
</商品一覧>
ここでは商品の閉じタグを忘れている。
このような場合"ウェルフォームド"で無い状態という。
要は文法エラーで、このような状態になっているだけでXMLを利用する側としては正しく読み取れなくなる。
閉じタグを忘れていたり、タグが入れ子になっていたり
などが該当する。
----------------------------------------------------------------------
これ以上XMLの範囲を深く探っても面白くないと思うので、思い切りよく割愛してみる。
次回は単純に楽しくXSLTをやってみる。