2002年9月1日(日)更新 |
■属性の宣言
たけち:前回は「要素を宣言するためには、まずデータ型が必要」「要素の性質はデータ型が決めている」ということを話したんだよね。で、今回は、・・・ さらら: ねぇ、それでふと思ったんだけれど、属性の方はどう定義・・・じゃなかった、宣言すればいいのかしら? たけち: え゛っ。。。それはもうちょっと後からしようと思ったんだけれど・・・さららがもうそういう疑問を持ってくれたんだったら、これも先走ってちょっと見てみようか。 さらら: えぇ。 たけち: じゃあ、つぎのようなpno属性がついたyomi要素をみてみよう。 |
<yomi pno="8">熟田津に船乗りせむと月待てば潮もかなひぬ今は漕ぎ出でな</yomi> |
たけち: これをDTDで書くとつぎのようになるね。 |
<!ELEMENT yomi (#PCDATA)> |
さらら: えぇ、簡単なDTDだからわかるわ。 |
たけち: これをXMLスキーマで宣言すると、次のようになるんだ。今の時点で全部理解する必要はないから眺めるだけでいいよ。 さらら: えっ、えぇ。。 |
■name属性とtype属性
さらら: <xsd:simpleContent>とか<xsd:extension base="xsd:string">とかいった言葉がいっぱいで、よくわからないわ。 たけち: うん、そこはそのうちゆっくり説明するから今はわからなくてもいいよ。この中で見てもらいたいのは次の二つなんだ。それぞれは、さっき見たDTDの<!ELEMENT yomi (#PCDATA)>と<!ATTLIST yomi pno CDATA #REQUIRED>に相当するんだ。 |
さらら: よく見ると、 |
たけち: これは、Positive Integer、つまり「正の整数」を意味しているデータ型のことだよ。 さらら: あっ、そうなんだ。。。。あと、use="required"というのは、きっとDTDの#REQUIREDと同じ意味なのよね。 たけち: あたり〜。前回、
|
■スキーマにはデータ型が必要
さらら: そっか〜。それでよく考えたら、スキーマを定義するということは、XMLドキュメントの要素と属性を宣言するってことでしょ。ということは… たけち: そうなんだね。このことをまとめると、
■スキーマを定義するためには、まずデータ型が必要 と言っていいかもしれないね。要するにXMLスキーマでは「はじめにデータ型ありき」ってことだね。 さらら: そういうことなのね。スキーマにはデータ型ね。 |
■DTDとXMLスキーマを比較すると
たけち: ところでここで「データ型」という観点から、DTDとXMLスキーマを比較してみようね。まずDTDの要素形宣言には、「データ型」という考え方はないよね。 さらら: えぇ。例えば、 たけち: そうなんだ。ところがDTDの属性リスト宣言の方には、XMLスキーマとは格段の差があるけれども、実は属性に関しては、データ型の考え方があったと思ってもいいんだ。 さらら: え、そうなの? |
たけち: ほら、以前、DTDの属性を勉強したときに、 さらら: あっ、そっ、そうだったかしら。。。 たけち: DTDの場合、属性値に使えるデータ型の主なものをあげると、つぎのようなものだけれどね。ほかには、ID、IDREF/IDREFS、ENTITY/ENTITIESなんてのもあるけれどね。 |
|
たけち: これから勉強するXMLスキーマのデータ型と比べると簡単なものといっていいものだけれど、それでもDTDの属性リスト宣言には、データ型の考え方があったんだね、きっと。 さらら: そうなのね。 たけち: これに対してXMLスキーマでは、属性の宣言だけでなく、要素の宣言に対しても、データ型の考え方を取り入れたということが言えるね。そして、そのデータ型の考え方も、DTDの属性値のデータ型とは比較にならないくらいパワーアップされてるんだ。 |
さらら: そういうことなのね。 たけち: 今回は要素と属性の宣言の似ている面について説明したけれども、次回は要素と属性を宣言するデータ型の相違点を説明するね。 さらら: は〜い。ありがと。 → 次回はデータ型: 単純型と複合型です。。。。 (^ ^)v |
■XMLスキーマのコーナーは、TAKABEさま(XSLTの遊び部屋)の全面的なご協力をいただいて作成しています。 |