mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ?>
まずは属性とは何かという点を考えてみましょう。「要素のタイプを区別したい」とか、「要素に一意な識別子をつけて別の所から参照したい」などの理由で要素になんらかの付加情報をつけることがあるかもしれません。そのような理由でつける付加情報のことを属性と言います。
わかりやすく例えで考えてみましょう。皆さんも友人にプレゼントを送る際に、宅配便を利用することがあるかもしれません。もし、送るプレゼントの中味が生物(なまもの)であったり、割れ物であるならば、小包にはその小包の性質を表す「ナマモノ」とか「ワレモノ注意」とか「クール」などのラベルが貼られます。それらのラベルは、小包の性質を説明しているのです。要素が小包だとすると"属性はあたかも要素の性質等を表すラベルのようなもの"と言うことができます。では、属性をどのように指定することができるのでしょうか。
続いてサンプル(リスト1)を見てみることにしましょう。
・・ ... <course id="1">XML テクノロジー入門</course> <course id="2">1 日で理解できるXSLT</course> <course id="3"> 今からはじめるXML Schema 入門 </course> ・・ ...
リスト1 は、セミナー予定表をXML で表現した際に、各セミナーコースに属性をつけることによって一意なid 番号を付加したサンプルとなっています。上記のサンプルからも分かるように、属性値は、二重引用符(またはアポストロフィ)で囲まなければなりません。
さらに、1 つの要素の開始タグの中に、複数の属性指定をすることはできますが、それらの属性名は異なっていなければなりません。
次のリスト3 にあげられているのは、エラーとなる属性の記述方法の一例です。
では、今回学んだ3 つのルールも演習問題でマスターすることにしましょう。
①次のソースを見て、間違いを見つけ、その理由も説明しよう。
<?xml version="1.0" encoding="Shift_JIS"?> <note> <to> 山田氏 </to> <from> 富永 </from> <p> この情報はトップシークレットです。</p> </note secretlevel="top">
②手紙という要素に種別という名前の属性をつけ、属性値をビジネスにしたい。次の選択肢、A ~ F の中から正しく記述されたものをすべて選んで記号で答えてみよう。また理由も考えてみよう。
A < 手紙 種別=' ビジネス '>
B < 種別 手紙=' ビジネス '>
C < 手紙 ビジネス=' 種別 '>
D < 手紙 ビジネス=" 種別 ">
E < 手紙 種別=" ビジネス ">
F < 種別 手紙=" ビジネス ">
G < 手紙 種別='ビジネス">
③次の空欄A、B に入る最もふさわしい属性名と属性値を下記の語群より選び、記号で答えてみよう。また、その記号を選択した理由も考えてみよう。
<?xml version="1.0" encoding="Shift_JIS"?> < マニュアル version="3" ( A )= "( B )"> <p> マニュアルのバーション番号をご確認ください。</p> </ マニュアル >
語群
①version ②4 ③機密性 ④社外秘
①属性secretlevel が、note 要素の終了タグの中で指定されている。
(理由)属性は開始タグの中で指定しなければならないから。
<?xml version="1.0" encoding="Shift_JIS"?> <note secretlevel="top"> <to> 山田氏 </to> <from> 富永 </from> <p> この情報はトップシークレットです。</p> </note>
② A、E
(理由)要素名、属性名共に正しい位置に記述されていることに加え、属性値は、二重引用符またはアポストロフィで囲まなければならない、というルールをきちんと満たしているから。
③ A= ③ B= ④
(理由)同じ属性を複数回指定してはいけないので、一度指定されているversion 属性を再び指定することはできない。よって、属性名として最もふさわしいのは、③の機密性であり、属性値としてその中に入るのに最もふさわしいのは④の社外秘である。
今回は、属性を指定する際の3つのポイント、つまり、
などについて、マスターすることができました。
▲このページのTOPへ