ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# DTD - 属性 在 DTD 中,属性通过 ATTLIST 声明来进行声明。 ## 声明属性 属性声明使用下列语法: ``` <!ATTLIST element-name attribute-name attribute-type attribute-value> DTD 实例: <!ATTLIST payment type CDATA "check"> XML 实例: <payment type="check" /> ``` 以下是 **属性类型**的选项: | 类型 | 描述 | | --- | --- | | CDATA | 值为字符数据 (character data) | | (_en1_&#124;_en2_&#124;..) | 此值是枚举列表中的一个值 | | ID | 值为唯一的 id | | IDREF | 值为另外一个元素的 id | | IDREFS | 值为其他 id 的列表 | | NMTOKEN | 值为合法的 XML 名称 | | NMTOKENS | 值为合法的 XML 名称的列表 | | ENTITY | 值是一个实体 | | ENTITIES | 值是一个实体列表 | | NOTATION | 此值是符号的名称 | | xml: | 值是一个预定义的 XML 值 | 默认**属性值**可使用下列值 : | 值 | 解释 | | --- | --- | | 值 | 属性的默认值 | | #REQUIRED | 属性值是必需的 | | #IMPLIED | 属性不是必需的 | | #FIXED value | 属性值是固定的 | ## 默认属性值 ``` DTD: <!ELEMENT square EMPTY> <!ATTLIST square width CDATA "0"> 合法的 XML: <square width="100" /> ``` 在上面的例子中,"square" 被定义为带有 CDATA 类型的 "width" 属性的空元素。如果宽度没有被设定,其默认值为0 。 ## #REQUIRED ### 语法 ``` <!ATTLIST element-name attribute-name attribute-type #REQUIRED> ``` ### 实例 ``` DTD: <!ATTLIST person number CDATA #REQUIRED> 合法的 XML: <person number="5677" /> 合法的 XML: <person /> ``` 假如您不希望强制作者包含属性,并且您没有默认值选项的话,请使用关键词 #IMPLIED。 ## #IMPLIED ### 语法 ``` <!ATTLIST element-name attribute-name attribute-type #IMPLIED> ``` ### 实例 ``` DTD: <!ATTLIST contact fax CDATA #IMPLIED> 合法的 XML: <contact fax="555-667788" /> 合法的 XML: <contact /> ``` 假如您不希望强制作者包含属性,并且您没有默认值选项的话,请使用关键词 #IMPLIED。 ## #FIXED ### 语法 ``` <!ATTLIST element-name attribute-name attribute-type #FIXED "value"> ``` ### 实例 ``` DTD: <!ATTLIST sender company CDATA #FIXED "Microsoft"> 合法的 XML: <sender company="Microsoft" /> 非法的 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" /> or <payment type="cash" /> ``` 如果您希望属性值为一系列固定的合法值之一,请使用列举属性值。