导读:DTD是Document type definition(文档类型定义的缩写),是一套关于标记符的语法规则,它是XML文件的验证机制,数以XML文件的组成部分。XML文档是一种描述标记语言的语言,它可以由DTD来定义结构,DTD制定了文档的一系列规则,确保文档的一致性和有效性。本篇博客,就将具体介绍:什么是DTD,为什么用DTD,怎样用DTD。
一、什么是DTD
DTD是一套关于标记的语法规则,该规则详细地描述了一组XML文档的结构。DTD说明了在文档中可以使用哪些标记,哪些标记可以出现在其他标记中,哪些标记具有属性,使用的标记应该按什么次序出现等。
XML文档的解析器分为两类:一、解析器不会进行有效性的检查;二、需要进行有效性的检查。对于具备有效性检查的解析器,他将会根据相应的文件或存在于XML文档中的定义代码,对具体文档中使用的实例元素进行检查,以确定这些元素是否符合定义的格式,而DTD正是实现XML文档有效性验证的途径之一。
二、为什么要用DTD
2.2,不使用DTD的后果:
在编写XML文档时,由于应用程序的需求经常会发生改变,所以有时需要对所编写的XML文档结构加以改变,而文档结构改变时,就需要修改代码并添加新的元素,然而当应用程序执行出现了错误时,如果没有显示的文件资料,就无法可靠捕获XML文档中的错误,只能依靠程序顺利执行,当出现结果和预期不符时,就更难检测到错误。在这个时候,就需要依赖清晰、准确的语法规则文档:DTD。
2.2,使用 DTD的好处:
1,使用DTD可以确保XML文档的规则和验证文档数据的有效性;2,使用共同的DTD可以为某类XML文档提供统一的格式和相同的结构;3,使用共同的DTD可以保证在一定范围内,XML文档数据的交流和共享
4,应用程序设计人员根据DTD就能够知道对应的XML文档的逻辑结构,不必依赖具体的数据就能编写出对此类XML文档中的数据进行处理的应用程序。
三、DTD的使用方式
DTD共有四种使用方式,分别是:内部定义、外部引用、混合DTD、公用DTD
3.1,内部定义
<span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE 学生 [
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 学号 (#PCDATA)>
<!ELEMENT 性别 (#PCDATA)>
]>
<学生>
<姓名>Angel</姓名>
<学号>201601152224</学号>
<性别>女</性别>
</学生></span>
效果:
注意;standalone属性的默认值为no,表示引入外部的DTD格式。本次效果是yes,代表着使用内部DTD定义。
3.2,外部定义
DTD文档:
<span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT 学生 (姓名,学号,性别)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 学号 (#PCDATA)>
<!ELEMENT 性别 (#PCDATA)></span>
XML文档:
<span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE 学生 SYSTEM "TestDTD2.dtd">
<学生>
<姓名>Angel</姓名>
<学号>201601152224</学号>
<性别>女</性别>
</学生></span>
3.3,混合DTD(外部和内部结合使用)
当一个外部的DTD文档并不能包含XML文档中所有的的元素或者实体时,就得使用内部DTD进行声明定义。
3.4,公用的DTD
在DOCTYPE声明中,关键字并不是只有SYSTEM,它也并不是引入外部DTD的唯一方法,这个关键字主要用于引用一个作者或组织编写的众多XML文件中通用的DTD。另外一个DTD引入办法是使用关键字PUBLIC,它是由一个权威机构制定的,提供给特定行业或公众使用的DTD。语法如下:
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "外部DTD的URL">
实例:<!DOCTYPE 医药列表 PUBLIC "DTD名称" "http://www.Medicine.com/dtds/Mlist.dtd">
四、总结
DTD文档相当于是给XML提供了一种规则,HTML是使用预先确定的标记,而XML却可以使用未被预先确定的标记,但是为了规范和被浏览器理解,必须使用DTD定义标记规则定义。对于后面的几种使用方式,可以结合到CSS的应用进行理解,也可以使用函数的显示定义和隐式定义进行理解。接下来,是总结XML Schema文件以及XML和HTML的交互使用。