XML文書の
作成方針

XML文書では HTML文書と違い、あらかじめ定められた要素だけを使うとは限りません。 自分で決めた要素を使うことも多いでしょう。 その際、どのような要素を用いるかが問題となります。

ここではXML文書を作成するにあたり、 どのような要素を用意するのが望ましいのかを見ていきます。

記述の対象と記述方法

何を記述すべきか

XML文書はデータを構造化して記述したものですが、 XMLによるデータの構造化は万能ではありません。 XMLによるマークアップ言語は本質的に階層構造を表現するものです。 もともと木構造のものを表現するのには適していますが、 サイクリックな部分を持ったグラフ構造などをスマートに表現することができません。 また、表データやベクトルデータなども、階層構造として扱うと柔軟性に欠けます。 XMLによるデータ記述の性質を理解し、適切な場面で利用しましょう。

何を要素/属性にすべきか

要素名はデータではありません。 要素名はデータの種類を表し、要素の内容がデータの内容という対応になります。 オブジェクト指向言語に例えれば、 要素名がクラス名で、要素の内容がインスタンス名に相当します。 クラスは日本語で「分類」であり、そこに分類されるものが個々のインスタンスになります。

例えば、要素名に固有名詞が使われている以下は、正しい構造化がされているとは言えません。

<東京電機大学/>

「東京電機大学」というのは、ある特定の大学の名前です。 ある大学があって、その名前が「東京電機大学」である、という構造が見えれば、 以下のように書くのが正しいとわかるでしょう。

<大学>
  <名前>東京電機大学</名前>
</大学>

このような構造にしておくと、この「大学」要素を用いて複数の大学の情報が記述できます。

<大学>
  <名前>東京電機大学</名前>
</大学>
<大学>
  <名前>東京工業大学</名前>
</大学>
<大学>
  <名前>東京工科大学</名前>
</大学>

このように、同じ種類の情報は同じ要素で表現することにより、 統一した処理が可能になります。 以下はよくない例です。

<cd1>
  <track1/>
  <track2/>
  <track3/>
</cd1>

このようにすると、track1 に対する処理、track2 に対する処理... をすべて別々に記述しなければならなくなります。 これは冗長なだけでなく、 一部だけ修正してしまったりして間違いの元になります。

XMLでは要素の順序に意味を持たせることができますから、 通し番号をふる必要はありません。 以下で十分です。

<cd>
  <track/>
  <track/>
  <track/>
</cd>

要素にすべきか属性にすべきか

ある要素の性質は、子要素としても、属性としても記述できます。

<教育機関 種類="大学"/>


<教育機関>
  <種類>大学</種類>
</教育機関>

これらのことに考慮する必要があります。