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