在 DTD(Document Type Definition)中,属性声明用于定义 XML 元素可以包含的属性及其规范。属性声明提供了有关元素属性的信息,包括属性的名称、数据类型、默认值等。以下是有关 DTD 属性声明的基本概念和语法:

1. 基本属性声明:

属性声明的一般形式如下:
<!ATTLIST element_name attribute_name attribute_type default_value>

其中:
  •  element_name 是元素的名称。

  •  attribute_name 是属性的名称。

  •  attribute_type 定义了属性的数据类型,如 CDATA、ID、IDREF 等。

  •  default_value 是属性的默认值。


例如,下面的声明表示 <book> 元素有一个 category 属性,类型为 CDATA,没有默认值:
<!ATTLIST book category CDATA #IMPLIED>

2. 属性数据类型:

在属性声明中,可以指定属性的数据类型,常用的数据类型包括:

  •  CDATA(Character Data): 表示属性可以包含任意字符数据。
  <!ATTLIST book title CDATA #REQUIRED>

  •  ENUM(Enumeration): 表示属性的值必须是预定义的一组值中的一个。
  <!ATTLIST button type (submit|reset|button) "submit">

  •  ID: 表示属性值是唯一标识符。
  <!ATTLIST student id ID #REQUIRED>

  •  IDREF: 表示属性值是其他元素的唯一标识符。
  <!ATTLIST book author IDREF #IMPLIED>

  •  ENTITY: 表示属性值是实体的名称。
  <!ATTLIST book author ENTITY #IMPLIED>

3. 默认值:

在属性声明中,可以指定属性的默认值,包括:

  •  #REQUIRED: 表示属性是必需的,必须在元素中提供。
  <!ATTLIST book title CDATA #REQUIRED>

  •  #IMPLIED: 表示属性是可选的,可以在元素中省略。
  <!ATTLIST book category CDATA #IMPLIED>

  •  #FIXED value: 表示属性的默认值是固定的。
  <!ATTLIST button type (submit|reset|button) #FIXED "submit">

  •  "default_value": 直接指定属性的默认值。
  <!ATTLIST book price CDATA "0.00">

4. 多个属性声明:

一个元素可以有多个属性声明,每个属性声明使用逗号分隔:
<!ATTLIST book
  title CDATA #REQUIRED,
  author CDATA #REQUIRED,
  price CDATA #IMPLIED>

在上述例子中,<book> 元素可以包含 title、author 和 price 三个属性。

这些是关于 DTD 属性声明的基本概念和语法。DTD 提供了一种简单但有限的方式来定义 XML 文档的结构和规范,特别适用于较为简单的应用场景。在更复杂的情况下,可能会选择使用 XML Schema 或 Relax NG 这样的替代技术。


转载请注明出处:http://www.pingtaimeng.com/article/detail/12194/XML