要素の記述
次はXMLの本文の記述方法です。次のようなデータをXMLで記述する場合で考えてみます。
上記をCSVファイルで見た場合は下記のようになります。
名前,性別,身長,体重 加藤,女,150,48 山田,男,180,72
このデータをXML形式の文書にする場合は下記のようになります。
まずデータには項目名とその項目名に対する内容が存在します。その項目名と内容を使って下記のように記述します。
<項目名>内容</項目名>
<項目名>を開始タグ、</項目名>を終了タグと呼びます。そして1つの「内容」に対して、その内容に関する項目名を使った開始タグと終了タグで挟むような形で記述します。先ほどのサンプルの場合は、例えば下記のようになります。
<名前>加藤</名前>
上記は「名前」という項目に関するデータとして「加藤」というものがあるということになります。また、開始タグ、内容、終了タグ、の3つを合わせて「要素」と呼びます。またこの項目名には好きな文字列を指定することが出来ます。
では他の値も同じように要素として記述してみます。
<名前>加藤</名前> <性別>女</性別> <身長>150</身長> <体重>48</体重>
これで1人分のデータが記述できました。一塊の要素の集合が出来ましたら、どこからどこまでが一塊なのか、そしてその一塊は何を表しているかを同じようにタグを使って下記のように記述します。
<顧客> <名前>加藤</名前> <性別>女</性別> <身長>150</身長> <体重>48</体重> </顧客>
これは「顧客」という項目があり、その内容が名前から体重までの各要素と考えることもできます。
このように要素の中に別の要素を入れることもできます。
またこの要素の中で「身長」と「体重」は他の要素と比較して似たようなデータでもありますので、この2つの要素をまとめて説明する要素を作成して、分けて記述してもいいかもしれません。
<顧客> <名前>加藤</名前> <性別>女</性別> <身体データ> <身長>150</身長> <体重>48</体重> </身体データ> </顧客>
これで1人分のデータが記述出来ましたので、続いて2人目のデータを記述します。
<顧客> <名前>加藤</名前> <性別>女</性別> <身体データ> <身長>150</身長> <体重>48</体重> </身体データ> </顧客> <顧客> <名前>山田</名前> <性別>男</性別> <身体データ> <身長>180</身長> <体重>72</体重> </身体データ> </顧客>
これで完成なのですが、XML文書ではこの本文のところに記述したデータ全体が何のデータについて書かれているのかを、ルート要素を使って記述するというルールがあります。例えばこのデータは複数の顧客情報からなる顧客データだったとすると、例えば下記のような記述を行います。
<顧客データ> <顧客> <名前>加藤</名前> <性別>女</性別> <身体データ> <身長>150</身長> <体重>48</体重> </身体データ> </顧客> <顧客> <名前>山田</名前> <性別>男</性別> <身体データ> <身長>180</身長> <体重>72</体重> </身体データ> </顧客> </顧客データ>
これでこの文書全体は「顧客データ」について書かれたものであり、「顧客」と言うデータが複数含まれていること、そしてその1つ1つの「顧客」のデータには、「名前」「性別」「身体データ」という3つの要素が含まれており、さらに「身体データ」については「身長」と「体重」という2つの要素が含まれていることが分かります。
これでXML文書は完成となります。元のデータのCSVファイルと比較してみて下さい。
名前,性別,身長,体重 加藤,女,150,48 山田,男,180,72
CSVファイルと比較して長々となってしまいましたが、このデータがどのようなデータを取り扱っているのか明確に分かるようになっています。またXML文書の場合はある項目については複数記述することも可能であると言った指定が可能です。CSVファイルではこのような含まれる項目数が確定していないようなデータを記述することは難しいです。
では最後に先ほど作成したXML文書をXMLビューアーで見てみましょう。実際のXMLファイルはXML宣言で記載したヘッダーが必ず必要です。
<?xml version="1.0" encoding="Shift-Jis" ?> <顧客データ> <顧客> <名前>加藤</名前> <性別>女</性別> <身体データ> <身長>150</身長> <体重>48</体重> </身体データ> </顧客> <顧客> <名前>山田</名前> <性別>男</性別> <身体データ> <身長>180</身長> <体重>72</体重> </身体データ> </顧客> </顧客データ>
XMLビューアーで見た結果は下記のようになります。
( Written by Tatsuo Ikura )