第3回:情報システムの仕様をXMLで記述する! (2/3)

XMLで開発ドキュメント

【楽々デブドックを書こう!】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、その他の形式のどれを使うかは、スキルと好みの部分がかかわってくるので、ご自身の状況にあわせて選択していただきたい。

Image
(画像をクリックすると別ウィンドウに拡大図を表示します)

文書構造以外の定義

文書を実際に書くと、文書の構造だけでは不足になる。例えば、文書内の他の場所を引用する場合などである。HTMLであれば、引用を行うアンカータグと、その先であるid識別子をもったタグの関係だ。例として示したXSDでは、labelという属性がid識別子に対応している。

もしかしたら、各項目に点数を付けて評価しなければならないかもしれない。HTMLの場合には、各タグにどのような属性をつけるかは仕様として定まっている。XMLでは、自由に設定できる。そのような場合は、前述の各階層に基礎点、加点、合計点の属性を定義することで、これに対応できる。

前回述べたように、仕様書では同じ事柄は同じ表現であらわされなければなければならない。あるいは、CPU性能の指定のように数値だけ異なる表現も多数あらわれる。つまり、マクロのようなものが必要となる。例えば、「ECC付きメモリ2GB以上を有すること」という表現で、他のメモリの量が異なる場合の記述に対応する必要がある。

マクロは、表示をする際のことも念頭において考える必要がある。つまり、どの部分が可変でどの部分が不変であるかを想定しておく必要がある。あまりスキーマを複雑にしてもいけないので、例えばDescという一般的な記述用要素を定義し、何の記述かを属性nameに、可変的要素をargaとargbに書くという方法で対応する(リスト2)。 次のページ




佐賀大学総合情報基盤センター 只木 進一
著者プロフィール
佐賀大学総合情報基盤センター 只木 進一
センター長・教授
交通流やインターネットパケットの流れなど、自己駆動粒子系の研究を専門としている。並行して、情報システムの管理運用技術の研究開発も行っている。XMLやJavaなどを仕事道具として活用している。
http://www.cc.saga-u.ac.jp/


INDEX
第3回:情報システムの仕様をXMLで記述する!
 情報システムの仕様書で必要な考え方
文書構造の定義
 作業環境
【楽々デブドックを書こう!】XMLで開発ドキュメント
第1回標準化と再利用
第2回情報システムにXMLが求められる背景
第3回情報システムの仕様をXMLで記述する!
第4回XMLの出力環境

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30