|
今回の講座で学習すること:属性の記述方法 ● 属性は、ルールに従って、開始タグの中で指定する必要がある。 ● 属性値は、二重引用符またはアポストロフィで囲まなければならない。 ● 同じ属性を複数回指定してはいけない。 |
まずは属性とは何かという点を考えてみましょう。「要素のタイプを区別したい」とか、「要素に一意な識別子をつけて別の所から参照したい」などの理由で要素になんらかの付加情報をつけることがあるかもしれません。そのような理由でつける付加情報のことを属性と言います。
わかりやすく例えで考えてみましょう。皆さんも友人にプレゼントを送る際に、宅配便を利用することがあるかもしれません。もし、送るプレゼントの中味が生物(なまもの)であったり、割れ物であるならば、小包にはその小包の性質を表す「ナマモノ」とか「ワレモノ注意」とか「クール」などのラベルが貼られます。それらのラベルは、小包の性質を説明しているのです。要素が小包だとすると"属性はあたかも要素の性質等を表すラベルのようなもの"と言うことができます。では、属性をどのように指定することができるのでしょうか。
|
ルール1 属性は次のように指定する。 ● 属性値は、二重引用符またはアポストロフィで囲まなければならない。 ● <要素名 属性名1="属性値1"属性名2="属性値2"・・・> (属性は開始タグの中で指定) |
続いてサンプル(リスト1)を見てみることにしましょう。
|
・・ ... <course id="1">XML テクノロジー入門</course> <course id="2">1 日で理解できるXSLT</course> <course id="3"> 今からはじめるXML Schema 入門 </course> ・・ ... |
リスト1 は、セミナー予定表をXML で表現した際に、各セミナーコースに属性をつけることによって一意なid 番号を付加したサンプルとなっています。上記のサンプルからも分かるように、属性値は、二重引用符(またはアポストロフィ)で囲まなければなりません。
|
ルール2 属性値は、二重引用符またはアポストロフィで囲まなければならない。 |
|
属性値にアポストロフィしか使えない場合 < 図名前='Theme is "peace".'> 属性値が二重引用符を含む場合は、アポストロフィで囲む。 属性値に二重引用符しか使えない場合 < 図名前="Theme is 'peace'."> 属性値がアポストロフィを含む場合は、二重引用符で囲む。 |
さらに、1 つの要素の開始タグの中に、複数の属性指定をすることはできますが、それらの属性名は異なっていなければなりません。
|
ルール3 同じ属性を複数回指定してはいけない。 |
次のリスト3 にあげられているのは、エラーとなる属性の記述方法の一例です。
|
<memo security="public"
security="internal"> 属性名は同じであるが、属性値は異なるsecurity 属性を複数回指定しようとしている。 <memo security="public" security="public"> 属性名も属性値も同じであるsecurity 属性を複数回指定しようとしている。 |
では、今回学んだ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 つのポイント、つまり、
● 属性は次のように指定する。< 要素名属性名1=" 属性値1" 属性名2=" 属性値2" ...> (属性は開始タグの中で指定)
● 属性値は、二重引用符またはアポストロフィで囲まなければならない。
● 同じ属性を複数回指定してはいけない。
ことなどについて、マスターすることができました。