選択リスト
子要素の選択
DTD において子要素を指定する時、これまではカンマ , を用いて
出現しなければならない順番で子要素を指定しました
しかし、子要素の選択を文書の作者に任せたい場合は、むしろ不便です
例えば、ある人物のアドレスを表した文書には、その人物の連絡先が書かれるでしょう
この時、連絡先は家の電話かもしれませんし、携帯電話かもしれません
さらに、この文書は仕様の問題で、この二つの連絡先を同時に指定できないものとします
文書は、連絡先が携帯電話か自宅の電話かを要素で明示しなければなりません
仕様の問題で、携帯の要素と自宅の要素、それぞれの連絡先を二つ指定できないとすれば
これまでのやり方では指定することができません
このような場合は選択リストというものを用います
これは、親要素の要素型宣言で、子要素をカンマではなく縦バー | で区切ります
選択リストは、柔軟な XML 文書のためには欠かせない方法です
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE object [
<!ELEMENT object (document+)>
<!ELEMENT document (title | name)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT name (#PCDATA)>
]>
<object>
<document>
<title>Kitty on your lap</title>
</document>
<document>
<name>Tokyo mew mew</name>
</document>
</object>
この文書の document 要素は、title 要素、または name 要素を1つだけ含むことを表します
ただし、両方の要素を子として持つことはできません
選択リストを使いこなすには、次の章で説明するグループ化を知らなくてはなりません
これらを覚えれば、DTD における要素の宣言は非常に柔軟になるでしょう