最新的Web开发教程
 

DTD - 属性


在DTD中,属性声明与ATTLIST声明。


声明属性

属性声明的语法如下:

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

DTD example:

<!ATTLIST payment type CDATA "check">

XML example:

<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 属性值是固定的

A缺省属性值

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

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

在上面的例子中, "square"的元素被定义为具有一个空元素"width" CDATA类型的属性。 如果没有指定宽度,它具有的默认值为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="w3ii" />

当你想一个属性有一个固定的值,而不让笔者去改变它使用#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" />

当您希望属性值为一系列固定的合法值之一使用枚举的属性值。