DTD - 属性
在 DTD 中,属性通过 ATTLIST 声明进行声明。
声明属性
属性声明的语法如下
<!ATTLIST element-name attribute-name attribute-type attribute-value>
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 可以是以下之一
值 | 解释 |
---|---|
value | 属性的默认值 |
#REQUIRED | 属性是必需的 |
#IMPLIED | 属性是可选的 |
#FIXED value | 属性值是固定的 |
默认属性值
DTD
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
有效的 XML
<square width="100" />
在上面的示例中,"square" 元素被定义为一个空元素,具有 "width" 属性,其类型为 CDATA。如果没有指定宽度,则其默认值为 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" />
当您希望属性值是固定的一组合法值之一时,请使用枚举属性值。