目次へ

4.2 要素間の関係の指定

その要素が子供要素をもつとき、要素型宣言では子供要素の構成を記述します。子供要素間の関係について、以下の項目を定義することが可能です。

  • 出現順序
    子供要素が複数存在する場合、どの順番で出現するのか定義します。
  • 出現回数
    子供要素の出現回数に関する制限を、要素型定義内に記述することができます。
4.2.1 出現順序

出現順序に関しては、2通りの指定方法があります。一つ目は、要素が出現する順番を指定する方法です。以下のように、複数の要素を要素が出現する順番に、’,’で区切って記述します。

  <!ELEMENT 要素名 (要素1, 要素2, 要素3,...) >

以上のように指定した場合、要素は必ず、要素1、要素2、要素3、...の順番で出現します。
二つ目は、出現しうる要素のリストを指定する方法です。以下のように、要素のリストを’|’で区切って指定します。

<!ELEMENT 要素名 (要素1 | 要素2 | 要素3 |...) >

以上のように指定した場合、要素は要素1、要素2、要素3、...のどれかひとつのみが出現します。

4.2.2 出現回数

要素の出現回数については、次の4パターンの指定を行うことができます。

  • 必ず1回出現
  • 0回もしくは1回出現
  • 1回以上出現
  • 0回以上出現

要素の出現回数について、「必ず1回出現」と指定した場合、その要素は必ず1回出現する必要があります。要素の出現回数についての制限を記述しなければ、デフォルトで「必ず1回出現」が設定されます。

<!ELEMENT 要素名 要素名>

「要素が出現してもしなくてもよい」というように指定するには、要素名の横に’?’を記述します。

<!ELEMENT 要素名 要素名?>

また、「1回以上出現してもよい」というように指定するには、要素名の横に’+’を記述します。

<!ELEMENT 要素名 要素名+ >

さらに出現しても、出現しなくてもよく、複数出現してもよい場合には、要素名の横に’*’を記述します。

<!ELEMENT 要素名 要素名*  >
4.2.3 要素指定例

以上に要素型の指定例を記述します。

<!ELEMENT 料理 (名前,材料+)>

料理要素を以上のように定義した場合、「名前要素の次に、材料要素が1回以上出現する」という指定になります。例を以下に示します。

 
  <料理>
  	<名前>冷奴</名前>
  	<材料>豆腐</材料>
  </料理>

  <料理>
  	<名前>カレーライス</名前>
  	<材料>にんじん</材料>
  	<材料>ジャガイモ</材料>
  	<材料>たまねぎ</材料>
  	<材料>鶏肉</材料>
  </料理>

また、材料要素の部分を以下のように変更します。

<!ELEMENT 料理 (名前,(材料|調味料)+)>

上の要素型定義は、「名前要素の次に,材料要素か調味料要素が任意の順序で1回以上何度でも出現する」ことを示します。以下のXML文書はすべて、上の定義に沿うものです。

<料理>
  	<名前>冷奴</名前>
  	<材料>豆腐</材料>
  	<調味料>醤油</調味料>
</料理>
  
<料理>
 	<名前>カレーライス</名前>
  	<調味料>塩</調味料>
  	<調味料>こしょう</調味料>
  	<材料>鶏肉</材料>
  	<調味料>カレールー</調味料>
  	<調味料>油</調味料>
  	<材料>にんじん</材料>
  	<材料>ジャガイモ</材料>
  	<材料>たまねぎ</材料>
</料理>

以下のように宿泊要素を宣言したとします。

<!ELEMENT 宿泊 (飲み物|食べ物|サービス)*>

上の宿泊要素は、「飲み物、食べ物、サービスの各要素が任意の順番で何回でも出現する可能性がある」ことを示しています。上の要素型宣言にしたがっているXML文書の例を以下に記します。

  <宿泊>
	  <食べ物>チーズ盛り合わせ</食べ物>
	  <飲み物>ビール</飲み物>
  </宿泊>

  <宿泊>
  	<サービス>マッサージ</サービス>
	<飲み物>コーラ</飲み物>
	<サービス>外線電話</サービス>
	<食べ物>焼きうどん</食べ物>
	<食べ物>炒飯</食べ物>
  </宿泊>

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp