一,什么是DTD?
1,XMl是一种元标记语言,是描叙语言的语言,定义标记的语法结构,从而生成新标记。而DTD则是为新标记建立文档并进行规范说明。
也就是说XML定义标记的语法结构是通过DTD来定义,并指定文档结构的规范,而XML文档来使用标记。
2,自描述数据的规范。
二,DTD的作用
1,DTD定义了文档中的元素(标记和属性)和实体,以及相互关系。数据和结构分离。
2,通过DTD验证XML文档的有效性。DTD为解析器提供了解析XML文档的依据。所以每个XML文档必须指定对于哪个DTD有效。
三,DTD的结构
1,元素的声明:使用元素声明来声明XML文档中的元素
⑴,带有数据的元素:
<! ELEMENT 元素名 (数据类型)>
数据类型:
#CDATA:指元素包含不通过解析器解析的字符数据。特殊字符和保留字不需要转义。
#PCDATA:指元素包括解析器可解析字符数据。特殊字符和保留字需要转义才可以通过解析器。
ANY:元素可以包含任何声明类型的子元素和字符数据。
⑵,带有子元素的元素:
<! ELEMENT 元素名 (子元素1名,子元素2名)>
多个子元素用逗号隔开。
在文档中的顺序和定义中的顺序一致。
子元素可以有自己的子元素。
①相同元素只出现一次:
<! ELEMENT 元素名 (子元素)>
②相同元素至少出现一次:+
<! ELEMENT 元素名 (子元素+)>
③相同元素出现零次或多次:*
<! ELEMENT 元素名 (子元素*)>
④相同元素出现零次或一次:?
<! ELEMENT 元素名 (子元素?)>
⑶ ,空元素:
<! ELEMENT 元素名 (EMPTY)>
空元素可以有属性
⑷,混合声明
组可以是序列或选择子元素和/或子组:
①序列
<! ELEMENT A (B)> : 元素A由单个子元素B组成.
<! ELEMENT A (B, C)> :元素A由子元素B和C组成.
<! ELEMENT A (B, (C | D), E> :元素A由子元素B ,E和选择子组(C或D中之一)组成.
②选择 子元素和/或子组
<! ELEMENT A (B | C)>:元素A由子元素选择子组(B或C)组成.
<! ELEMENT A (B | C | (D, E))>:元素A由包括序列子组(D和E)的选择(B或C或D,E之一)组成.
2,属性的声明
⑴空属性
<! ATTTLIST 元素名 EMPTY>
⑵非空属性
<! ATTLIST 元素名 属性名 属性类型 属性值>
属性值:
①,Default属性值:指定一个默认值
<! ATTLIST 元素名 属性名 属性类型 "默认值" >
DTD示例:
<! ATTLIST 售价 货币单位 CDATA "人民币">
XML示例:
<售价 货币单位 = "人民币">10.90</售价>
②,Implied属性值:可以不提供该属性,该属性也没有默认值。
<! ATTLIST 元素名 属性名 属性类型 #IMPLIED >
DTD示例:
<! ATTLIST 售价 货币单位 CDATA #IMPLIED>
XML示例:
<售价>10.90</售价>
③,Required属性值:必须提供该属性,但可以没有默认值。
<! ATTLIST 元素名 属性名 属性类型 #REQUIRED >
DTD示例:
<! ATTLIST 售价 货币单位 CDATA #REQUIRED>
XML示例:
<售价 货币单位 = "美元">10.90</售价>
④,Fixed属性值:使属性具有固定值,不可以更改。
<! ATTLIST 元素名 属性名 属性类型 #FIXED "固定值">
DTD示例:
<! ATTLIST 售价 货币单位 CDATA #FIXED "人民币">
XML示例:
<售价 货币单位 = "人民币">10.90</售价>
属性类型:
①,Enumerated属性类型:使默认值成为一组固定值中之一。
<! ATTLIST 元素名 属性名 (固定值A|固定值B|...) 默认固定值之一>
DTD示例:
<! ATTLIST 售价 货币单位 ("人民币"|"美元"|"欧元") "人民币">
XML示例:
<售价 货币单位 = "欧元">10.90</售价>
②,ID和IDREF属性类型
1,ID:用于搜索某个元素的特定实例,每个元素都可以具有ID类型的属性。
<! ATTLIST 元素名 属性名 ID 属性值>
DTD示例:
<! ATTLIST 售价 支付方式 ID #REQUIRED>
XML示例:
<售价 ID = "BOOK1">10.90</售价>
<售价 ID = "BOOK2">10.90</售价>
<售价 ID = "BOOK3">10.90</售价>
2,IDREF:指向一个元素,引用其他元素中的一个元素。
<! ATTLIST 元素名 属性名 IDREF 属性值>
DTD示例:
<! ATTLIST 售价 货币单位 ID #REQUIRED>
<! ATTLIST 售价 货币单位 IDREF #IMPLIED>
<! ATTLIST 售价 货币单位 CDATA #IMPLIED>
XML示例:
<售价 ID = "BOOK1" 货币单位 = "人民币">10.90</售价>
<售价 ID = "BOOK2" IDREF = "BOOK1"></售价>
③,IDREFS属性类型
指向多个元素ID,用空格分开。用于指向XML文档中的相关元素列表。
<! ATTLIST 元素名 属性名 IDREFS 属性值>
四,使用DTD
1,内部DTD
XML声明后在XDOCTYPE声明中编写内部DTD。
<! DOCTYPE 根元素名 [
元素声明
。。。
]>
2,外部DTD
编写DTD文件,扩展名为DTD,在XML文档DOCTYPE声明中添加DTD引用,告诉解析器外部DTD信息,
<! DOCTYPE 根元素名 SYSTEM "DTD文件名.dtd">
3,DTD中的内部实体和外部实体和
参见:XML系列:XML文档结构 中的实体;
4,DTD中的参数实体
先用内部DTD声明,把参数实体设置为元素名 ,在XML文件中引用 外部DTD验证。
DTD文件
...
<! ENTITY %实体名 "字符数据">
<! ELEMENT 元素名 ( %实体名)>
<! ELEMENT %实体名 (子元素)>
...
XML文件
...
<! DOCTYPE 根元素名 SYSTEM “DTD文件名.dtd”[
<! ENTITY %实体名 "替换实体名的元素名">
]>
...
例子:不同元素的XML共同关联一个DTD文件
DTD文件
...
<! ENTITY %element "e">
<! ELEMENT root ( %element)>
<! ELEMENT %element (name,sex,。。。)>
...
XML文件1
...
<! DOCTYPE root SYSTEM “DTD文件名.dtd”[
<! ENTITY %element "student">
]>
<root>
<student>
<name>张三学生</name>
...
<student>
</root>
XML文件2
...
<! DOCTYPE root SYSTEM “DTD文件名.dtd”[
<! ENTITY %element "teatcher">
]>
<root>
<teatcher>
<name>王五老师</name>
...
<teatcher>
</root>
分享到:
相关推荐
a) DTD是Document Type Defintion的缩写,即文档类型定义。DTD用来描述XML文档的结构。 二、 DTD可能包含的内容: a) 元素的定义规则。 b) 元素之间的关系规则。 c) 属性的定义规则。 三、 DTD的作用: a) DTD使每个...
DTD是文档类型定义的英文缩写,包含在文档类型声明中,它定义了某种文档类型的所有规则。简单来说,DTD的作用就是定义允许哪些或者不允许哪些内容在文档中出现。在DTD中,用户可以控制文档类型的所有元素、属性以及...
DTD教程由浅入深讲述了什么是DTD,如何写DTD文件,怎样使用DTD文件,怎样演变为schema,DTD和schema的联系和区别,schema的好处,以及上车吗的使用
DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文 档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的...
testng使用的testng.xml文档的文档类型定义文件,可用于核对xml文件的文档结构及合法元素
第四章:文档类型定义 DTD(Document Type Definition) 第五章:在NetScape 和IE 中的XML 第六章:微软的XML 解释器 第七章:XML DOM 第八章:XSL - The Style Sheet Language of XML(XML 的样式表语言) 第九章:...
主要介绍了XML中的DTD文档类型定义,是XML入门学习中的基础知识,需要的朋友可以参考下
要使用DTD进行有效性检验,就要使用文档类型定义声明指定DTD。文档类型声明位于XML声明之后,根元素之前。如果dtd文档位于本机,可用路径名直接指出dtd文档的位置。 由于XML可自定义标签,所以每个人定义的标签集...
XML标签的自定义功能非常强大,比如本文将要讲解的DTD(Document Type Definition)就带给人们一种面向对象般的感觉,well,下面就来看一下XML中的DTD文件类型定义完全解析
掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...
第一章:在学习XML之前你应该掌握什么 2 第二章:怎么使用XML 3 第三章:XML的语法 4 第四章:文档类型定义 DTD(Document Type Definition) 6 第五章:在NetScape和IE中的XML 8 第六章:微软的XML...
XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。 XML Schema: 定义可出现在文档中的元素 定义可出现在文档中的属性 定义哪个元素是子元素 定义子元素的次序 定义子元素的数目 定义元素是否为空,或者...
第8章 文档类型定义和合法性 8.1 文档类型定义 8.2 文档类型声明 8.3 根据DTD的合法性检验 8.4 列出元素 8.5 元素声明 8.6 DTD中的注释 8.7 在文档间共享通用的DTD 8.8 本章小结 第9章 实体和...
该软件实现了各种最先进的算法,用于 XML 模式定义和文档类型定义的算法学习。 给定一组或单个 XML 实例,它可以通过算法推断描述 XML 实例的模式。 生成的模式具有高质量和人类可读性。 用法 了解工具类型的使用...
这篇文章说明了如何创建XML“文档类型定义(DTD)”和格式正确定义明确的XML文件,这些文件能够由您选择的XML语法分析器进行确认。虽然不必在产生的每个 XML文件中都包含DTD,但这样做将会使您的生活大为轻松。DTD...
掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...
掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...
DTD解析器,对XML文档类型定义DTD文件的相关解析,适合JAVA开发
1.6.2 文档类型定义 1.6.3 数据建模 1.6.4 文档对象模型 1.6.5 XML 简单API 1.6.6 命名空间和模式 1.6.7 链接和查询 1.6.8 转换XML 1.6.9 XML和数据库 1.6.10 服务器到服务器 1.6.11 电子商务与XML 1.6.12...
方式二:调用外部文档类型定义,需要写一个DTD文档 <?xml version="1.0" standalone="no"?> <!DOCTYPE studinfo SYSTEM "studinfo1.dtd"> 注意点: (1)standalone="no" (2)注意dtd文件的路径 2)DTD的结构 ...