- 2.1 XML宣言
- 2.2 要素
- 2.3 属性
- 2.4 XMLの構造
- 2.5 xml:space属性とxml:lang属性
- 2.6 CDATAセクション
- 2.7 まとめ
2.4 XMLの構造
要素と属性という、XML文書の最も基本的で重要な情報単位の話をしたところで、XML文章の構造についてお話をしたいと思います。
前章「1.3 XMLとHTML」で、HTMLと違いXMLはデータ構造を記述することが可能といいました。しかし、データ構造を自由な形式で記述できるわけではありません。XMLでは、データを木構造で記述します。
要素はその内容にさらに要素を含むことができます。これは、要素同士に親子関係があると見ることができます。また、要素とその属性の関係も、親子関係と見ることができます。このように、要素と要素、要素と属性を親子関係として認識することにより、XMLに記述されているデータを木構造として理解することができるのです。
以下に、書籍情報を記述したXML文書の例を示します。
<bookinfo> <book-title reading="カイマナヒラノイエハワイアンスケッチズ">カイマナヒラの家 Hawaiian sketches</book-title> <book-author role="著" reading="イケザワナツキ">池澤夏樹</book-author> <book-author role="写真" reading="シバタミツユキ">芝田満之</book-author> <publisher>ホーム社</publisher> </bookinfo>
上の例では、bookinfo要素の中に、book-title、 book-author、 publisherの各要素がネストされています。これにより、記述されている情報を、bookinfoを親、book-titleなどを子供とする階層構造としてとらえることができます。また、book-titleにはreading属性が定められています。このreading属性も、book-title要素の子供の情報として、認識できます。このように、要素や属性は、データの階層構造を表していると認識されます。上のXML文書で定められているbookinfoデータは、以下のような構成要素で成り立っています。
以上のように、XMLはデータの構造を木構造として捉え表現します。
ところで、一般に、言語を設計する際に、ある情報を要素で表現するか属性で表現するか悩むことがよくあります。どちらの使い方を採用するかは目的次第ですが、要素では子要素などを持たせることができるが、属性では文字列しか値として持てないという相違点があります。