DTD - 属性
DTDでは、属性はATTLIST宣言を通じて宣言されます。
属性を宣言します
属性宣言は以下の文法を使用します:
<!ATTLIST 元素名称 属性名称 属性类型 デフォルト値>
DTD インスタンス:
<!ATTLIST payment type CDATA "check">
XML インスタンス:
<payment type="check" />
以下に示します:属性タイプのオプションです:
タイプ | 説明 |
---|---|
CDATA | 値は文字データ(character data)です |
(en1|en2|..) | この値はリストのエンティティの一つです |
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」は「width」属性の「CDATA」タイプの空要素として定義されています。幅が設定されていない場合、デフォルト値は0です。
#IMPLIED
文法
<!ATTLIST 元素名称 属性名称 属性类型 #IMPLIED>
例
DTD:
<!ATTLIST contact fax CDATA #IMPLIED>
有効な XML:
<contact fax="555-667788" />
有効な XML:
<contact />
もし属性を強制的に含めさせたくない場合、かつデフォルト値のオプションがない場合、キーワード #IMPLIED を使用してください。
#REQUIRED
文法
<!ATTLIST 元素名称 属性名称 属性类型 #REQUIRED>
例
DTD:
<!ATTLIST person number CDATA #REQUIRED>
有効な XML:
<person number="5677" />
無効な XML:
<person />
デフォルト値オプションがなくても、作者に属性を強制することを希望する場合、#REQUIRED キーワードを使用してください。
#FIXED
文法
<!ATTLIST 元素名 属性名 属性タイプ #FIXED "値">
例
DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
有効な XML:
<sender company="Microsoft" />
無効な XML:
<sender company="W3School" />
属性が固定の値を持つことを希望し、作者がこの値を変更することを許可しない場合、#FIXED キーワードを使用してください。作者が異なる値を使用した場合、XML パーサーはエラーを返します。
リスト属性値
文法:
<!ATTLIST 元素名 属性名 (en1|en2|..) デフォルト値>
DTD 例:
<!ATTLIST payment type (check|cash) "cash">
XML 例:
<payment type="check" />
または
<payment type="cash" />
属性値が一連の固定の有効な値のいずれかであることを希望する場合、リスト属性値を使用してください。