导读: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的交互使用。

【HTML/XML 9】XML中的DTD文件的更多相关文章

  1. 向项目中添加dtd文件实现代码提示

    我们在编辑代码的过程中,有代码提示的编辑工具总是受到青睐. 本文将讲解怎么在eclipse中加入dtd文件实现代码提示.myeclipse同理 选择window,选择perferences,然后拉到下 ...

  2. eclipse中导入dtd文件实现xml的自动提示功能

    以mybatis为例 1.mybatis的xml文件头: (1)config文件: <?xml version="1.0" encoding="UTF-8" ...

  3. 【HTML/XML 10】XML文档中的Schema文件

    导读:DTD是对XML文档进行有效性验证的方法之一,事实上,继DTD之后,出现了用来规范和描述XML文档的第二代标准:Schema.Schema是DTD的继承,但是也有其不同的地方,它是真正的以独立的 ...

  4. XML中的DTD语法

    DTD(Document Type Definition),全称为文档类型定义. 文件清单:book.xml <?xml version="1.0" ?> <!D ...

  5. 自定义xml配置文件之dtd文件校验

    用了很多第三方库,也看了些源码,总是想如果自己写一个类似的库,读取xml配置文件(properties配置文件比较简单) 该如何给配置文件添加头,添加校验,因为xml配置文件相对于properties ...

  6. 在XML里的XSD和DTD以及standalone的使用3----具体使用详解

    本人亲自写的一个简单的测试例子 1.xsd定义 <?xml version="1.0" encoding="utf-8"?><xs:schem ...

  7. 应验log4j.xml时不能找到log4j.dtd

    原因分析:log4j.xml中使用log4j的DTD验证其格式的有效性"<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd&quo ...

  8. xml基础之二(XML结构【2】)DTD文档模版

    xml基础之二(XML结构[2])DTD文档模版 xml 模板 文档结构  我们知道XML主要用于数据的存储和传输,所以无论是自定义还是外部引用DTD模板文档,都是为了突出数据的存储规范.DTD(文档 ...

  9. dtd文件中写的引用实体被xml文件引用后无法在浏览器中显示的问题

    解决方案:把dtd文件由被xml文件外部引用改成被xml文件内部引用. 例子: 1.xml文件: <?xml version="1.0" encoding="UTF ...

随机推荐

  1. sudo gem install cocoapods

    在使用IOS_BaiduSDK的时候,需要用到cocoapods,所以就需要按照步骤继续着.但是在过程中会遇到一些问题: 1. sudo gem install cocoapods 运行这个报错 Ru ...

  2. BIP_开发案例03_将原有Report Builer报表全部转为XML Publisher形式(案例)

    2014-05-31 Created By BaoXinjian

  3. PLSQL_Oracle分区表和相应的分区索引管理和使用(案例)

    2014-08-22 Created By BaoXinjian

  4. 白书 4.1.2 模运算的世界 P291

    1.逆元 这里有个注意事项要说,就是当要求 (a-b)%m 的时候要注意不能直接 (a%m-b%m)%m 原因是得出的值有可能是负数,所以 (a%m-b%m+m)%m 才是正确的. //x,y是引用 ...

  5. Git的撤消操作 - 重置, 签出 和 撤消(转载)

    From:http://gitbook.liuhui998.com/4_9.html http://ihower.tw/blog/archives/2622 相较于SVN这种commit就推送到远端伺 ...

  6. Awk 实例

    AWK 是一种用于处理文本的编程语言工具.AWK 在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法.它的设计思想来源于 SNOBOL4 .sed .Marc Rochki ...

  7. javascript的关于刷新页面给出提示框的代码

    // 页面刷新事件 ,或者关闭事件的3中方法!测试都可以!参考官方文档: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHan ...

  8. zabbix入门到精通之Zabbix对linux主机的监控

    我们大概了解了怎么对台主机进行监控,主要步骤设计到添加主机,并且为主机添加监控项,这里主要为item,然后在item的基础上对item进行绘图并且通过screen的方式把不同的监控图像汇总到一张scr ...

  9. javascript最新深度克隆对象方法

    javascript最新深度克隆对象方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...

  10. 解决JSP 不解析EL表达式

    解决JSP 不解析EL表达式,jsp在使用EL表达式的时候发现它不被解析,而是直接以字符串的形式显示了出来,经过查阅资料和实践,终于得知了原因并找到了解决方案 原因是:在默认情况下,Servlet 2 ...