2003年3月23日(日)更新 |
■属性についての復習
たけち: 前回までの話がどんなだったか、ここでおさらいしておこうね。 |
|
■表記的なグローバル属性と機能的なグローバル属性
さらら: そうよね。そして私が、 たけち: そうだね。確かに混乱させるような話で申し訳ないんだけれど... 実は表記的な意味でのグローバル属性と、機能的な意味でのグローバル属性(宣言)があるんだ。 さらら: 表記的? 機能的? たけち: うん。まずは、表記的な意味でのグローバル属性について説明することにするね。 |
■表記的な意味でのグローバル属性
たけち: 前回見てもらった例題にprint:colorという名前の名前空間接頭辞付きの属性が出てきたよね。 |
※XMLデータ例: 万葉歌【manyouPoem.xml】 |
さらら: 今まで見たことのない形だから、びっくりしちゃった。でもよく考えれば、名前空間宣言でもxmlns:mpと書くから、似たようなものは今まで見てきていたのね。 たけち: そうだね。まあxmlns:mpのような名前空間宣言は、属性のような形をしているけれども、本当の属性とは異なる、かなり特殊な扱いの属性だね。 さらら: えっ、名前空間接頭辞が付くか付かないかで、別の種類の属性として扱われるの? たけち: そうなんだ。例えば次の例を考えてみようね。 |
※XMLデータ例: 同じ名前の属性が2ヶ所に出現 |
たけち: 一つの要素の中に、samenameという名前の属性が2ヶ所に出現しているよね。こういう書き方はエラーになるんだよ。属性が出現するときは、同じ名前のものが2つ以上、同じ要素の中に出てくることはないんだ。 さらら: そうね。それはわかるわ。 たけち: 次のような書き方も駄目だよ。 |
※XMLデータ例: 同じ名前の属性が2ヶ所に出現(名前空間接頭辞付き)( |
たけち: やはり同じ名前の属性が2ヶ所に出現しているから、これもエラーになるんだよ。 さらら: えぇ。 たけち: でもね。次のようなXMLデータは良いんだよ。 |
※XMLデータ例: 名前空間接頭辞無しと名前空間接頭辞付き( |
たけち: 名前空間接頭辞が付くか付かないかで別の種類の属性として扱われるから、ex:samenameとsamenameは別の種類の属性ということになって、まったく問題がないんだ。 さらら: そうなの〜。 たけち: 例えば次のような書き方もエラーにならないんだ。 |
※XMLデータ例: 名前空間が異なる属性( |
たけち: ex1:samename属性とex2:samename属性は、名前空間が違っているので、まったく別の属性として扱われるんだね。でも、次の例のように名前空間が同じだとだめだよ。 |
※XMLデータ例: 名前空間が同一の属性 |
さらら: えっ、どうして?? たけち: ex1:samename属性とex2:samename属性は一見別の属性のように見えるけれど、実はどちらの接頭辞が示しているのもhttp://www.example.com/で変わらないからなんだよ。 さらら: あっ。う〜ん。 たけち: ここで、ちょっと間違いやすい問題を出してみようかな(^ ^;) 次の書き方はエラーになるかな? それともOKかな? |
※XMLデータ例: 正しい?間違い? |
さらら: え〜、どっちかしら。xmlns="http://www.example.com/"とデフォルト名前空間が使ってあるということは、接頭辞のつかないsamename属性はex:samename属性と同じようにも見えるけど・・・・・ たけち: じゃあ、答えは次回にね。 さらら: あ〜ん。いじわる!! グローバル属性とグローバル属性宣言 その4に続きます...... (^ ^; |
■XMLスキーマのコーナーは、TAKABEさま(XSLTの遊び部屋)の全面的なご協力をいただいて作成しています。 |