2002年9月8日(日)更新 |
■万葉歌データのDTD
たけち: どう? 少し考えてみた? さらら: えっ、えぇ。。。こんな感じなのかしら・・・・・(^ ^; でもずいぶんと長ったらしくなっちゃったわ。 |
■さららの考えたDTD |
たけち: こうしてみると、すごい行数のDTDになってしまったね。 さらら: そうなのよねぇ〜。同じ内容の属性宣言が多いのよね。 たけち: そうだね。それじゃあ、この属性宣言をちょっとすっきりさせることを考えていこうね。まず、これはこんな書き方に直せるんだ。 |
■属性宣言の書き方を変えてみました |
さらら: あっ、そっか〜。こんな書き方ができたのね。。。。でも、ほんのちょっと短くなっただけだわ。 たけち: このままではそうだね。これをさらにこう書き直してみるよ。 |
■パラメータエンティティを使ってさらに短く |
■パラメータエンティティ
さらら: へぇ〜、こんな書き方ができるの! すっきりしているわね。 たけち: そうだね。DTDで使ったこの技をパラメータエンティティと言うんだよ。以前外部エンティティを勉強したけれど、それにちょっと似ているね。パラメータエンティティもエンティティの一種なんだけど、これはXML文書内で使われるエンティティではなくて、DTDの中だけで使われるエンティティなんだよ。この場合、共通の属性については、poem_common というパラメータエンティティを定義し、それをDTDの属性宣言の中で、%poem_common;と書くことによって参照しているんだ。それによって、共通の属性を属性宣言したことと同じ意味になるんだよ。 さらら: ふぅ〜ん。そうなんだぁ。 たけち: さて、ここまではDTDの話だったけれど、今度はXML Schemaに話を戻そうね。まずさっきのDTDと同じ意味のXML Schemaを書いてみようか。もうだいたい書けるよね。 さらら: え゛っ。。。(? ?; たけち: じゃぁ、つぎのりストを見て。 |
■XML Schemaによる万葉歌スキーマ
■万葉歌データをXML Schemaで定義 |
さらら: わぁ〜。。。長いわねぇ〜。。それに、<xsd:choice minOccurs="0" maxOccurs="unbounded">ってなあに?? たけち: あっ、それは無視してね (^ ^; さらら: これも同じような宣言がいっぱい出てきて大変だわ。 たけち: そうだね。これとさっきのDTDのパラメータエンティティを比べてみてどう思うかい? さらら: XML SchemaにもDTDのパラメータエンティティと同じ機能が欲しいわね。 たけち: そうだよね。そこで登場するのが 名前付き属性グループ定義というテクニックなんだよ。 |
■XML Schemaの名前付き属性グループ定義
■名前付き属性グループ定義を使用 |
さらら: なるほど、名前付き属性グループ定義って便利なのね。さっきのDTDのパラメータエンティティと似たような流れで定義できているわ。 たけち: そうだね。ちょうどDTDのパラメータエンティティを属性宣言に適用したのと同じ効果をもっているのが 名前付き属性グループ定義 なんだ。ちなみに、DTDのパラメータエンティティは属性宣言だけでなくて、要素宣言の部分に対しても適用できるんだ。これに相当するXML Schemaの機能を 名前付きモデルグループ定義 というんだけど... さらら: ・・・・・(? ?; たけち: あっ、それはもっと先に勉強することにするね (^ ^; さらら: それにしても、これだけたくさんの共通する属性を扱うって、本当に大変だわね。(.....あぁ、良かった (^ ^; ) たけち: そうだね。でも、これと同じ結果をまた別の観点から得ることができる、もっとスマートな方法もXML Schemaにはあって... さらら: えっ? その話は次回の属性の追加にて 。。。。 (^ ^)v |
■XMLスキーマのコーナーは、TAKABEさま(XSLTの遊び部屋)の全面的なご協力をいただいて作成しています。 |