属性を記述する

広告

XML文書で記述する要素に対して属性と呼ばれる付加的なデータを記述することができます。ここでは属性の記述方法と、要素と属性の使い分けについても簡単に解説します。

1.属性の記述方法
2.属性と要素の使い分け

属性は要素の中でも開始タグの中に記述します。構文は次の通りです。

<要素名 属性名="属性の値">内容</要素名>

属性の名前、そして属性の値を記述します。属性の値はダブルクオーテーションでくくって記述します。例えば「food」要素で属性の名前が「id」、属性の値が「001」だった場合には次のように記述します。

<food id="001">木製の椅子</food>

1つの要素の中で属性は複数記述することができます。その場合は空白を挟んで属性名と属性の値の組を記述していって下さい。複数の属性を記述する場合、同じ要素内に同じ属性は複数回記述することはできません。

<要素名 属性名1="属性の値1" 属性名2="属性の値2" 属性名3="属性の値3">内容</要素名>

例えば「food」要素で属性の名前が「id」、属性の値が「001」、別の属性として属性の名前が「保管場所」、属性の値が「関東倉庫」だった場合には次のように記述します。

<food id="001" 保管場所="関東倉庫">木製の椅子</food>

それでもこれまでに記述したXML文書のサンプルに属性を加えてみます。

sample4_1.xml

<?xml version="1.0" encoding="UTF-8" ?>
<foods>
  <food id="001">
    <name>バナナ</name>
    <color>黄色</color>
  </food>

  <food id="002">
    <name>リンゴ</name>
    <color>赤</color>
  </food>
</foods>

サンプルをブラウザで表示してみると次のように表示されます。

p4-1

要素に付加的なデータを記述する時に使用されるのが属性ですが、要素では内容として別の要素を子要素として記述することができますので付加的なデータは子要素として記述することもできます。

例えば次の2つのサンプルは属性を使うか子要素を使うかの違いはありますが、同じようなデータを表すXML文書となっています。

<?xml version="1.0" encoding="UTF-8" ?>
<foods>
  <food id="001">
    <name>バナナ</name>
    <color>黄色</color>
  </food>

  <food id="002">
    <name>リンゴ</name>
    <color>赤</color>
  </food>
</foods>
<?xml version="1.0" encoding="UTF-8" ?>
<foods>
  <food>
    <id>001</id>
    <name>バナナ</name>
    <color>黄色</color>
  </food>

  <food>
    <id>002</id>
    <name>リンゴ</name>
    <color>赤</color>
  </food>
</foods>

では属性と要素をどのように使い分ければいいのかというと、属性では同じ属性を複数使用できないなどのルール上の制約を除けばどちらを使ってもいいようです。ただ、非常に長かったり改行が含まれるようなテキストの場合は子要素を使ったほうが適しています。また画像ファイルの場所などテキストとして表示する必要がないデータの場合も属性が適しています。外部に見せる必要がないような内部的なデータについても属性を使ったほうがいいかもしれません。

先ほどの記載した画像を表すような要素の場合、テキストで表示する内容が無いので画像ファイルの場所は属性の値として記述し、要素そのものは空要素として記述できます。

<img src="http://www.example.com/sample.jpg"/>

XMLではルール上問題なければ属性であっても子要素であっても問題はありません。ただ混乱しないようにどういった場合には属性を使うというルールを決めて、そのルールに従って作成されると分かりやすい気がします。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)