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" />当您希望属性值为一组固定合法值中的一个时,请使用枚举属性值。