導入
要素の中には、テキストだけでなく 別の要素 を入れられます。これを 入れ子(ネスト) と呼びます。入れ子を使うと、データが枝分かれした 木構造(ツリー) になり、現実の複雑な情報をそのまま表現できます。
説明
たとえば「1冊の本」を表すと、本の中に「タイトル」「著者」「価格」という要素が入った形になります。
<book>
<title>吾輩は猫である</title>
<author>夏目漱石</author>
<price>500</price>
</book>
<book> の中に3つの要素が入っています。さらに、著者が複数いる場合は、要素の中に要素をもう一段入れられます。
<book>
<title>ある本</title>
<authors>
<author>山田花子</author>
<author>鈴木一郎</author>
</authors>
</book>
このように入れ子を重ねると、データが上から下へ枝分かれしていく 木 の形になります。いちばん外側にあって全体を包む要素を ルート要素(root element) と呼びます。上の例では <book> がルートです。
XMLの絶対ルール:ルート要素は1つだけ 1つのXML文書には、すべてを包む ルート要素がちょうど1つ 必要です。次のように要素が並列で2つあるのは違反です。
<book>...</book> <book>...</book> <!-- NG:ルートが2つある -->複数の本を並べたいときは、全体を包む親(例:
<books>)を作ります。
<books>
<book><title>本A</title></book>
<book><title>本B</title></book>
</books>
もう一つ大切なのが 入れ子の順序 です。後から開いたタグを先に閉じます。開始と終了が「かぶって」交差してはいけません。
<a><b>テキスト</b></a> <!-- OK:内側の b を先に閉じる -->
<a><b>テキスト</a></b> <!-- NG:a と b が交差している -->
やってみよう
身近なもの(自分のプロフィール、好きな本、料理のレシピなど)を、要素の入れ子で表す練習をしてみましょう。「全体を包むルートを1つ作り、その中に細かい要素を入れる」という感覚がつかめれば、この章は卒業です。次章では、要素に情報を追加する「属性」を学びます。