DTD - 属性
DTDでは、属性はATTLIST宣言によって宣言されます。
属性の宣言
属性宣言は次の構文を使用します:
<!ATTLIST element-name attribute-name attribute-type attribute-value>
DTDの例:
<!ATTLIST payment type CDATA "check">
XMLの例:
<payment type="check" />
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" />
<!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 />
<!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 />
<!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" />
<!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" />
<!ATTLIST payment type (check|cash) "cash">
XMLの例:
<payment type="check" />
或
<payment type="cash" />
属性値を、固定された有効な値のいずれかにしたい場合は、列挙属性値を使用してください。
その他の拡張