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

上传人:本田雅阁 文档编号:2543906 上传时间:2019-04-06 格式:PPT 页数:51 大小:966.01KB
返回 下载 相关 举报
经典介绍DTD和Schema及区别.ppt_第1页
第1页 / 共51页
经典介绍DTD和Schema及区别.ppt_第2页
第2页 / 共51页
经典介绍DTD和Schema及区别.ppt_第3页
第3页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《经典介绍DTD和Schema及区别.ppt》由会员分享,可在线阅读,更多相关《经典介绍DTD和Schema及区别.ppt(51页珍藏版)》请在三一文库上搜索。

1、,DTD和XML Schema,回顾,掌握XML语法规则 了解XML技术体系 了解XML应用方向 问题 什么是XML,为什么要用XML XML的内容有哪些 顺序:从文档上面到下面 什么叫有效的XML,目标,理解文档类型定义(DTD) 理解命名空间 理解Schema 使用Schema和DTD定义XML文档,概述,为什么要验证XML 什么叫有效的XML 如果一个XML文档规定其文档类型和数据结构的DTD或者Schema,并且与之关联,并且校验正确,则此文档是有效的 良好与有效关系 格式良好的XML文档,不一定是有效的XML文档。 有效的XML文档,则一定是格式良好的XML文档。 说明:在格式良好的

2、基础上,再看是否满足企业的特殊要求 XML验证技术 DTD Schema,文档类型定义DTD,DTD(Document Type Definition,文档类型定义)是一套标记的语法规则,它定义了元素、子元素、属性及其取值,规定了用户在DTD关联的XML文档中可以使用什么标记、各个标记出现的顺序以及标记的层次关系,并定义了实体。 对于一个DTD的定义,最关键的在于它内部的元素和属性的定义。一个DTD文档实际上就是元素定义的集合,而元素可能包含属性,也可能不包含属性。,使用DTD定义XML元素, 要点:包含符号和数据类型两部分。,元素内容的类型,示例,使用DTD定义XML元素的属性,说明: 回顾

3、定义表时字段的定义。 对比学习XML很重要。,属性类型及其含义,约束的四种形式,示例,DTD与XML文档关联形式,一个DTD文件可以与多个XML文档联系起来。这样,这些XML文档就具有相同的DTD模板,其元素、元素属性、元素排列顺序、元素内容都必须符合DTD定义的格式。该DTD文档可以根据用户的实际需求创建,以适应特定的应用业务领域。 将DTD与XML文档关联的方式有三种: 使用内部DTD 使用外部DTD 使用公共DTD XML解析器将使用DTD来解析XML文档。XML文档应该通过指令告诉解析器到哪里去寻找DTD。 XML文档类型声明出现在XML文档的序言部分,以字符串“,使用内部DTD, ,

4、使用外部DTD,如果某个DTD是共享的,即开放给多个XML文档作为公共文档,那么这些XML文档应该使用外部DTD。如果采用外部DTD的话,就需要有两个文档,第一个文档就是关于DTD的文档,第二个文档就是遵守DTD格式的内容文档。实际上,我们可以建立无穷多个遵守该DTD格式的文档。 在XML文档中关联外部DTD的语法格式为:,外部DTD示例,使用公共DTD,有些组织(例如W3C)和企业将其所定义的DTD公布出来,供需要的开发人员使用和参考。使用这些DTD的XML文档即使用了公共的DTD模板。其语法格式为: DTD名称与XML名称有所不同,可以包含字母、数字、空格等。如果一个DTD是一个ISO标准

5、,那么DTD名称应该以字符串“ISO”开始。如果一个非ISO组织同意该DTD,那么其名称以“+”开始。如果没有标准化组织同意该DTD,那么其名称以“-”开始。初始化字符串后面是一个双斜杠“/”,接着是DTD所有者的名称,然后又是双斜杠“/”,接着是描述该DTD的文字,最后还是一个双斜杠“/”,跟着ISO639语言标识符。比如,我们在前面学习过的定义过渡型XHTML1.0的DOCTYPE为:,使用DTD定义XML实体,内部实体: 外部实体,命名空间,当我们建立XML应用的时候,会为具体的行业应用创建特定的DTD,规定可用的元素。有时会出现下面的情况-两个同名的元素在不同的地方可能会有不同的含义。

6、 命名空间(Namespace)-对于每一套特定应用的DTD,给它一个独一无二的标志来代表,如果在XML文件中使用DTD中定义的元素,需将DTD的标志和元素名、属性连在一起使用,相当于指明了元素来自什么地方,这样就不会和其他同名元素混淆了 。在XML中,采用现成的、在全球范围唯一的“域名”作为命名空间,即用URL作为XML的命名空间。,xmlns:前缀= “命名空间URI “,命名空间示例,命名空间示例, 客户端网页编程 成都朗沃信息技术有限公司 肖继潮 机械工业出版社 2005年 500 50 JavaScript权威指南 老外 Apress 2004 ,XML Schema,XML Sch

7、ema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。 XML Schema规定XML文档实例的结构和每个元素/属性的数据类型。 Schema相对于DTD的明显好处是,XML Schema文档本身也是XML文档,而不是像DTD一样使用自成一体的语法。这就方便了用户和开发者,因为可以使用相同的工具来处理XML Schema和其他XML信息,而不必专门为Schema使用特殊工具。Schema简单易懂,懂得XML语法规则的人都可以立刻理解它。Schema的概念提出已久,但W3C的标准最近才出来,相应的应用支持尚未完善,但采用Schema已成为XML发展的一个

8、趋势。,Schema和DTD的区别,XML从SGML中继承了DTD,并用它来定义内容的模型,验证和组织元素。同时,它也有很多局限: DTD不遵守XML语法; DTD不可扩展; DTD不支持命名空间的应用; DTD没有提供强大的数据类型支持,只能表示很简单的数据类型。 Schema完全克服了这些弱点,使得基于Web的应用系统交换XML数据更为容易。下面是它所展现的一些新特性: Schema完全基于XML语法,不需要再学习特殊的语法; Schema能用处理XML文档的工具处理,而不需要特殊的工具; Schema大大扩充了数据类型,支持booleans、numbers、dates and times

9、、URIs、integers、decimal numbers和real numbers等; Schema支持原型,也就是元素的继承。如:我们定义了一个“联系人”数据类型,然后可以根据它产生“朋友联系人”和“客户联系”两种数据类型; Schema支持属性组。我们一般声明一些公共属性,然后可以应用于所有的元素,属性组允许把元素、属性关系放于外部定义、组合; 开放性。原来的DTD只能有一个DTD应用于一个XML文档,现在可以有多个Schema运用于一个XML文档。,思考,Schema更好,为什么还要学习DTD? 目前还有很多开源框架使用的是DTD 简单,清晰。 熟悉DTD,能够读懂Schema报错信

10、息 如: 验证ss01.xml. file:/e:/LOVODB/PPT2008/43/xml02/ss01.xml:8,13: Element lastname is not valid for content model: (firstname|lastname) XML文档ss01.xml无效(1 errors) Schema 目前越来越多的框架由DTD验证改为了Schema验证 Schemal已经成为一种发展趋势,XML Schema基础概念 1,预定义类型 派生类型,XML Schema基础概念2,Schema元素:简单类型和复杂类型 XML Schema规范中将元素分为两种类型:

11、简单类型元素:简单类型元素只能包含字符内容。这些字符可以被约束为特殊的预定义类型或派生类型。例如,可以指定一个简单元素的内容必须是日期、整数、字符串或者仅仅是一个字符或者一系列字符。 复杂类型元素:复杂类型元素是包含子元素内容或者属性的元素,XML Schema文档基本结构,一个简单的XML文档note.xml, 尹老师 肖老师 提醒 本周末不要忘记提醒我参加回忆 ,XMLSchema文档基本结构,在W3C XML schema规范中规定:所有的Schema文档都使用作为其根元素。因此,所有的XML schema文档都应该是如下的结构: 元素可以包含一些属性。一个XML schema声明看起来

12、经常以如下的形式出现:, , . . ,XMLSchema文档基本结构,在W3C XML schema规范中规定:所有的Schema文档都使用作为其根元素。因此,所有的XML schema文档都应该是如下的结构:, ,XMLSchema文档基本结构,元素可以包含一些属性。一个XML schema声明看起来经常以如下的形式出现:, . . ,Schema示例, 尹老师 肖老师 提醒 本周末请提醒我参加新闻发布会 ,Schema文档中出现的元素标记,使用XML Schema定义XML文档结构,最简单的Schema文档 含子元素的Schema文档 含子元素和孙元素的Schema文档 定义相同子元素的

13、数量 定义可选项的子元素 自定义简单类型 定义属性,最简单的Schema文档,首先,我们写出一个最简单的XML文档hello.xml: Hello World! 下面我们看分析定义这个XML文档。这个XML文档只有一个根元素greeting,而且该元素不含属性,无子元素,内容是字符串,它是一个典型的简单元素,其类型为预定义类型xsd:string。定义元素的语法为: 那么,定义XML文档hello.xml的XML Schema文档(hello.xsd)就是: ,含子元素的Schema文档,假设实例文档是如下的customer.xml: 朗沃教育 成都市人民东路88号物资大厦五楼 分析实例文档,

14、我们可以发现,元素含有两个子元素,它是一个复杂类型的元素,所以我们在Schema文档中采用complexType来定义该元素。元素的两个子元素和是两个简单元素,二者一次出现,我们用sequence表示子元素依次出现的顺序。因此,定义该实例文档的XML Schema文档customer.xsd为: ,含子元素和孙元素的Schema文档 ,现在我们给出一个更复杂的文档(customer.xml): 朗沃教育 四川 成都 人民东路88号物资大厦无路 在这个实例文档中,我们将地址分解成几个子元素。为此,我们需要一个更加复杂一点的Schema文档(address.xsd): ,含子元素和孙元素的Sche

15、ma文档 ,我们还可以采用ref元素来重新编写这个Schema文档address2.xsd , 朗沃教育 四川 成都 人民东路88号物资大厦无路 ,定义相同子元素的数量,先看这个简单的订购数据实例文档order.xml Accounting Book Taxation Book 假设元素,即每次的订购书目不能超过10种,那该怎么写这个Schema文档呢?这里要用到的maxOccurs属性。定义这个实例文档的XML Schema文档(order.xsd)为: 第6行中的maxOccurs属性为10,代表orderItem元素可以最大有10个。如果不设定元素个数,则可以用maxOccurs=“un

16、bounded“来定义。 类似,如果要定义最小值,可以使用minOccurs,例如: maxOccurs和minOccurs这两个属性的缺省值都是1。,定义可选项的子元素,假如上面的订书数据中,可以用书名或者书号任意一种订购,则实例文档可能如下(order2.xml): Accounting Book 7-5058-3496-7 这时,用XML Schema文档描述的话,我们就需要使用choice元素。下面的代码(order2.xsd)就是描述该XML文档的XML Schema文档: ,定义可选项的子元素 ,稍微修改一下订书数据的实例文档(order3.xml): Accounting Boo

17、k 2 7-5058-3496-7 这里假定值为1时,缺省。如何修改Schema文档呢?order3.xsd ,自定义简单类型,如果预定义类型还不能满足要求,怎么办呢?下面学习自定义简单类型。XML的扩展性充分体现在这里。 例如有如下的实例文档order4.xml: 7-5058-3496-7 5 这里,ID是一个标准的ISBN编码,我们如何定义这个ISBN编码呢? ,自定义简单类型,重新写Schema文档order4.xsd ,自定义简单类型,假如我们事先确定好ID只有3个,即只有3个ISBN是可选的,那怎么办?我们可以用enumeration元素来进行列举。 ,自定义简单类型,再来看订购量

18、quantity的值,如果我们设定其值必须在110之间,该怎么办呢?可以这些自定义一个简单类型。 其中,minInclusive、maxInclusive分别代表该类型的取值范围。,自定义简单类型,最终修改后的Schema文档如下(order4-1.xsd): ,定义属性,上面的order.xml实例文档中id变为的一个属性: 对此,我们在Schema文档中采用一个attribute来定义(order.xsd): 空元素 那么,实例文档中该属性值是必须的还是可有可无的呢?我们可以这样限制: 这里我们将id属性类型作为一种自定义数据类型idType。而且,用attribute元素的use属性来定

19、义是否是必须的属性。required是必须值,optional是可选值,prohibited是无属性值。那么对于属性的缺省值,我们怎么定义呢?例如: 我们还可以用attribute元素的另一个属性default来定义: ,定义属性,我们可以重新写出一个Schema文档(order2.xsd): 上面的属性我们定义我们还可以采用属性组的办法来重新改写Schema文档(order3.xsd): ,完整的订书order.xml的Schema文档,学习方法要求,说明: 回顾定义表时字段的定义。 对比数据库的知识来学习XML方法很有效。 能够手工书写DTD代码很重要。 能够看懂Schemal定义很重要。

20、 能够用工具书写DTD代码很重要。,总结,结构完整的XML文档是指符合XML规则的文档。 合法的XML文档,不但要求结构完整,而且要求符合DTD的验证。 DTD用来规定XML文档的语法结构,使得解析器能够理解XML文档的内容。 SYSTEM关键字代表DTD文件是一个外部文件,也就是解析器会根据SYSTEM后面的说明到外部去寻找这个DTD文件。 如果一个元素的CONTENT被声明为EMPTY的话,表示该元素不能包含任何子元素和文本。 ANY表示该元素其中可以包含任何本身有效的元素内容,也就是说,它能够包含在DTD其他位置已经声明过的元素。 PCDATA表明该元素可以包含任何字符数据,但是不能在其

21、中包含任何子元素。 Defaultvalue属性表示为属性提供一个默认的值。 Implied属性表示如果该元素的实例中没有指定该元素的值的话,就忽略该属性。 Required属性用来告诉XML解析程序,该元素的所有实例都必须有该属性的值,就像数据表中某一个字段不允许为空一样。 Enumerated属性几乎和JAVA中的枚举变量一样,我们事先定义好一些值,该属性的值必须匹配所列出的这些值。 命名空间允许我们在一个文档中结合不同的元素和属性定义,并指明这些元素和属性的定义来自哪里。 Schema是另一种文档类型定义,它遵循xml的语言规范。 Schema是可扩展的,支持命名空间,可以在一个xml文档中使用多个Schema。 Schema支持更多的数据类型以及更多的元素类型。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1