📜  DTD-语法(1)

📅  最后修改于: 2023-12-03 14:40:54             🧑  作者: Mango

DTD-语法

DTD(Document Type Definition,文档类型定义)是一种用于定义(说明)XML 或 SGML 文档结构和元素的文档类型定义语言。

DTD 的语法比较简单且易于学习,是初学者入门 XML 的首选。

DTD 声明

DTD 在 XML 文档中采用 DOCTYPE 声明来引用,有两种声明方式:

  1. 内部 DTD 声明

    内部 DTD 声明在 XML 文档中使用 <!DOCTYPE> 标签定义,并将 DTD 定义嵌入在文档的头部中。示例:

    <!DOCTYPE 根元素名称 [
      <!-- DTD 声明内容 -->
    ]>
    
  2. 外部 DTD 声明

    外部 DTD 声明将 DTD 定义放在独立的文件中,并使用 SYSTEM 或 PUBLIC 关键字来声明。示例:

    <!DOCTYPE 根元素名称 SYSTEM "DTD 文件的 URL">
    
DTD 元素定义

DTD 中可以定义元素、实体、注释和特殊字符。这里着重介绍元素的定义方式。

在 DTD 中,元素定义使用 ELEMENT 关键字,语法如下:

<!ELEMENT 元素名称 元素类型>

其中,元素类型分为四种:

  1. EMPTY:表示元素为空,不包含任何内容。
  2. ANY:表示元素包含任何内容,包括其他标记。
  3. #PCDATA:表示元素包含文本内容,但不能包含其他标记。
  4. 元素名称:表示元素包含指定名称的子元素。

例如,定义一个包含标题和内容的文章元素:

<!ELEMENT 文章 (标题, 内容)>
<!ELEMENT 标题 #PCDATA>
<!ELEMENT 内容 #PCDATA>

其中,文章元素包含标题和内容两个子元素,标题和内容都只能包含文本内容。

DTD 属性定义

在 DTD 中,可以使用 ATTLIST 定义元素的属性,语法如下:

<!ATTLIST 元素名称 属性名称 属性类型 默认值>

其中,属性类型分为几种:

  1. CDATA:表示属性是字符数据类型。
  2. ENUMERATION:表示属性取值在预定义的枚举值中。
  3. ID:表示属性是一个唯一标识符。
  4. IDREF:表示属性引用另一个元素的 ID。
  5. IDREFS:表示属性引用多个元素的 ID。
  6. NMTOKEN:表示属性是一个命名符号。
  7. NMTOKENS:表示属性是多个命名符号的集合。

例如,定义一个图片元素,包含 src 和 alt 两个属性:

<!ELEMENT 图片 EMPTY>
<!ATTLIST 图片
          src    CDATA   #REQUIRED
          alt    CDATA   #IMPLIED>

其中,src 属性必须声明,alt 属性可以省略。

以上是 DTD 的基本语法和常用元素定义方式,希望对初学者了解 DTD 有所帮助。