`
tianke66
  • 浏览: 187922 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论
阅读更多
DTD

文档类型定义

(Documnet 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 (第五行)定义 frome 元素为 "#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 实体引用:"&nbsp;"。这个“无折行空格”实体在 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,.....)>

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 。
分享到:
评论
3 楼 优游麦 2011-01-12  
其他的元素申明报一样的错误,是不是前面还要设置什么,求大侠解释
2 楼 优游麦 2011-01-12  
还有申明
<!ATTLIST %simpleType;
    name      %NCName; #IMPLIED
    final     %simpleDerivationSet; #IMPLIED
    id        ID       #IMPLIED
    %simpleTypeAttrs;> 
1 楼 优游麦 2011-01-12  
<!ELEMENT %simpleType; ((%annotation;)?, (%restriction; | %list; | %union;))>  这句代码报错不知道是怎么回事,说是需要定义元素类型或者元素内容,这边不是符合的吗?

相关推荐

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...

    DTD 总结 DTD 总结 DTD 总结

    **DTD(Document Type Definition)**是XML文档类型定义的缩写,它是一种规范,用于定义XML文档的结构和限制。DTD允许我们为XML文档创建一套预定义的规则,确保文档内容遵循特定的格式,便于数据交换和处理。下面将...

    DTD的CHM帮助文档

    **DTD(Document Type Definition)** 是XML(Extensible Markup Language)文档类型定义的缩写,它是XML规范的一部分,用于定义XML文档的结构和元素。在XML文档中,DTD的作用是确保文档内容遵循预设的规则,即所有...

    使用DTD验证XML文档

    使用DTD验证XML文档 一、 DTD的定义: a) DTD是Document Type Defintion的缩写,即文档类型定义。DTD用来描述XML文档的结构。 二、 DTD可能包含的内容: a) 元素的定义规则。 b) 元素之间的关系规则。 c) 属性的定义...

    sql-map-2.dtd和sql-map-config-2.dtd

    本文将深入探讨与“sql-map-2.dtd”和“sql-map-config-2.dtd”相关的知识点,以及它们在Ibatis中的作用。 Ibatis是一个轻量级的ORM(对象关系映射)框架,它允许开发者将SQL语句直接写在配置文件中,通过XML映射...

    DTD验证XML详解

    DTD(Document Type Definition)是XML的一个重要组成部分,它定义了XML文档的结构和规则,确保XML文档的一致性和合法性。本文将深入探讨DTD验证XML的概念、原理以及如何进行实践操作。 XML文档通过DTD来规定其元素...

    DTD 教程 DTD 实例

    **DTD(Document Type Definition)教程** DTD 是 XML(Extensible Markup Language)文档的结构定义工具,它用于描述 XML 文档的元素、属性、实体等结构,确保 XML 文档的合法性。DTD 的作用在于提供一种机制,使...

    Struts2的DTD配置文件struts-2.3.dtd

    为了在Eclipse这样的集成开发环境中获得代码提示和自动完成,我们需要引入DTD(文档类型定义)文件,例如`struts-2.3.dtd`。 DTD是一个XML规范,它定义了一组元素和属性,以及它们的结构和限制。`struts-2.3.dtd`为...

    DTD的定义、规则和编写

    ### DTD的定义、规则和编写 #### 一、DTD概述 **文档类型定义**(Document Type Definition, DTD)是一套关于标记语言的语法规则,主要用于定义XML文档的结构和内容。DTD作为XML 1.0规范的一部分,是XML文件验证的...

    struts2 配置dtd 自动提示

    为了在开发环境中获得更好的代码辅助和提示,我们需要使IDE(例如Eclipse)理解`struts.xml`文件的结构,这通常通过引用DTD(文档类型定义)来实现。 在标题和描述中提到的"struts2 配置dtd 自动提示"是指在Eclipse...

    使用DTD实现文档结构定义

    1.掌握DTD基本语法规范 2.掌握DTD对元素的声明 实验内容: 1.改正以下message.xml文档的语法错误,并将内部DTD改为外部DTD,并要求验证文档有效性。 &lt;!DOCTYPE myMessage [ &lt;!ELEMENT myMessage (message)&gt; &lt;!...

    struts+spring+mybatis+hibernate的dtd文件

    DTD(Document Type Definition)是XML文档类型定义,用于描述XML文档结构的一种规范。在Java Web开发中,Struts、Spring、MyBatis和Hibernate这四个框架各有其特定的配置文件,而这些配置文件有时会使用DTD来定义...

    hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd

    《深入理解Hibernate配置与映射:hibernate-configuration-3.0.dtd与hibernate-mapping-3.0.dtd解析》 在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-...

    mybatis-3-config/mapper.dtd 解决mybatis头文件报错

    然后打开eclipse -&gt;Window-&gt;prefenrence-&gt;XML-&gt;XML Catalog-&gt;User Specifiled Entreis-&gt;Add-&gt;Location(此处是你放dtd文件的位置例如:‪D:\mybatis\mybatis-3-config.dtd)-&gt;Key(如果更改config,此处应该是:-//...

Global site tag (gtag.js) - Google Analytics