跳至主要內容

DTD


DTD

介绍

XML(eXtensible Markup Language)的 DTD(Document Type Definition)是用于定义 XML 文档结构的一种规范。DTD 描述了 XML 文档中允许出现哪些元素、元素的顺序、元素的属性以及属性值的类型等信息。

DTD 可以分为内部 DTD 和外部 DTD 两种类型。内部 DTD 直接嵌入在 XML 文档中,而外部 DTD 则可以使用 SYSTEM 或 PUBLIC 关键字引用一个独立的 DTD 文件,使得多个 XML 文档可以共用一个 DTD。

DTD 使用一系列的语法规则来定义 XML 文档的结构,其中包括:

  • 元素声明:定义元素的名称、内容和属性等信息。
  • 属性声明:定义元素的属性名称和属性值的类型等信息。
  • 实体声明:定义 XML 文档中使用的实体,包括字符实体和参数实体。
  • 注释声明:用于注释 XML 文档中的各项声明。

DTD 的优点是能够限制 XML 文档的结构和内容,使得 XML 文档更加严谨和规范。但是 DTD 的缺点也很明显,它的语法比较繁琐,特别是对于复杂的文档结构,DTD 定义的规则也比较难以维护。因此,在实际应用中,DTD 逐渐被 XML Schema 取代。

DTD元素和属性

DTD 中常用的元素和属性包括:

  1. 元素相关的声明:
  • <!ELEMENT>:定义元素的结构,包括元素名称、子元素、文本内容和混合内容等。
  • <!ATTLIST>:定义元素的属性,包括属性名称、属性类型、默认值和是否必需等。
  • <!ENTITY>:定义实体,包括字符实体和外部实体。
  • <!NOTATION>:定义符号集,用于描述非 XML 数据类型。
  1. 实体相关的声明:
  • <!ENTITY>:定义实体,包括字符实体和外部实体。
  • <!ENTITY %>:定义参数实体。
  • <!ENTITY % name "value">:定义参数实体,其中 name 是参数实体的名称,value 是参数实体的值。
  1. 注释相关的声明:
  • <!-- ... -->:注释声明,用于注释 XML 文档中的各项声明。
  1. 其他声明:
  • <!DOCTYPE>:声明文档类型,包括文档类型名称和引用的 DTD 文件。
  • <!CDATA>:声明文本内容为字符数据,不进行解析。

这些元素和属性都是 DTD 中常用的部分,通过使用它们可以更加精确地定义 XML 文档的结构和内容,提高 XML 文档的可靠性和可维护性。

示例

下面是一个使用 DTD 定义的简单 XML 示例:

<!DOCTYPE catalog [
  <!ELEMENT catalog (book+)>
  <!ELEMENT book (title, author, price)>
  <!ELEMENT title (#PCDATA)>
  <!ELEMENT author (#PCDATA)>
  <!ELEMENT price (#PCDATA)>
  <!ATTLIST book id CDATA #REQUIRED>
]>
<catalog>
  <book id="001">
    <title>XML Programming</title>
    <author>John Doe</author>
    <price>29.99</price>
  </book>
  <book id="002">
    <title>Java Programming</title>
    <author>Jane Smith</author>
    <price>39.99</price>
  </book>
</catalog>

在这个示例中,DTD 定义了一个名为 catalog 的元素,它包含一个或多个 book 元素。每个 book 元素包含一个 title 元素、一个 author 元素和一个 price 元素,以及一个名为 id 的属性。除了 id 属性外,titleauthorprice 元素都只包含文本内容。

注意,在 XML 文档的开头,我们使用 <!DOCTYPE> 声明引用了 DTD 定义,而且在 XML 文档中的每个元素都符合 DTD 定义中所规定的结构和属性要求。这样可以确保 XML 文档的结构和内容符合特定的规范,从而提高了文档的可靠性和可维护性。

上次编辑于:
贡献者: Neil