ふと自分でデータを取り扱う時に、簡単に取り扱えるデータ形式が欲しい。階層も属性もバラバラな統一性があまりないデータ、とか。
つまり1:1の関係のデータもあれば1:多もある。
そしてある程度のまとまりがあったり、なかったりする(謎
そう思った時にふと頭を過ったのが、タグでのデータ管理。
散らかったデータを取り扱うのに丁度良さそうということで今回はXMLについて。
XMLってなにさ
WikipediaによるとXMLは
Extensible Markup Language(エクステンシブル マークアップ ランゲージ)は、基本的な構文規則を共通とすることで、任意の用途向けの言語に拡張することを容易としたことが特徴のマークアップ言語の総称である。一般的にXML(エックスエムエル)と略称で呼ばれる。JISによる訳語は「拡張可能なマーク付け言語」。
[Extensible Markup Language – WIkipedia]
ということらしい。また、XMLには1.0と1.1のバージョンがあるようだ。
ただ、1.1は特殊環境下における文字コードへの対応?っぽいので、基本的に1.0を利用すれば良さそう。
XMLの長所短所
こちらもWikipediaから。僕が勝手に噛み砕いて表現すると
XMLの長所
国際標準に基づいており、多くの環境で利用されている。
さらに、データはプレーンテキストで表現されるため人による理解が容易。
XML自体は独自拡張を許可しているので拡張性が高い。
XMLの短所
データとしてはバイナリデータに比べて冗長になる。
独自拡張を許可するせいで、曖昧であるというジレンマをもつ。
基本的に階層構造であるためにデータの繋がりの自由度が少ない。
うーん。ぼやけている所もあるけど大体、
「取り扱いは楽で取り回しも良いが、
利用場所・利用方法を限定出来る場合が良さそう。」
といった感じっぽい。
RDB(Relational Database)のように正にデータの塊として利用しようと思うと容量食ったり取得したいデータ次第では整理に手間がかかりそう。ただ、そのデータ自体を直接見たり編集したりできるので、拡張の仕方次第では他の人からの利用はハードル低そうな気がする。(他の人から簡単に見えてしまうということでもあるか・・・)
XMLの基本構文
XMLを直接編集する機会はあまりないと思うけど、XMLの触りだけ知っておくと直接編集する時に戸惑わなくて良さそうなのでメモしておく。
XMLは要素と属性、またその内容でもって、
<要素名 属性="属性値">内容</要素名>
で表す。これをひとまとめに要素(または要素名要素)と呼ぶ。要素は属性を持たない場合もあり、複数持つ場合もある。
また、「内容」より前にある「<要素名 属性=”属性値”>」を開始タグ、後にある「</要素名>」を終了タグと呼ぶ。
要素はそれぞれが階層構造でなければならず、各要素がオーバーラップすることは認められない。例えば次のa要素とb要素はオーバーラップしているのでXMLとしては正しくない。
<a ref="Hoge"><b>あああ</a>いいい</b>
この要素によってXMLは構成される。
細かいルールは色々ある様子ですが、もしファイルを直接触れることがある場合はこれくらいの知識があれば大丈夫でしょう。
次回はC#でXMLファイルに触れてみます。