DTD-属性
DTDでは、属性はATTLIST宣言で宣言されます。
属性の宣言
属性宣言の構文は次のとおりです。
<!ATTLIST element-name attribute-name attribute-type attribute-value>
DTD example:
<!ATTLIST payment type CDATA "check">
XML example:
<payment type="check" />
属性タイプは、次のいずれかになります。
Type | Description |
---|---|
CDATA | The value is character data |
(en1|en2|..) | The value must be one from an enumerated list |
ID | The value is a unique id |
IDREF | The value is the id of another element |
IDREFS | The value is a list of other ids |
NMTOKEN | The value is a valid XML name |
NMTOKENS | The value is a list of valid XML names |
ENTITY | The value is an entity |
ENTITIES | The value is a list of entities |
NOTATION | The value is a name of a notation |
xml: | The value is a predefined xml value |
attribute-valueは、次のいずれかになります。
Value | Explanation |
---|---|
value | The default value of the attribute |
#REQUIRED | The attribute is required |
#IMPLIED | The attribute is optional |
#FIXED value | The attribute value is fixed |
デフォルトの属性値
DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
Valid XML:
<square width="100" />
上記の例では、「square」要素は、タイプCDATAの「width」属性を持つ空の要素として定義されています。幅が指定されていない場合、デフォルト値は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="W3Schools" />
作成者が属性を変更できないように属性に固定値を設定する場合は、#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" />
属性値を有効な値の固定セットの1つにする場合は、列挙された属性値を使用します。