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" />
當您希望屬性值為一組固定合法值中的一個時,請使用列舉屬性值。