DTDでは、属性は、ATTLIST宣言で宣言されています。
属性の宣言
属性宣言の構文は次のとおりです。
<!ATTLIST element-name attribute-name attribute-type attribute-value>
DTD example:
<!ATTLIST payment type CDATA "check">
XML example:
<payment type="check" />
attribute-type次のいずれかになります。
タイプ | 説明 |
---|---|
CDATA | 値は、文字データであります |
( en1 | en2 |..) | 値が列挙されたリストからいずれかでなければなりません |
ID | 値は固有のIDです。 |
IDREF | 値は、他の要素のidです |
IDREFS | 値は、他のIDのリストです。 |
NMTOKEN | 値が有効なXML名であります |
NMTOKENS | 値が有効なXML名のリストです |
ENTITY | 値は、エンティティであります |
ENTITIES | 値は、エンティティのリストです |
NOTATION | 値は表記の名前です。 |
xml: | 値は、事前に定義されたXML値であります |
attribute-value次のいずれかになります。
値 | 説明 |
---|---|
value | 属性のデフォルト値 |
#REQUIRED | 属性は必須です |
#IMPLIED | 属性はオプションです |
#FIXED value | 属性値は固定され |
デフォルトの属性値
DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
Valid XML:
<square width="100" />
上記の例では、 "square"要素が持つ空の要素であると定義されている"width" CDATA型の属性。 何幅が指定されていない場合は、デフォルト値の0を有します。
#必須
構文
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
例
DTD:
<!ATTLIST person number CDATA #REQUIRED>
Valid XML:
<person number="5677" />
Invalid XML:
<person />
あなたはデフォルト値のオプションを持っていない場合#REQUIREDキーワードを使用しますが、それでも存在すると属性を強制したいです。
#IMPLIED
構文
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
例
DTD:
<!ATTLIST contact fax CDATA #IMPLIED>
Valid XML:
<contact fax="555-667788" />
Valid XML:
<contact />
あなたは属性を含めるように著者を強制したくない場合は#IMPLIEDキーワードを使用して、あなたはデフォルト値のためのオプションがありません。
#一定
構文
<!ATTLIST element-name attribute-name attribute-type #FIXED "value">
例
DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
Valid XML:
<sender company="Microsoft" />
Invalid XML:
<sender company="w3ii" />
あなたは属性が著者はそれを変更することができずに固定値を持つようにしたいとき#FIXEDキーワードを使用します。 著者は別の値が含まれている場合、XMLパーサーはエラーを返します。
列挙された属性値
構文
<!ATTLIST element-name attribute-name (en1|en2|..) default-value>
例
DTD:
<!ATTLIST payment type (check|cash) "cash">
XML example:
<payment type="check" />
or
<payment type="cash" />
あなたは属性値が正当な値の固定セットの一つになりたいときに列挙型属性値を使用します。