RELAX NG

XMLのスキーマ書法(3)
村田 真
日本IBM(株)東京基礎研 / 国際大学
データモデルとしてのスキーマ
システムを作りやすくするためもの
プログラムから文書を
簡単に扱うには?
<?xml version="1.0" encoding="utf-8"?>
<WeatherReport>
<City>White Plains</City>
<State>NY</State>
<Date>1998-07-25</Date>
<Time>11:00:00-04:00</Time>
<CurrTemp unit="Farenheight">70</ CurrTemp>
<High unit="Farenheight">82</High>
<Low unit="Farenheight">62</Low>
</WeatherReport>
四つのデータモデル
モデル 4
モデル 3
モデル 2
モデル 1
int WeatherReport.CurrTemp = 70;
…
<WeatherReport>
"White Plaines"
<City>
<
x
m
l
…
(1) 文字列としてのXML
<
?
x
m l
…<
s
t
a
…
t
e
>
N Y <
/
s
アプリケーション
プログラム
文字列
t
a
t
e
>
…
(2) 木としてのXML
<WeatherReport>
<City>
<State>
アプリケーション
プログラム
DOM, SAX, etc.
木
<Date>
<Time>
パーサ
<Current>
<High>
<Low>
文字列
処理モデル
アプリケーション
プログラム
アプリケーション
プログラム
木
検証結果
又は
木
検証器
パーサ
パーサ
文字列
文字列
スキーマ
(3) スキーマに従うデータ
としてのXML
string
string
date
time
04:00;
int
int
int
WeatherReport.City
= "White Plains";
WeatherReport.State = "NY";
WeatherReport.Date
= 1998-07-25;
WeatherReport.Time
= 11:00:00WeatherReport.CurrTemp = 70;
WeatherReport.High
= 82;
WeatherReport.Low
= 62;
処理モデル:
データバインディング
アプリケーションプログラム
オブジェクト
プログラム
木
パーサ
データバインディングツール
スキーマ
(4) ビジネスルールを満たす
情報としてのXML

チェックの例:



データ生成の例:


3月のWhite Plainが、華氏60度のはずがない。
きのうの温度と50度違うはずがない。
<所得>3000万円</所得>なら、税金は30%
で、900万円である。
汎用スキーマ言語ではできない!
XMLスキーマ設計方法(未成熟)


UMLなどから自動生成する。
スキーマを手で書く。
課題についての補足


atomLinkについては、上書きするのではなく |=
で選択肢を追加するほうがいい(一番目の課題)
カスタマイズしやすいatomスキーマ(二番目の課
題)


feed要素およびentry要素に、子要素を追加しやすく
すること
simpleExtensionElementと
structuredExtensionElement にgarden of edenを適
用すれば、少しカスタマイズが容易になる
レポートについて



スキーマすべてをzipで固めてメールで提
出すること。
講義についての感想(採点対象外)をメー
ルに書くこと。
提出期限は、9/3(月) 10:00とする。