复旦大学高级web技术课件6Web上的数据标准XML-DTD

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

高级高级WbWb技术技术高级高级WebWeb技术技术WebWeb上的数据标准上的数据标准XMLXMLWebWeb上的数据标准上的数据标准XMLXML——DTDDTD本次课程内容本次课程内容„DTD„DTD„DTD简介„文档类型声明„文档类型声明„DTD声明-ELEMENT„DTD声明-ATTLIST„DTD声明-ATTLISTDTD简介DTD简介„文档类型定义(DocumentTypeDefinition,DTD)起源于文档类定义(yp,)起源于SGML中更复杂的DTD,是一组能融合在XML数据中或者以单独的文档存在的声明,用于对XML文档进行描述和校验,以保证XML文档的有效性保证XML文档的有效性„验证与有效性„验证与有效性„验证:确认XML数据遵循特定的预定的结构从而使应用程序可以以可预知的方式来接收数据验证方法主要包括文档类型定义(DTDfiii„验证方法主要包括文档类型定义(DocumentTypeDefinition,DTD)和XML模式„有效性检查将一个特定的文档与一个DTD进行比较验证。用这种方法对或模式检查过的文档被为是有效的文档对照DTD或模式检查过的文档被认为是“有效的(valid)”文档。„良构性(Well-form)是有效的前提DTD简介DTD简介„RichardTobin的基于RXP的以Web为宿主的XML„RichardTobin的基于RXP的以Web为宿主的XML结构完整性和合法性检查程序DTD简介DTD简介„DTD使用非XML语法的文法来定义一些规则,这些规则描述使用非语法的文法来定义规则,规则描了XML的结构和语法,以及被允许出现的XML数据内容„DTD优点„可以促使不同的应用程序可以读取相互的文件,实现共享每个XML文档都可携带对其本身格式的说明独立享.每一个XML文档都可携带对其本身格式的说明;独立的人员小组可统一使用共同的DTD来交换数据;„应用程序可使用一种标准的DTD来核实将要处理的数据„应用程序可使用种标准的DTD来核实将要处理的数据是否有效。DTD简介DTD简介„DTD本身是可选的本身是可的„XML文档可以只是一个正规的文档„还有其他可以用来保证XML文档有效性的技术:„Schema„XML-Data„……„DTD的内容和特征:„对数据结构进行描述和确认„将这些数据结构传送给其他应用程序和人员„限制元素内容限制属性类型和值提供默认值„限制属性类型和值,提供默认值„对可置换内容--实体(Entity)进行描述和定义„可以有条件节„可以有条件节DTD简介DTD简介„DTD结构:结构„一个文档只能与一个DTD相关联,但是一个DTD可以分成两部分:内部子集和外部子集„内部子集被包含于XML文档中„外部子集可以存放在以dtd为后缀名的独立文件中当内部子集和外部子集存在声明冲突时内部子集的„当内部子集和外部子集存在声明冲突时,内部子集的声明覆盖外部子集的声明„外部子集和内部子集的选择:„外部子集和内部子集的选择:„一般情况尽量使用外部子集,便于修改和复用„下面情况下使用内部子集:„为了使用已经存在但不能完全满足我们需要的DTD,通过修改和扩充该外部DTD„在DTD开发过程中进行测试DTD简介DTD简介„一个简例„个简例„greetingxml:„greeting.xml:?xmlversion=1.0?GREETINGHelloXML!/GREETING„greeting.dtd:!ELEMENTGREETING(#PCDATA)DTD简介DTD简介„有效的文档(usegreeting.dtd)有效的文档(usegreeting.dtd)GREETINGvariousrandomtextbutnomarkup/GREETING„无效的文档GREETINGsometagrandomtet/sometagGREETINGsometagrandomtext/sometagsomeEmptyTag//GREETING文档类型声明文档类型声明„文档类型声明(DocumentTypeDeclaration)将„文档类型声明(DocumentTypeDeclaration)将XML文档与DTD关联起来„文档类型声明出现在文档的prolog中,在XML声明文档类型声明出现在文档的prolog中,在XML声明之后以及根元素之前„文档类型声明包含或者指向一个DTD,但在DTD中不能再包含文档类型声明„语法:„!DOCTYPEdoc_elem[SYSTEM|PUBLIC][identifier][location][internalsubset]docelemXML文档的根元素„doc_elem:XML文档的根元素文档类型声明内部DTD文档类型声明-内部DTDXML声明?xmlversion=“1.0”standalone=“yes”?文挡类型说明DTD声明!DOCTYPEGREETING[!ELEMENTGREETING(#PCDATA)]GREETINGHelloXML!/GREETING文挡类型说明DTD声明GREETINGHelloXML!/GREETING„DTD可以直接包含在使用该DTD的文档内„文档类型声明„文档类型声明„文档类型声明开始于标记!DOCTYPE,结束于标记].记]„DTD:!ELEMENTGREETING(#PCDATA)„根元素:GREETING„根元素:GREETING文档类型声明外部DTD文档类型声明-外部DTD„外部DTD独立存在于另一个文件中,从一个或多个外外部DTD独立存在于另个文件中,从个或多个外部URL链接到XML文档中„XML的一个重要特点来自于公共DTDs,能在不同的XML文档中共享这些DTDs文档类型声明外部DTD文档类型声明-外部DTD„私有DTDs„私有DTDs„由个人或者工作组使用,而不是公开发布.„语法(使用SYSTEM关键字):„语法(使用SYSTEM关键字):!DOCTYPEroot_element_nameSYSTEM“DTD_URL”„必须在后面的DTD_URL部分指明外部DTD的URL!DOCTYPEToyscoSYSTEMhttp://....!DOCTYPEToyscoSYSTEMfile:///....„不能在这个部分的URL中使用字符#„不能在这个部分的URL中使用字符#!DOCTYPEToyscoSYSTEMhttp://..../1.dtd#part1文档类型声明外部DTD文档类型声明-外部DTD„公用DTDs„用于更加广泛的组织,可作为一个工业界标准,如ISO,或者IEEE,可以标准化公用DTDs„语法:„语法:!DOCTYPEroot_element_namePUBLICFPIURL„FPI(Formalpublicidentifier,正式公用标志符)有四个域组成:„第一个域指定DTD到一个正式的标准的链接。对于自定义DTD,„第个域指定DTD到个正式的标准的链接。对于自定义DTD,这个域应该是短横线“-”;对于一个非标准团体认可的,使用“+”;如果是正式的标准,则使用该标准的应用(如ISO/IEC13449:2000)第个域指定对这个DTD负责维护的机构或者个人的名称„第二个域指定对这个DTD负责维护的机构或者个人的名称„第三个域指出描述的文档的类型,昀好加上一个惟一的类型标识符号,如昀新的版本号第四个域说明DTD使用的语言(如EN表示英语)„第四个域说明DTD使用的语言(如EN表示英语)„FPI中的各个域以双斜线“//”分开!DOCTYPEDOCUMENTPUBLIC“-//starpowder//CustomXMLVersion1.0//EN“““DTD声明DTD声明„整个DTD可以分为内部子集与外部子集,而每个子集又是由零条到多条基本DTD声明构成的„语法:„!keywordparam1param2…paramN„!keyword中不能有空格基本的四个关键字为:„基本的四个关键字为:„ELEMENT用于声明元素与子元素„ATTLIST用于声明属性与默认值„ENTITY用于声明各种实体„NOTATION用于描述非XML内容DTD声明ELEMENTDTD声明-ELEMENT„语法:„!ELEMENTnamecontent_category或者!ELEMENTname(content_model)cardinality„name是被描述的元素名,必须为合法XML名字„name是被描述的元素名,必须为合法XML名字„后面参数描述了name元素可以包含那些内容和/或子元素„元素的内容可以分为下面五种情况:ANY(任意)„ANY(任意)„任何格式正规的XML数据„EMPTY(无)name元素为空元素只允许属性存在„name元素为空元素,只允许属性存在„纯文本:包含任何文本字符数据,但是不包含任何子元素„纯元素:只包含子元素,但是不包含任何文本内容混合既可以包含子元素也可以包含文本内容„混合:既可以包含子元素,也可以包含文本内容„前两种类型可以使用语法的第一种形式,后三种类型使用第二种语法形式DTD声明ELEMENTDTD声明-ELEMENT„没有integer,floatingpoint,date,或者其他数据类没有integer,floatingpoint,date,或者其他数据类型定义„元素的声明次序是没有关系的?xmlversion=1.0encoding=UTF-8?!DOCTYPEDOCUMENT[!DOCTYPEDOCUMENT[!ELEMENTfilesEMPTY!ELEMENTDOCUMENT(files)]DOCUMENTfiles/files/DOCUMENTDTD声明ELEMENTDTD声明-ELEMENT„ANY类型:„ANY类型:„要谨慎使用,其对于name元素内部内容没有任何规定定„Forexample:!ELEMENTcatalogANYDTD声明ELEMENTDTD声明-ELEMENT„EMPTY类型:„EMPTY类型:„定义空元素类型„Forexample:大小写敏感„Forexample:„!ELEMENTBREMPTY„Inuse:use„BR/DTD声明ELEMENTDTD声明-ELEMENT„内容模型用于给后三种类型元素指明内容的结构内容模用于给后种类元素指明内容的结构„ANY和EMPTY类型不允许使用任何内容模型„内容模型基本语法是子元素名列表和/或由圆括号括起的#PCDATA关键字#PCDATA关键字„通过()可以将他们组成混合片断„可以使用逗号“”来间隔各个片断表示各个片断是顺序出现的„可以使用逗号,来间隔各个片断,表示各个片断是顺序出现的„可以使用|来间隔各个片断,表示各个片断是选择关系的„可以用基数操作符来定义片断在内容模板里出现的次数„可以嵌套例子!ELEMENTname(#PCDATA)„例子()!ELEMENTname((child1,child2)|(child3,child4))!ELEMENTname(#PCDATA|child1|child2)*DTD声明ELEMENTDTD声明-ELEMENT„纯文本类型:(#PCDATA)纯文本类型(#)„Forexample:!ELEMENTyear(#PCDATA)„valid:year1999/yearyear1999C.E./yearyearTheyearofourLordonethousand,ninehundred,andninety-nine/year„Invalid:yearthJ/thmonthJanuary/monthmonthFebruary/month/ye

1 / 63
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功