DTD - 属性
在DTD中,属性是用ATTLIST声明声明的。
声明属性
属性声明具有以下语法:
<!ATTLIST element-name attribute-name attribute-type attribute-value>
DTD 示例:
<!ATTLIST payment type CDATA "check">
XML 示例:
<payment type="check" />
属性类型可以是以下类型之一:
类型 | 描述 |
---|---|
CDATA | 值是字符数据 |
(en1|en2|..) | 值必须是枚举列表中的值 |
ID | 该值是唯一的id |
IDREF | 值是另一个元素的id |
IDREFS | 该值是其他ID的列表 |
NMTOKEN | 该值是有效的XML名称 |
NMTOKENS | 该值是有效XML名称的列表 |
ENTITY | 值是一个实体 |
ENTITIES | 值是实体列表 |
NOTATION | 值是表示法的名称 |
xml: | 该值是预定义的xml值 |
属性值可以是以下值之一:
值 | 解释 |
---|---|
value | 属性的默认值 |
#REQUIRED | 属性是必需的 |
#IMPLIED | 属性是可选的 |
#FIXED value | 属性值是固定的 |
默认属性值
DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
Valid XML:
<square width="100" />
在上面的实例中,"square"元素被定义为具有CDATA类型的"width"属性的空元素。如果未指定宽度,则默认值为0。
#REQUIRED
语法
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
实例
DTD:
<!ATTLIST person number CDATA #REQUIRED>
Valid XML:
<person number="5677" />
Invalid XML:
<person />
如果没有默认值的选项,但仍希望强制属性存在,请使用#REQUIRED关键字。
#IMPLIED
语法
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
实例
DTD:
<!ATTLIST contact fax CDATA #IMPLIED>
Valid XML:
<contact fax="555-667788" />
Valid XML:
<contact />
如果不想强制作者包含属性,并且没有默认值选项,请使用#impliced关键字。
#FIXED
语法
<!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="W3Schools" />
如果希望属性具有固定值而不允许作者更改它,请使用#FIXED关键字。如果作者包含另一个值,XML解析器将返回一个错误。
枚举属性值
语法
<!ATTLIST element-name attribute-name (en1|en2|..) default-value>
实例
DTD:
<!ATTLIST payment type (check|cash) "cash">
XML 示例:
<payment type="check" />
或
<payment type="cash" />
如果希望属性值是一组固定的合法值之一,请使用枚举属性值。