2002年7月7日(日)更新 |
■何らかのデータ型を基準型として派生させる
たけち: 前回は単純型について学習したよね。今回から単純型のユーザ派生データ型の作り方を勉強することにするね。 さらら: お手柔らかにね。ところで、ユーザ派生データ型って言うのは「ユーザが定義するデータ型」という意味なの? たけち: うん、そうだね。XMLスキーマでは基本原則として派生を使わなければデータ型を自分達が定義することはできないんだ。この「派生」という考え方は、「データ型」と並んでXMLスキーマの中心になる考え方なんだよ。XMLスキーマには、 さらら: へぇ〜、そうなの。 たけち: もっとも、一部ではこれが基本原則というよりは建前に近いものになるのだけれど、でも原則は原則なんだよ。 さらら: ふ〜ん。原則、ねぇ。。。。 |
■基準型を制限して派生させる
たけち: まず前回の復習だけれども、ビルトインデータ型の中にも「派生」の関係があったよね。 さらら: あっ、そうそう。例えば、前回の decimal -派生→ integer -派生→ nonNegativeInteger -派生→ positiveInteger という関係よね。 たけち: そう、これを見てもわかるように、派生型は基準型の範囲を制限(restriction)することによって派生しているんだ。この制限(restriction)するということが、派生の一番基本的な考え方になるんだよ。 さらら: なるほど〜。範囲が広いもの(基準型)から範囲が狭いもの(派生型)へ制限することが派生なのね。 |
たけち: あっ、う〜ん、それはちょっと違うんだけど... (^ ^; さらら: え〜っ、だっていまそう言ったじゃない!! たけち: ・・・え〜と (^ ^; 確かに制限(restriction)は派生の一番中心的な考え方なんだけれど、それだけが派生の方法じゃないんだ。 さらら: えっ〜。まだあるの。。。 たけち: 単純型では他にユニオンとかリストという方法によって他のデータ型を派生させることができるんだ。 【単純型のユーザ派生データ型の定義方法】
|
■制限(restriction)
さらら: え〜っ、「ユニオン」とか「リスト」って。。。。。制限以外にもまだ他に覚えないといけないの? たけち: うん。だけど単純型の派生で一番中心的で、一番覚えないといけないことがたくさんあるのは制限(restriction)だけで、ユニオンやリストは簡単に覚えられるよ。まず制限(restriction)について学ぼうね。 さらら: えっ、ぇぇ。。。(^ ^; |
たけち: まずは簡単なところで「テストの点数型」というのを作ってみようね。テストの点数は0点から100点までの整数だよ。一応ここでは派生の元となる基準型としてはxsd:intを使ってみることにするね。 さらら: xsd:intは2147483647 〜 -2147483648の範囲を持つ整数よね。それを基準型として、それが取りうる範囲を100 〜 0に制限するということなのね。 たけち: そうだよ。やりたいこととしては、次のようなXMLデータを作るようにしたいんだよね。 <kokugo_test>43</kokugo_test> これを定義するXMLスキーマは以下のようになるよ。 |
<?xml version="1.0" encoding="Shift_JIS" ?> |
さらら: う〜ん。知らない言葉が・・・・ たけち: まず、<xsd:element name="kokugo_test" type="TestPointType" /> というのは、わかるよね。kokugo_testという要素はTestPointType型の値をとる要素ですよ、という意味だね。 さらら: えぇ。 たけち: 次にTestPointType型という単純型(Simple Type)を定義したいので、<xsd:simpleType name="TestPointType">という要素がまずきているんだ。これは「TestPointType型という名前の単純型を定義します」という意味なんだ。 さらら: うん。図をみてゆくとわかる気がするわ。 |
■制約ファセット(constraining facet)
たけち: ここで、<xsd:minInclusive value="0" />・・・最小値は0ですよ |
さらら: うん。やっとわかったわ。 たけち: よかった。。。。次回はいろいろな制約ファセットについて勉強しようね。 さらら: えっ? いろいろな制約ファセットって・・・・ 制約ファセットって「最小値」と「最大値」だけじゃないの? (^ ^; たけち: もちろんだよ。。。(^ ^; だから、次回も頑張ろうね。 さらら: あっ、は〜い。ありがとね。 → 次回は、制約ファセット(1): 数値の制約ファセットです。。。。。 (^ ^)v |
■XMLスキーマのコーナーは、TAKABEさま(XSLTの遊び部屋)の全面的なご協力をいただいて作成しています。 |