在 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" />
当您希望属性值是一组固定的合法值之一时,请使用枚举属性值。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!