`
JAVA天地
  • 浏览: 686181 次
  • 性别: Icon_minigender_1
  • 来自: 太原
文章分类
社区版块
存档分类
最新评论
阅读更多

转自:http://baike.baidu.com/view/147436.htm

目录
1、DTD 简介
2、DTD - XML 构建模块
3、DTD - 元素
4、DTD - 属性
DTD的优势和缺陷
  DTD
  文档类型定义
  (Document Type Definition)
  DTD 是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。
  DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。
  XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能够成为数据交换的标准,因为不同的公司只需定义好标准的DTD,各公司都能够依照DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。
  DTD文件是一个ASCII的文本文件,后缀名为.dtd。
  =============================================================

1、DTD 简介

  文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
  DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
  内部的 DOCTYPE 声明
  假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:
  *****************************************************************************
  <!DOCTYPE 根元素 [元素声明]>
  *****************************************************************************
  带有 DTD 的 XML 文档实例
  *****************************************************************************
  <?xml version="1.0"?>
  <!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to (#PCDATA)>
  <!ELEMENT from (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body (#PCDATA)>
  ]>
  <note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend</body>
  </note>
  *****************************************************************************
  以上 DTD 解释如下:
  !DOCTYPE note (第二行)定义此文档是 note 类型的文档。
  !ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"
  !ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型
  !ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型
  !ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型
  !ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型
  外部文档声明
  假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:
  <!DOCTYPE 根元素 SYSTEM "文件名">
  这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD:
  *****************************************************************************
  <?xml version="1.0"?>
  <!DOCTYPE note SYSTEM "note.dtd">
  <note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
  </note> 这是包含 DTD 的 "note.dtd" 文件:
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to (#PCDATA)>
  <!ELEMENT from (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body (#PCDATA)>
  *****************************************************************************
  为什么使用 DTD?
  通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
  通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。
  而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
  您还可以使用 DTD 来验证您自身的数据。

2、DTD - XML 构建模块

  XML 以及 HTML 文档的主要构建模块是类似 <body>....</body> 这样的标签。
  XML 文档构建模块
  所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:
  元素
  属性
  实体
  PCDATA
  CDATA
  下面是每个构建模块的简要描述。
  元素
  元素是 XML 以及 HTML 文档的主要构建模块。
  HTML 元素的例子是 "body" 和 "table"。XML 元素的例子是 "note" 和 "message" 。元素可包含文本、其他元素或者是空的。空的 HTML 元素的例子是 "hr"、"br" 以及 "img"。
  实例:
  *********************************************************
  <body>body text in between</body>
  <message>some message in between</message>
  *********************************************************
  属性
  属性可提供有关元素的额外信息。
  属性总是被置于某元素的开始标签中。属性总是以名称/值的形式成对出现的。下面的 "img" 元素拥有关于源文件的额外信息:
  *********************************************************
  <img src="computer.gif" />
  *********************************************************
  元素的名称是 "img"。属性的名称是 "src"。属性的值是 "computer.gif"并且可以用样式来控制大小等显示效果。由于元素本身为空,它被一个 " /" 关闭。
  实体
  实体是用来定义普通文本的变量。实体引用是对实体的引用。
  大多数同学都了解这个 HTML 实体引用:" "。这个“无折行空格”实体在 HTML 中被用于在某个文档中插入一个额外的空格。
  当文档被 XML 解析器解析时,实体就会被展开。
  PCDATA
  PCDATA 的意思是被解析的字符数据(parsed character data)。
  可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
  PDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
  文本中的标签会被当作标记来处理,而实体会被展开。
  不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、&lt; 以及 &gt; 实体来分别替换它们。
  CDATA
  CDATA 的意思是字符数据(character data)。
  CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

3、DTD - 元素

  在一个 DTD 中,元素通过元素声明来进行声明。
  声明一个元素
  在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:
  <!ELEMENT 元素名称 类别>
  或者
  <!ELEMENT 元素名称 (元素内容)>
  空元素
  空元素通过类别关键词EMPTY进行声明:
  <!ELEMENT 元素名称 EMPTY>
  只有 PCDATA 的元素
  只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明:
  <!ELEMENT 元素名称 (#PCDATA)>
  带有任何内容的元素
  通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:
  <!ELEMENT 元素名称 ANY>
  带有子元素(序列)的元素
  带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:
  <!ELEMENT 元素名称 (子元素名称 1)>
  或者
  <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
  

相同的元素至少出现一次的声明


  语法格式为:
  <!ELEMENT element-name (child-name+)>
  例:
  <!ELEMENT note (message+)>
  例中的+是指子元素message必须在被包含的note元素里出现一次或者多次。
  

相同的元素不出现或者多次出现的声明


  语法格式为:
  <!ELEMENT element-name (child-name*)>
  例:
  <!ELEMENT note (message*)>
  例中的*是指子元素message能够在被包含的note元素里不出现或者出现多次。

4、DTD - 属性

  在 DTD 中,属性通过 ATTLIST 声明来进行声明。
  声明属性
  属性声明拥使用下列语法:
  <!ATTLIST 元素名称 属性名称 属性类型 默认值>
  以下是属性类型的选项:
  类型 描述
  CDATA 值为字符数据 (character data)
  (en1|en2|..) 此值是枚举列表中的一个值
  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 。

DTD的优势和缺陷

  DTD的优势
  每一个XML文档都可携带一个DTD,用来对该文档格式进行描述,测试该文档是否为有效的XML文档。既然DTD有外部和内部之分,当然就可以为某个独立的团体定义一个公用的外部DTD,那么多个XML文档就都可以共享使用该DTD,使得数据交换更为有效。甚至在某些文档中还可以使内部DTD和外部DTD相结合。在应用程序中也可以用某个DTD来检测接收到的数据是否符合某个标准。
  对于XML文档而言,虽然DTD不是必须的,但它为文档的编制带来了方便。加强了文档标记内参数的一致性,使XML语法分析器能够确认文档。如果不使用DTD来对XML文档进行定义,那么XML语法分析器将无法对该文档进行确认。
  元素的定义
  根元素的声明
  每个XML文档都只有一个根元素,其它的子元素都包含在该根元素中。因此在DTD中对根元素的声明是必不可少的。根元素声明的一般形式如下:
  <!DOCTYPE root[
  <!-- 子元素 --> ]>
  <!-- 文件体 -->
  DOCTYPE是“document type”(文档类型)的简写,DOCTYPE声明必须放在文档最顶部,在所有代码和标识之上,DOCTYPE声明是必不可少的关键组成部分。DTD语法要求DOCTYPE必须要大写,而且DOCTYPE和元素之间必须要有空格隔开。如在以上代码中DOCTYPE和根元素root之间要有空格隔开。
  DTD的缺陷
  利用DTD验证有效性的解析器,就能够立即对文档的完整性进行可靠的检查。DTD虽然比较实用,但DTD也有不少的缺陷。
分享到:
评论

相关推荐

    XML与DTD介绍

    DTD(Document Type Definition)是XML文档的一种验证工具,它定义了XML文档的结构和规则。通过DTD,我们可以确保XML文档符合预设的结构,从而保证数据的一致性和有效性。DTD包含元素定义、属性定义以及元素和属性的...

    JS操作XML中DTD介绍及使用方法分析

    本文实例讲述了JS操作XML中DTD介绍及使用方法。分享给大家供大家参考,具体如下: 什么是DTD,为什么需要DTD? DTD为英文Document Type Definition,中文意思为“文档类型定义”。DTD肩负着两重任务:一方面它帮助你...

    DTD的CHM帮助文档

    9. **相关工具**:介绍用于创建、编辑和查看DTD以及处理XML文档的工具,如XML编辑器、DTD生成器等。 10. **最佳实践**:分享编写和使用DTD的最佳实践,以提高XML文档的质量和维护性。 通过这个CHM文件,学习者可以...

    XML的DTD教程

    ### XML的DTD教程 ...以上是对XML的DTD教程进行了较为详细的介绍,涵盖了DTD的基础概念、作用、声明方式以及元素定义等内容。通过学习这些内容,可以帮助读者更好地理解和使用DTD来定义和验证XML文档。

    Eclipse XML自动提示DTD文件下载

    以下将详细介绍这个过程: 1. **什么是DTD**: DTD是一种XML文档的规范,它定义了XML文档的合法元素、属性以及它们之间的关系。通过DTD,我们可以确保XML文档遵循一定的结构,避免语法错误。 2. **Eclipse中的XML...

    经典介绍DTD和Schema及区别.ppt

    经典介绍DTD和Schema及区别。通过阅读此文档,读者可以对dtd和schema有一个更加清晰的认识。

    配置dtd文件步骤

    本文将详细介绍如何配置Mapper文件以及Configuration/DTD文件的具体步骤。 #### 二、配置DTD文件 配置DTD文件主要分为以下几个步骤: ##### 第一步:设置XML Catalog 1. **打开Eclipse或相应IDE**:首先,你需要...

    第一节 XML快速入门-01

    XML DTD介绍 拥有正确语法的XML被称为"形式良好"的XML。通过DTD验证的XML是"合法"的XML。 DTD(Document Type Definition)是用于定义XML文档结构的语言。DTD可以指定XML文档中的元素、属性和实体。 在XML中,DTD...

    Eclipse XML自动提示DTD文件(hibernate struts2.0 log4j).dtd的下载

    这篇名为“Eclipse XML自动提示DTD文件(hibernate struts2.0 log4j).dtd的下载”的博客文章,可能介绍了如何在Eclipse中配置XML编辑器以支持对特定DTD文件的自动提示,比如与Hibernate、Struts2.0和Log4j相关的...

    2020-2021上半学期XML期末考题1

    2. DTD 介绍:DTD(Document Type Definition)是用于定义 XML 文档结构的语言。它规定了 XML 文档中的元素、属性和实体等组成部分。 3. XML 元素:XML 元素是 XML 文档的基本组成部分,包括标签、内容和属性等。 ...

    HTML 80 道面试题及答案.docx

    四、DTD 介绍 DTD (Document Type Definition 文档类型定义)是一组机器可读的规则,它们定义 XML 或 HTML 的特定版本中所有允许元素及它们的属性和层次关系的定义。在解析网页时,浏览器将使用这些规则检查页面的...

    xml dtd html 源程序

    这些文件按照章节或主题被组织成不同的部分,如"ch_6"到"ch_1",可能代表了一本逐步介绍这些技术的教科书或者教程的各个章节。 1. XML基础知识:XML的基本语法包括元素、属性、注释、处理指令等。学习XML首先要理解...

    xml的基本实现,dtd, schema实验

    通过以上介绍,我们可以看到XML、DTD和Schema各自的特点和用途。XML是一种强大的数据格式,而DTD和Schema则是用于验证XML文档结构的有效工具。学习这些基础知识对于理解和使用XML文档非常重要。

    阿里前端第一期1

    5. **DTD介绍** DTD(Document Type Definition)是定义XML或HTML文档结构的规范,它规定了元素、属性以及它们之间的关系。 6. **行内元素与块级元素的区别** - 行内元素(如`&lt;span&gt;`、`&lt;a&gt;`)通常不会占据整个...

    第二节 DTD快速入门-01

    在本节课中,我们将学习 DTD(Document Type Definition)的快速入门,包括 DTD 声明类型、DTD 数据类型、DTD 实体介绍和 XML 注入产生原理。 DTD 声明类型 DTD 声明类型是指在 XML 文档中使用 DTD 的一种方式。...

    Describable Textures 纹理图像数据数据集

    Describable Textures Dataset (DTD) 是一个纹理图像数据,包括 5640张 图像,按照人类感知分为 47类,每一类 120张 图像,分辨率从300x300到640x640不等,图像从Google和Flickr网站获取。

Global site tag (gtag.js) - Google Analytics