XML文書では HTML文書と違い、あらかじめ定められた要素だけを使うとは限りません。 自分で決めた要素を使うことも多いでしょう。 その際、どのような要素を用いるかが問題となります。
ここではXML文書を作成するにあたり、 どのような要素を用意するのが望ましいのかを見ていきます。
XML文書はデータを構造化して記述したものですが、 XMLによるデータの構造化は万能ではありません。 XMLによるマークアップ言語は本質的に階層構造を表現するものです。 もともと木構造のものを表現するのには適していますが、 サイクリックな部分を持ったグラフ構造などをスマートに表現することができません。 また、表データやベクトルデータなども、階層構造として扱うと柔軟性に欠けます。 XMLによるデータ記述の性質を理解し、適切な場面で利用しましょう。
要素名はデータではありません。 要素名はデータの種類を表し、要素の内容がデータの内容という対応になります。 オブジェクト指向言語に例えれば、 要素名がクラス名で、要素の内容がインスタンス名に相当します。 クラスは日本語で「分類」であり、そこに分類されるものが個々のインスタンスになります。
例えば、要素名に固有名詞が使われている以下は、正しい構造化がされているとは言えません。
<東京電機大学/>
「東京電機大学」というのは、ある特定の大学の名前です。 ある大学があって、その名前が「東京電機大学」である、という構造が見えれば、 以下のように書くのが正しいとわかるでしょう。
<大学> <名前>東京電機大学</名前> </大学>
このような構造にしておくと、この「大学」要素を用いて複数の大学の情報が記述できます。
<大学> <名前>東京電機大学</名前> </大学> <大学> <名前>東京工業大学</名前> </大学> <大学> <名前>東京工科大学</名前> </大学>
このように、同じ種類の情報は同じ要素で表現することにより、 統一した処理が可能になります。 以下はよくない例です。
<cd1> <track1/> <track2/> <track3/> </cd1>
このようにすると、track1 に対する処理、track2 に対する処理... をすべて別々に記述しなければならなくなります。 これは冗長なだけでなく、 一部だけ修正してしまったりして間違いの元になります。
XMLでは要素の順序に意味を持たせることができますから、 通し番号をふる必要はありません。 以下で十分です。
<cd> <track/> <track/> <track/> </cd>
ある要素の性質は、子要素としても、属性としても記述できます。
<教育機関 種類="大学"/> <教育機関> <種類>大学</種類> </教育機関>
これらのことに考慮する必要があります。