目录

DTD-- 属性


在 DTD 中,属性是使用 ATTLIST 声明来声明的。


声明属性

属性声明具有以下语法:

<!ATTLIST element-name attribute-name attribute-type attribute-value>

DTD example:

<!ATTLIST payment type CDATA "check">

XML example:

<payment type="check" />

这个属性类型可以是以下之一:

Type Description
CDATA The value is character data
(en1|en2|..) The value must be one from an enumerated list
ID The value is a unique id
IDREF The value is the id of another element
IDREFS The value is a list of other ids
NMTOKEN The value is a valid XML name
NMTOKENS The value is a list of valid XML names
ENTITY The value is an entity
ENTITIES The value is a list of entities
NOTATION The value is a name of a notation
xml: The value is a predefined xml value

这个属性值可以是以下之一:

Value Explanation
value The default value of the attribute
#REQUIRED The attribute is required
#IMPLIED The attribute is optional
#FIXED value The attribute value is fixed


默认属性值

DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">

Valid XML:
<square width="100" />

在上面的示例中,"square" 元素被定义为具有 CDATA 类型的 "width" 属性的空元素。如果未指定宽度,则默认值为 0。


#必需的

语法

<!ATTLIST element-name attribute-name attribute-type #REQUIRED>

示例

DTD:
<!ATTLIST person number CDATA #REQUIRED>

Valid XML:
<person number="5677" />

Invalid XML:
<person />

如果您没有默认值选项,但仍希望强制该属性存在,请使用#REQUIRED 关键字。


#默示

语法

<!ATTLIST element-name attribute-name attribute-type #IMPLIED>

示例

DTD:
<!ATTLIST contact fax CDATA #IMPLIED>

Valid XML:
<contact fax="555-667788" />

Valid XML:
<contact />

如果您不想强制作者包含属性,并且没有默认值选项,请使用#IMPLIED 关键字。


#固定的

语法

<!ATTLIST element-name attribute-name attribute-type #FIXED "value">

示例

DTD:
<!ATTLIST sender company CDATA #FIXED "Microsoft">

Valid XML:
<sender company="Microsoft" />

Invalid XML:
<sender company="91xjr" />

当您希望属性具有固定值而不允许作者更改它时,请使用#FIXED 关键字。如果作者包含另一个值,XML 解析器将返回错误。


枚举属性值

语法

<!ATTLIST element-name attribute-name (en1|en2|..) default-value>

示例

DTD:
<!ATTLIST payment type (check|cash) "cash">

XML example:
<payment type="check" />
or
<payment type="cash" />

当您希望属性值是一组固定的合法值之一时,请使用枚举属性值。