目次へ

10.XML Schema を書く

本章では、XML Schemaのまとめとして、具体的にXML Schemaを書いてみたいと思います。

10.1 受注伝票

本章では、受注伝票の情報をXMLで保存し、そのスキーマをXML Schemaで記述することを考えます.

image  
[備考]

・受注番号は、受注伝票が発生するごとに一意につけられる。

・同じ商品は一つの受注伝票に記入しない。同じ商品を扱う場合は、別伝票に記入する。

・一枚の受注伝票に記入できる商品は5つまで、6つ以上受注した場合は別伝票とする。

・商品番号は2つの数字で表される。

まず、必要なことは、データの木構造を決定することです。XMLでは、データを木構造で表現します。受注伝票のデータを「木構造」のデータとして捉えなおす必要があります。

image

受注伝票には、受注日、受注番号が一意に決まります。また、受注伝票には、顧客の情報、商品の情報が含まれます。顧客の情報には顧客名、顧客住所が含まれます。商品情報には、商品番号、商品名、数量、単価、合計金額が含まれます。受注商品は複数あります。各商品の情報には、商品番号、商品名、数量、単価の情報が含まれます。

データを木構造に記述したら、各ノードを要素にするか、属性にするか、決定します。属性は子要素をもつことが出来ないので、「ツリー図」の「葉」にあたる部分しか、属性にすることは出来ません。また、属性はひとつの要素に複数指定することは出来ません。それを踏まえて、属性とするものを決定します。受注伝票では、「受注日」と「受注番号」を属性とします。

次に各Nodeの型を決定していきます。まず、各Nodeの型がどのTypeなのか、判断します.

Complex Type

子供要素、または属性をもつノードの型

Simple Type 内容にテキストしか持たないノードの型

「受注日」、「受注番号」の属性は、当然Simple Typeです。また、「顧客名」「顧客住所」「商品番号」「商品名」「数量」「単価」などの要素も、子供要素、属性をもたないので、Simple Typeになります。「ツリー図」で表したときの「葉」の部分が、Simple Typeになります。他の「受注伝票」「顧客」「受注商品」「商品」の各要素はすべて、Complex Typeになります。

Simple TypeのNodeに対しては、どのような型にするか検討します.既存のデータ型と一致する場合はそれを使用します。(既存のデータ型へのリンク)

受注日 date
受注番号 int
顧客名 string
顧客住所 string
商品番号 2桁の数字
商品名 string
数量 int
単価 int

商品番号以外は既存のデータ型を使用して、記述します。商品番号のデータ型は新たに定義します。

Complex Typeに関しては、さらに、Content Typeによって、宣言の方法が異なります。内容(開始タグと終了タグの間)がどうなっているか確認します。Content Typeは、3種類あります。

Simple Content 内容に文字列しか含まない型、子要素をもたず、属性のみを持つ型
Complex Content 子要素をもつが、内容に文字列を含まない型
Mixed Content 内容に子供要素、文字列、両方持つ型

そこで、もう一度、木構造を眺めてみますと、このスキーマのComplex Typeの要素は、すべてComplex Contentのもののみであることがわかります。Complex ContentのComplex Typeの場合、子供要素の出現回数と、出現順番を決定します。Complex Typeのnodeは、受注伝票、顧客、受注商品、商品の4つの要素です。これらはすべて、COmplex ContentのComplex Typeです。それぞれの要素について、子供要素の出現回数、出現の順番を決定します。

要素名 子供要素 出現順番 出現回数
受注伝票 顧客、受注商品 顧客、受注商品の順 各1回ずつ

顧客

顧客名、顧客住所 顧客名、顧客住所の順 各1回ずつ

受注商品

商品 NA 最低1回、最高5回
商品 商品番号、商品名、数量、単価 商品番号、商品名、数量、単価の順 各1回ずつ

これで、受注伝票のデータ設計が完了しました。後は、この内容をXML Schemaで記述すれば完成です。

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp