2002年10月20日(日)更新 |
■拡張(extension)
たけち: 以前も話をしたように、「複合型内容をもった複合型」の派生の仕方には制限(restriction)と拡張(extension)の2つがあったよね。 さらら: えぇ。 たけち: そして「複合型内容をもった複合型」の場合、まずxsd:anyType型を制限して複合型内容をもった複合型を作るけれども、その場合に、基準型の制限も、それがcomplexContentであることも、外見上は省略できるため、一見まるで派生などは関係ない書き方に見えることも説明したよね。 さらら: そうだったわね。要は、 |
たけち: そうだね。ただ確かにそういう面もあるけれど、でもそれが建前ではなくて、本当に派生らしい派生を利用したい場合も、やっぱり中にはあるんだよ。今回から、建前ではなくて、派生らしい派生を実際に書いていくことを解説することにするね。 さらら: うん。そういうのが好き。 たけち: というわけで、まずは拡張(extension)の方から話からしていくよ。まず復習だけれど、「単純型内容をもった複合型」では、「拡張(extension)」はどんな機能を持っていたっけ? さらら: え〜と。。。属性の追加だったわよね (^ ^; たけち: そうだね、「単純型内容をもった複合型」では「拡張(extension)」は属性を追加するという機能を持っている。さて、これに対して複合型内容をもった複合型ではこの属性の追加の機能も持つと同時に、今度は要素(モデルグループ)の追加という機能も持つんだ。 |
たけち: それでまずは次のXMLデータを見てね。 |
<poem> |
たけち: これに対応するXML Schemaは次のようになるよね。ここまでは、復習だよ。 |
<?xml version="1.0" encoding="Shift_JIS" ?> |
さらら: うんうん。これくらいのXML Schemaには慣れたわ。 たけち: さて、このPrePoemTypeを基準型にして、次のXMLデータに対応するような拡張をしたPoemTypeを作ってみるね。 さらら: うん。 |
※上記の例を拡張 |
さらら: あっ、pno属性とyomi要素とseason要素が追加されるのね。 たけち: そうだね。これのXML Schemaは以下のようになるよ。 |
※拡張したXML Schema |
■モデルグループを追加して拡張
たけち: ここで見てほしいのは、次の個所なんだ。 さらら: えぇ。。(なんとなくだけれど (^ ^;) ) |
たけち: そして、今回一番見てほしいところが、次のモデルグループなんだ。 |
※拡張のために追加したモデルグループ |
たけち: 「複合型内容をもった複合型」では、このような拡張で結果として作られる内容モデルはつぎのように書くんだ。 |
たけち: だからこの例題だと、結果として作られる内容モデルは、つぎのように、 さらら: ふ〜ん、なるほどね。 |
要素(モデルグループ)の追加 2/2につづきます 。。。。 (^ ^* |
■XMLスキーマのコーナーは、TAKABEさま(XSLTの遊び部屋)の全面的なご協力をいただいて作成しています。 |