DTD - Attributes
在 DTD 中,屬性是使用 ATTLIST 宣告來宣告的。
宣告屬性
屬性宣告的語法如下:
<!ATTLIST 元素名稱 屬性名稱 屬性型別 屬性值>
DTD 示例
<!ATTLIST payment type CDATA "check">
XML 示例
<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 可以是以下之一:
| 值 | Explanation |
|---|---|
| value | 屬性的預設值 |
| #REQUIRED | 屬性是必需的 |
| #IMPLIED | 屬性是可選的 |
| #FIXED value | 屬性值是固定的 |
預設屬性值
DTD
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
有效 XML
<square width="100" />在上面的示例中,“square”元素被定義為一個空元素,其“width”屬性的型別為 CDATA。如果未指定寬度,則預設為 0。
#REQUIRED
語法
<!ATTLIST 元素名稱 屬性名稱 屬性型別 #REQUIRED>示例
DTD
<!ATTLIST person number CDATA #REQUIRED>
有效 XML
<person number="5677" />
無效 XML
<person />如果您沒有預設值的選項,但仍希望強制屬性存在,請使用 #REQUIRED 關鍵字。
#IMPLIED
語法
<!ATTLIST 元素名稱 屬性名稱 屬性型別 #IMPLIED>示例
DTD
<!ATTLIST contact fax CDATA #IMPLIED>
有效 XML
<contact fax="555-667788" />
有效 XML
<contact />如果您不想強制作者包含屬性,並且沒有預設值的選項,請使用 #IMPLIED 關鍵字。
#FIXED
語法
<!ATTLIST 元素名稱 屬性名稱 屬性型別 #FIXED "value">示例
DTD
<!ATTLIST sender company CDATA #FIXED "Microsoft">
有效 XML
<sender company="Microsoft" />
無效 XML
<sender company="W3Schools" />當您希望屬性具有固定值而不允許作者更改時,請使用 #FIXED 關鍵字。如果作者包含其他值,XML 解析器將返回錯誤。
列舉屬性值
語法
<!ATTLIST 元素名稱 屬性名稱 (en1|en2|..) default-value>示例
DTD
<!ATTLIST payment type (check|cash) "cash">
XML 示例
<payment type="check" />
或
<payment type="cash" />當您希望屬性值為一組固定合法值中的一個時,請使用列舉屬性值。