2003年1月26日(日)更新 |
■DTDでは名前空間は扱えない
たけち: 前回は名前空間の重要性について話をしたけれど、具体的なXML Schemaの書き方については、ほとんど説明しなかったよね。今回から名前空間を使ったXML Schemaの書き方を学んでいこうね。 さらら: は〜い。でも、お手柔らかにね。(^ ^; たけち: まず次のXMLデータを見てみようね。 |
※XMLデータ例: 万葉歌-1 |
たけち: 今までも何回も出てきたようなパターンで、それに名前空間とその接頭辞が設定された、というところだね。まずこれのDTDについて書いてみよう。 さらら: やっぱり最初はDTDなのね...(^ ^;) でも、DTDだと、名前空間は扱えなかったんじゃないの? たけち: そう、本当はDTDでは名前空間は扱えないけれど、以下のようにごまかして書くことができるんだ。 |
※DTD例: 万葉歌-1 |
さらら: あ、なるほどね。これだとちゃんとDTDになっているわね。 たけち: そう、こういう書き方で一応はごまかすことができるんだね。(^ ^;) でも、この書き方にはいろいろと問題があって、例えば、接頭辞がmp以外になった場合とか、デフォルト名前空間になった場合に対応できないんだ。これがDTDが名前空間を扱う際に困ることの一つなんだよね。 さらら: デフォルト名前空間って何? たけち: う〜ん。。。じゃあ、最初に名前空間に対応したXML Schemaの書き方を説明して、その後でデフォルト名前空間について説明しよう。まずは名前空間に対応したXML Schemaの書き方からだよ。 |
■名前空間に対応したXML Schemaの書き方
※XML Schema例: 万葉歌-1 |
さらら: 今までの書き方とちょっと違うわね。見慣れない言葉があるわ...(^ ^;) たけち: そうだね。まず新しく出てきたものとして、xsd:schema要素の中に さらら: ふ〜ん、そうなのね。 たけち: それから、group(名前付きモデルグループ定義)やattributeGroup(名前付き属性グループ定義)の例も見ておこうね。さっきのXMLデータと似ている次のXMLデータを考えてみよう。 |
※XMLデータ例: 万葉歌-2 |
たけち: このXMLデータを、group(名前付きモデルグループ定義)やattributeGroup(名前付き属性グループ定義)も使ったスキーマで定義してみるね。 |
※XML Schema例: 万葉歌-2 |
■接頭辞をつける個所とつけない個所
さらら: え〜と、ねえ、これを見てちょっと不思議に思ったんだけれど... 要素名やデータ型名や名前付きモデルグループ名、名前付き属性グループ名には、mp という接頭辞がついているものと、ついていないものがあるわ。 たけち: そう、ここが初めて勉強する人にとってはややこしいところなんだけれど、一言で言うと、次のように言えるんだ |
さらら: ふ〜ん。そうなんだ。。。 たけち: もう少し大雑把に言うと、 さらら: う〜ん。。。 たけち: これに対して、 |
さらら: う〜ん、確かにややこしそう。でもまあ書いていれば慣れるのね。 たけち: そう、気をつけて何回も練習していれば、そのうちなんともなくなるよ。それからここで注意してもらいたいのは、このtargetNamespace属性は、あくまでXML Schemaの(最上位の)ルート要素である |
さらら: ふ〜ん、何か今ひとつよくわからないけれど... たけち: まあこれは、これから実例が出てきだすと、だいだいわかってくると思うよ(^^;) 次回は、「スキーマ文書のimport」について勉強することにするね。 さらら: あっ、は〜い!! 次回はimportです。...... (^ ^)v |
■XMLスキーマのコーナーは、TAKABEさま(XSLTの遊び部屋)の全面的なご協力をいただいて作成しています。 |