XMLとは、タグで構成されたデータ形式です。
このデータ形式は、世の中の人がデータの持ち方を共有できるように標準化したものです。
書き方はHTMLと似ていますが、タグ名は自分で決めることができる点が違います。
また、HTMLの場合はタグが閉じていなくてもIEが勝手に推測して処理するのでエラーにはなりませんでした。
しかしXMLの場合は厳しくて、閉じていない場合はエラーになります。
書き方は以下のようになります。
【XML記述例】
<?xml version="1.0" encoding="UTF-8"?>
<Books>
<Book>
<Title>Spring入門</Title>
<Author>鈴木</Author>
</Book>
<Book>
<Title>Spring基礎</Title>
<Author>佐藤</Author>
</Book>
</Books>
【記述に必要な項目】
・<?xml version="1.0" encoding="UTF-8"?>
1行目の内容は、このテキスト文書がXMLであること。
XMLのバージョンは1.0であること。
文字コードは、UTF-8であること。
を示しています。
XMLは結構古い技術で、最初に規定したバージョン1.0とその後継のバージョン1.1があります。
1.1は機能追加なので、1.0の内容を包含しています。
・<Books>
ルートのタグです。トップの階層に存在するタグで、必ず1つである必要があります。
Booksの部分(タグ名)は何でも自由に規定できます。
ただし、必ず同じタグ名で閉じる(</Books>)必要があります。
・ルート配下のタグは自由に名前を付けられることはもちろん、
複数記述することもできます。
また、「Spring入門」のようはデータの記述部分に<や>のような文字は使用できません。
ですので、エスケープする必要があります。(< や>と記述します)
それと、データの記述部分の前後のスペースは無視されるので注意です。
・タグの順番
XMLではタグの順番も意味を持っているので、順番を間違えないように書く必要があります。
・名前空間
この例では名前空間を記述していませんが、名前空間が存在しています。
記述例: <util:constant name="kind" value="car" />
名前空間を使用すると、種類の違うタグを1つのXML内に同時に複数記述できるようになります。
XMLを読み込む側は、名前空間を指定して読み込みできます。
名前空間名も自分で自由に指定できます。
xmlns:util="http://www.springframework.org/schema/util "
のようにルートのタグの中で記述します。
utilの部分が名前空間名で、自由に設定できる部分です。
"http..."の部分は変更できません。
・空タグ
<Author></Author>のようにデータがないタグの場合、<Author/> のように書けます。
【その他の関連する機能】
XMLについての説明は上記で以上ですが、これに付随する機能がいろいろな会社やコミュニティから提供されています。
・XMLパーサ
XMLは見てのとおり、テキストなのでプログラムで文字列を連結するだけで作成できます。
ですが、文字のエスケープをするのが面倒なことと、XMLの中からデータを検索するときに、
それなりのプログラムを作成しなければならなくなるので面倒です。
そこで、XMLのタグの作成と検索を実施するパーサと言うものが用意されています。
この機能自体は標準で規定されているので、言語を問わずに似た使い方になっているのが特徴です。
ただ、提供元はプログラム言語ごとにもことなるし、同じ言語でも違う会社から複数提供されていることも
あります。
・DTD
XMLは自由にタグの構成を決められるので、DBと違ってタグ名を間違えたりする可能性があります。
または数字を入れるところに漢字を入れてしまったりもありえます。
これらをチェックする機構がDTDです。
DTD自体もテキストファイルです。
割と細やかな設定ができますが、記述が面倒です。
・XMLSchema
DTDと同じく、XMLの書式チェックをします。
DTDより細かなチェックができ、記述もわかりやすいのが特徴のようです。
今はこちらを使うことが多くなっているようです。
その他もいろいろありますが、Springを使用する上ではそれほど気にしなくていいので
キーワードだけで挙げておきます。
調べてみてください。
・XPath
・XSLT
・FOP (XMLからPDFを作ります)
・JSON (XMLに似たまた別記法のデータ形式)
参考: