【楽々デブドックを書こう!】XMLで開発ドキュメント
第3回:情報システムの仕様をXMLで記述する!
著者:佐賀大学総合情報基盤センター 只木 進一
公開日:2008/02/20(水)
文書構造の定義
いよいよ文書構造を定めていく。全体の概要がわかる程度に書いたXMLを用意しよう(リスト1)。この例をもとに文書構造を定義していく。
文書規約は、XMLスキーマと呼ばれる。DTD(Document Type Definition)やXSD(XML Schema Definition)などで、文書の構造、文書内の要素の属性などを定義していく。XMLからこれらDTDやXSDを生成するツールや、DTDをXSDに変換するツールもあり、はじめて文書構造を定義する場合にはそれらのツールを利用するとよい。
文書定義としてはDTD、XSDあるいは他の形式がある。
DTDは記述がXSDに比べて容易である。各要素に、どの要素がどのような順序に何回あらわれるかを定める。例えば、HTMLの箇条書きをあらわすタグ<ul>の中には、箇条書きの項目<li>が繰り返しあらわれることを定義する。
また各要素に、属性があれば、その属性の性質を定める。例えばアンカータグには、リンク先の属性hrefが定義されている。ただし、DTDはXMLではなく特別な書式で記述されているので注意していただきたい。
XSDもDTDと同様のことが記述できる。ただし、DTDに比べて複雑なのが特徴だ。一方で、XSDそのものもXML文書であり、XMLとしての整合性をチェックすることができるのが特徴だ。各要素の内容をDTDよりも精密に規定することができ点は大きな利点である。また、この部分には日付しかあらわれないとか、ある特定の文字列でなければならない、などと規定することができる。図には前述の文書構造を定義したXSDの部分を示している。
DTD、XSD、その他の形式のどれを使うかは、スキルと好みの部分がかかわってくるので、ご自身の状況にあわせて選択していただきたい。
(画像をクリックすると別ウィンドウに拡大図を表示します)
文書構造以外の定義
文書を実際に書くと、文書の構造だけでは不足になる。例えば、文書内の他の場所を引用する場合などである。HTMLであれば、引用を行うアンカータグと、その先であるid識別子をもったタグの関係だ。例として示したXSDでは、labelという属性がid識別子に対応している。
もしかしたら、各項目に点数を付けて評価しなければならないかもしれない。HTMLの場合には、各タグにどのような属性をつけるかは仕様として定まっている。XMLでは、自由に設定できる。そのような場合は、前述の各階層に基礎点、加点、合計点の属性を定義することで、これに対応できる。
前回述べたように、仕様書では同じ事柄は同じ表現であらわされなければなければならない。あるいは、CPU性能の指定のように数値だけ異なる表現も多数あらわれる。つまり、マクロのようなものが必要となる。例えば、「ECC付きメモリ2GB以上を有すること」という表現で、他のメモリの量が異なる場合の記述に対応する必要がある。
マクロは、表示をする際のことも念頭において考える必要がある。つまり、どの部分が可変でどの部分が不変であるかを想定しておく必要がある。あまりスキーマを複雑にしてもいけないので、例えばDescという一般的な記述用要素を定義し、何の記述かを属性nameに、可変的要素をargaとargbに書くという方法で対応する(リスト2)。 次のページ