在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" />
当您希望属性值为一系列固定的合法值之一使用枚举的属性值。