list
要素で明示出来ます。grammar
要素の直下には置いてはなりません。通常、常に element
, attribute
, define
各要素の子孫でなければなりません。list
要素をルート要素とすることが出来ます。ただし、そのスキーマは単独では用いることは出来ず、 externalRef
要素の参照先としてのみ利用できます。value
, data
各要素を中身に置くことが出来ます。ただし、 text
要素など、それ自体に空白を含み得るデータを置くことは出来ません。区切りの関係が不明確になるためです。element
, attribute
各要素を子孫に入れてはいけません。interleave
, choice
要素などを適宜使う必要があります。ゲームマップなどで宝の在処を指し示したい場合に、入口からどのように進めば何が得られるかをデータ化したい場合があるかも知れません。その場合、空白区切りで一画面毎の順路を記述しておくと便利な場合があるでしょう。以下にスキーマと XML 文書(の断片)の一例を示します。
<element name="宝"> <attribute name="名前"><text/></attribute> <list> <oneOrMore> <choice> <value>上</value> <value>下</value> <value>左</value> <value>右</value> </choice> </oneOrMore> </list> </element>
<宝 名前="エメラルドロッド"> 上 上 左 下 左 上 上 右 下 </宝>
<宝 名前="黄金の兜"> 上 上 左 下 左 中 上 右 下 <!-- "中" が含まれている --> </宝>
Cascading Style Sheets では、 枠線の色指定は空白区切りで列挙します(上, 右, 下, 左の順)。この表記を XML の属性(ここでは色
属性とします)で実現させるための一つの方法として、 list
要素を使うことを考えます。以下の例では、 RGB.datatype
は既に定義済 (#RRGGBB
のみの形を許す) とします。ついでに、基本的な色 (赤
, 青
, 黄色
)に関しては、名前を使えるとします。
<element name="枠線"> <empty/> <attribute name="色"> <list> <oneOrMore> <choice> <ref name="RGB.datatype"/> <value>赤</value> <value>青</value> <value>黄色</value> </choice> </oneOrMore> </list> </attribute> </element>
<枠線 色="#222255 #ab7766 #00a3b1 #ff0022"/>
<枠線 色="黄色 #ab7766 赤"/>
以上の例では、色指定の個数制限は設けられておりません。もう少し複雑な記述をすれば、ある程度の制限を設けることは可能です。