2003年3月16日(日)更新 |
■いくつかの要素に共通的な属性
さらら: 属性に対する考え方、って? たけち: うん。その話をするのに、次のXMLデータとDTDを見てみようね。 |
※XMLデータ例: 万葉歌人 |
※DTD: 万葉歌人 |
たけち: これは前回の例題にprintColorという属性を加えたものだよ。これは印刷とかモニター上で表示される際に、その文字の色を指定することを目的とした属性だね。3箇所で使われているprintColor属性はすべて同じデータ型だよね。 さらら: そうね。でも、前回の話は要素が違えば同じ名前の属性であっても違うデータ型でもかまわないということで、こんな風に同じデータ型の同じ名前の属性があってもいいのよね。 たけち: こういう同じ名前で同じデータ型の属性があっても構わないんだよ。でもね、これらのprintColor属性が同じデータ型をとっているのは「偶然」なんだろうか? |
![]() |
さらら: それは違うと思うわ。だって、たけちが、これは印刷とかモニター上で表示される際に、その文字の色を指定することを目的とした属性だって言ったじゃない。だから、同じデータ型になったのよ。 たけち: うん、そうだね。前に、 さらら: えぇ。 たけち: でも、この例の場合の さらら: う〜ん。さっき言ってたことからすると、同じものなのね、きっと。 たけち: そうなんだよね。 さらら: そうなのね。 たけち: それから、名前空間が異なる要素に対してもprintColor属性は使われてかまわないんだよ。 さらら: あっ、そうなの。 たけち: ここで、このことをまとめておくね。 |
![]() |
1.属性は「要素に所属している性質」なので、同じ名前の属性でも、所属する要素が違えば別物と考えられる。 2.所属する要素を越えて、場合によっては名前空間が異なるスキーマも越えて、大域(グローバル)に使われるような属性も考えられる。 |
■名前空間が異なるスキーマでグローバルに使われる属性
さらら: ねぇ、名前空間が異なるスキーマに使われるグローバルな属性って、どんな風に使うの? たけち: あっ、そうだね。じゃあ、それを具体的に考えるのに、次の例をみてみようね。 |
![]() |
※XMLデータ例: 万葉歌人【personalInformation.xml】 |
※XMLデータ例: 万葉歌【manyouPoem.xml】 |
さらら: なっ、なにこのprint:colorという名前の属性は!? 属性の名前に、名前空間接頭辞が付いているの!? たけち: あっ、よく気が付いたね。詳しい話は後にして、次にXML Schemaの方を見てみよう。 |
※W3C XML Schema: 万葉歌人【personalInformation.xsd】 |
※W3C XML Schema: 万葉歌【manyouPoem.xsd】 |
※W3C XML Schema: color属性【print.xsd】 |
さらら: あら、この【print.xsd】スキーマファイルって、要素宣言が存在しないのね。要素みたいに独立してcolorという属性が宣言されているの!? さらら: 名前空間に直接、所属している「グローバル属性」... たけち: colorという属性は、本来、piという接頭辞で表される名前空間の要素やデータ型(要素型)に属すべきでもないし、mpという接頭辞で表される名前空間の要素やデータ型(要素型)に属すべきでもないよね。ここではprintという接頭辞で表した別の名前空間に所属する存在なんだね。 |
![]() |
さらら: なるほどねぇ... つまり、「グローバル属性宣言」を使って宣言された属性が「グローバル属性」なのね。それはこういうふうに、直接的に名前空間に所属するものとして宣言されて、要素の違いどころか、場合によっては名前空間の異なるスキーマの違いも越えて、グローバルにいろいろな要素の中で使われるってわけなのね。 たけち: う〜ん... そう言い切ってしまうとすっきりするしだけど... 実はちょっと違うんだ。 さらら: えっ?? たけち: そうだね。その前に、ちょっと休憩しようね。 さらら: え、えぇ(^ ^;) 次回はグローバル属性とグローバル属性宣言 その3です...... (^ ^; |
■XMLスキーマのコーナーは、TAKABEさま(XSLTの遊び部屋)の全面的なご協力をいただいて作成しています。 |