DTD - 属性


DTDでは、属性はATTLIST宣言によって宣言されます。


属性の宣言

属性宣言は次の構文を使用します:

<!ATTLIST element-name attribute-name attribute-type attribute-value>

DTDの例:

<!ATTLIST payment type CDATA "check">

XMLの例:

<payment type="check" />

以下は属性タイプのオプション:

タイプ 説明
CDATA 値は文字データ(character data)
(en1|en2|..) この値は列挙リスト内の1つの値です
ID 値は一意のidです
IDREF 値は別の要素のidです
IDREFS 値は他のidのリストです
NMTOKEN 値は有効なXML名です
NMTOKENS 値は有効なXML名のリストです
ENTITY 値はエンティティです
ENTITIES 値はエンティティのリストです
NOTATION この値は記法の名前です
xml: 値は事前定義されたXML値です

デフォルト属性値次の値を使用できます:

值 解説
值 属性のデフォルト値
#REQUIRED 属性値は必須です
#IMPLIED 属性は必須ではありません
#FIXED value 属性値は固定です


デフォルト属性値

DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">

有効なXML:
<square width="100" />

上記の例では、"square" は CDATA タイプの "width" 属性を持つ空要素として定義されています。width が設定されていない場合、そのデフォルト値は0です。


#REQUIRED

構文

<!ATTLIST element-name attribute-name attribute-type #REQUIRED>

例

DTD:
<!ATTLIST person number CDATA #REQUIRED>

有効なXML:
<person number="5677" />

無効なXML:
<person />

デフォルト値のオプションがないが、それでも作成者に属性の指定を強制したい場合は、キーワード #REQUIRED を使用してください。


#IMPLIED

構文

<!ATTLIST element-name attribute-name attribute-type #IMPLIED>

例

DTD:
<!ATTLIST contact fax CDATA #IMPLIED>

有効なXML:
<contact fax="555-667788" />

有効なXML:
<contact />

作成者に属性の指定を強制したくない場合、かつデフォルト値のオプションもない場合は、キーワード #IMPLIED を使用してください。


#FIXED

構文

<!ATTLIST element-name attribute-name attribute-type #FIXED "value">

例

DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">

有効なXML:
<sender company="Microsoft" />

無効なXML:
<sender company="W3Schools" />

属性に固定の値を持たせ、作成者がその値を変更できないようにしたい場合は、#FIXED キーワードを使用してください。作成者が異なる値を使用した場合、XMLパーサーはエラーを返します。


列挙属性値

構文

<!ATTLIST element-name attribute-name (en1|en2|..) default-value>

例

DTD:
<!ATTLIST payment type (check|cash) "cash">

XMLの例:
<payment type="check" />
或
<payment type="cash" />

属性値を、固定された有効な値のいずれかにしたい場合は、列挙属性値を使用してください。

その他の拡張