Webアプリ開発事始 第19回
XMLとWebアプリケーション(2)
~データベースとXML
長谷川裕行
有限会社 手國堂
表形式でレコードを表示する
先に少し触れたように、XMLの各要素は入れ子にできました。通常、単純なテーブルの形式では、フィールドの値が入れ子になることはありません。要素の入れ子は、リレーショナル・データベースで、あるフィールドが別のテーブルのフィールドと関連付けられている状態に対応しています。
- リレーションされたテーブルのデータ -
例えば、以下のような構造のデータベースがあったとします。
受注
├
受注番号
├
日付
├
発注元
(1)
│
├名称
(2)
│
└連絡先
(2)
├
品番
(3)
│
├品名
(4)
│
└単価
(4)
└
数量
(1)
発注元マスターテーブルを参照
(2)
参照先の発注元マスターテーブルのフィールド
(3)
商品マスターテーブルを参照
(4)
参照先の商品マスターテーブルのフィールド
このようにデータベース処理では、
発注元マスターテーブル(発注元番号、名称、連絡先)
商品マスターテーブル(品番、品名、単価)
と、2つのマスターテーブルを元に、
いつ(日付)、どの発注元から、どの商品を、いくつ(数量)
受注したかを示すレコードを記録していきます。
この記録をXML文書にすると、リスト7のようになります。
リスト7:受注データを記録したXML文書~juchu.xml
- <TABLE>タグで表示する -
このような複雑な構造のXML文書を表示するには、HTMLのテーブル(表)が適しています。XSLスタイルシートで表形式の出力を得るには、<TABLE>タグを用いるのが最も簡単です。
<TABLE>~</TABLE>タグでテーブルの構造を定義した中に<xsl:apply-templates select="//*" /> と記述しておき、その後で<xsl:template match="受注">として「受注」要素以下の項目を取り出して、<TD>~</TD>の間にテーブルの要素として以下のように記述します。
<xsl:value-of select="受注番号"/>
リスト8がスタイルシート、表示結果が画面2です。
リスト8:複雑なレコードをテーブル表示するスタイルシート~juchu.xsl
画面2:juchu.xmlをInternet Explorerで表示した結果
DTDからXML Schemeへ
DTDは、複雑な構造のデータベースを扱う際に便利ですが、いくつか面倒な点があります。そこで、DTDの短所を補うデータ定義の手段としてXML Schemeが提唱され、W3C勧告となっています。
DTDの短所
DTDの短所の1つは「データ型を指定できない」ということです。最終的には#PCDATAという指定で、その要素が値を持つということしか指示できません。
また、閉じるタグを使わないなど、書式がXML文書と異なる独自の形式であることも、記述の分かりにくさを助長しています。
これは、元々DTDがXML用ではなくSGMLの構造定義から受け継がれたものであるためです。そこで、XML文書のデータ構造定義用書式として、XML Scheme(スキーマ)の利用が推奨されています。
データベースでスキーマといえば、フィールドの様々な属性など、ある情報の構造を示す定義を指します。従ってDTDも、スキーマ言語のひとつです。XML Schemeも意味的には同じで、文書内で使われているタグの属性を指定できます。
XML Schemeの特徴
以下に、XML Schemeの特徴を掲げておきます。
・
データ型の指定
要素に対してint、long、doubleなどの数値型、time、dateTinmeなどの日付/時刻型、boolean(論理型)など様々なデータ型を指定できます。また、複数のデータを集めた新たなデータ型を定義できます。
・
要素の出現回数の指定
DTDでは+記号で1回以上の繰り返しを示せる程度ですが、XML Schemeでは1~2回、0~10回など、繰り返し要素の出現回数を細かく指定できます。
・
XML文書と同じ書式
XML SchemeはXML文書のための定義機能なので、XML文書と同じ書式です。
・
名前空間(namespace)の利用
DTDは名前空間とは無関係なため名前空間を参照できませんが、XML Schemeでは複数の名前空間が利用できます。
XML Schemeについては、以下のW3Cのドキュメントに詳しく記述されています。全文英語ですが、サンプルのソースが豊富なので、参考になるでしょう。
XML Schema Part0(総論) http://www.w3.org/TR/xmlschema-0/
XML Schema Part1(構造) http://www.w3.org/TR/xmlschema-1/
XML Schema Part2(データ型) http://www.w3.org/TR/xmlschema-2/
あとがき
XMLで複雑なデータベースを扱うための基礎知識を紹介しました。XMLを使えば、複雑なリレーションを設定したデータベースの処理結果をテキストデータとして送受信し、XSLによってそのままWebに提示できます。
次回は、JavaScriptを中心に、WebプログラミングでXMLを扱う手法を紹介します。
サンプルファイル
(LZH形式 3.10 KB)
TOP PAGE >>
■
トップページ
■
XMLとテーブルの構造
■
DTDとデータ構造の定義
■
複数レコードの表示方法
■
表形式でレコードを表示する
・
リレーションされたテーブルのデータ
・
<TABLE>タグで表示する
■
あとがき
Copyright © MESCIUS inc. All rights reserved.