本文へスキップ
BecomeCoder

XMLコース · 第2章 属性とテキスト · レッスン4

属性 ― 開始タグの中に「名前="値"」を書く

ブラウザで完結

導入

要素には、開始タグの中に 属性(attribute) を書いて、追加の情報を持たせられます。属性は 名前="値" の形で、開始タグの <> の間に書きます。

説明

たとえば本のIDや言語を属性で表すとこうなります。

<book id="b001" lang="ja">
  <title>吾輩は猫である</title>
</book>

<book>id="b001"lang="ja" という2つの属性が付いています。属性のルールは次のとおりです。

  • 形は必ず 名前="値"。属性名の後に =、値は 引用符で囲む
  • 引用符は ダブルクォート " でもシングルクォート ' でもよいが、必ずどちらかで囲む(裸の値は不可)。
  • 属性どうしは 半角スペースで区切る
  • 同じ要素に 同じ名前の属性を2つ書くことはできない
<img src="cat.png" alt="猫" />     <!-- OK -->
<img src=cat.png />                <!-- NG:値が引用符で囲まれていない -->
<book id="1" id="2">              <!-- NG:同名属性の重複 -->

説明(属性か、子要素か)

同じ情報は、属性でも子要素でも表せることがあります。たとえば著者名は、次のどちらでも書けます。

<!-- 属性で表す -->
<book author="夏目漱石" />

<!-- 子要素で表す -->
<book>
  <author>夏目漱石</author>
</book>

どちらが正解というルールはありませんが、目安があります。

  • その要素そのものを識別・分類するための短い情報(ID・種別・言語コードなど)は 属性 が向く。
  • それ自体が意味のあるデータ、将来さらに細分化しそうなもの(著者名 → 姓・名に分けたい等)は 子要素 が向く。

迷ったら「あとで中身を細かく分けたくなりそうか?」を考え、なりそうなら子要素にしておくと安全です。

やってみよう

<tag 名前="値"> の形を書いてみましょう。値を引用符で囲むのを忘れないこと ―― これが属性でいちばん多いミスです。次のレッスンでは、中身が空の要素の書き方を学びます。

実際に動かしてみよう

下のエディタに XML を書くと、右側にその場で「整形式(well-formed)かどうかの判定」と「木構造ツリー」が表示されます(ブラウザ標準のXMLパーサを使うので、タグの閉じ忘れ・大文字小文字違い・ルート要素が2つ・入れ子の交差などは本物どおりエラーになります)。下の XPath 欄に式(例 `//title`)を入れると、一致したノードを一覧できます。本文の例を打ち込んだり書き換えたりして確かめましょう。

XML — 整形式チェック & 木構造プレビュー

書いた XML をその場で解析し、整形式(well-formed)かどうかの判定・木構造ツリー・XPath検索を表示する学習用ウィジェットを読み込みます(ブラウザ標準のXMLパーサ/XPathを使うため外部依存なし・軽量です)。
スクロールして表示された時点でも自動で読み込まれます。