您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 药学 > 第03讲 使用DTD声明XML元素
软件学院常州信息职业技术学院.Net教研室XML软件学院第03讲使用DTD定义XML元素2020年1月30日星期四主讲:郭永洪E-mail:yh_guo@126.com软件学院目标•知识目标–DTD的基本结构–XML内部DOCTYPE声明DTD–XML外部文档声明DTD•能力目标–学会使用DTD定义XML元素–学会在XML中使用DTD–学会使用DTD验证XML2020年1月30日星期四软件学院任务•任务1:XML中声明DTD•任务2:DTD中声明元素•任务3:在IE中使用DTD验证XML2020年1月30日星期四软件学院DTD简介2020年1月30日星期四DTD(DataTypeDefination)文档类型定义,定义合法的XML文档结构。DTD规定XML文档中所使用的元素、实体、元素的属性、元素与实体之间的关系等逻辑结构。软件学院为什么要使用DTD2020年1月30日星期四1、通过DTD,每一个XML文件均可携带一个有关其自身格式的描述。2、通过DTD,独立的团体可一致地使用某个标准的DTD来交换数据。3、应用程序也可使用某个标准的DTD来验证从外部接收到的数据。4、用户可以使用DTD来验证自定义的数据。软件学院任务1:XML中声明DTD2020年1月30日星期四任务1-1:内部的DOCTYPE声明!DOCTYPE根元素[元素声明]DTD被包含在XML源文件中,它应当通过下面的语法包装在一个DOCTYPE声明中:软件学院任务1:XML中声明DTD2020年1月30日星期四?xmlversion=1.0encoding=UTF-8?!DOCTYPEnote[!ELEMENTnote(to,from,heading,body)!ELEMENTto(#PCDATA)!ELEMENTfrom(#PCDATA)!ELEMENTheading(#PCDATA)!ELEMENTbody(#PCDATA)]noteto小布什/tofrom奥巴马/fromheading善意的提醒/headingbody嘿!离开白宫时别忘记把钥匙留下!/body/note案例1-1:便签DTD定义和XML内部DOCTYPE声明软件学院任务1:XML中声明DTD•!DOCTYPEnote(第二行)定义此文档是note类型的文档,DOCTYPE不是DTD的内容。•!ELEMENTnote(第三行)定义note元素有四个元素:“to、from、heading、body”,并规定了XML中这四个元素出现的顺序。•!ELEMENTto(第四行)定义to元素为“#PCDATA”类型。•!ELEMENTfrom(第五行)定义from元素为#PCDATA类型•!ELEMENTheading(第六行)定义heading元素为#PCDATA类型•!ELEMENTbody(第七行)定义body元素为#PCDATA类型•DOCTYPE、ELEMENT、PCDATA需大写。2020年1月30日星期四案例1-1:分析软件学院任务1:XML中声明DTD•PCDATA(parsedcharacterdata)是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。•CDATA(characterdata)是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。2020年1月30日星期四PCDATA和CDATA的区别软件学院任务1:XML中声明DTD2020年1月30日星期四?xmlversion=1.0encoding=UTF-8?messagenoteto小布什/tofrom奥巴马/fromheading善意的提醒/headingbody嘿!离开白宫时别忘记把钥匙留下!/body/notenoteto奥巴马/tofrom小布什/fromheading回复:善意的提醒/headingbody哦!希望您做一个优秀的白宫主人!/body/note/message训练1-1:为下面的XML编写一个内部声明的DTD软件学院任务1:XML中声明DTD2020年1月30日星期四假如DTD位于XML源文件的外部,那么它应通过下面的语法被封装在一个DOCTYPE定义中:!DOCTYPE根元素SYSTEM文件名任务1-2:外部DTD文档声明(使用SYSTEM)软件学院任务1:XML中声明DTD2020年1月30日星期四文件名:note.dtd?xmlversion=1.0encoding=UTF-8?!ELEMENTnote(to,from,heading,body)!ELEMENTto(#PCDATA)!ELEMENTfrom(#PCDATA)!ELEMENTheading(#PCDATA)!ELEMENTbody(#PCDATA)案例1-2:便签DTD定义和XML外部DTD文档声明?xmlversion=1.0encoding=UTF-8?!DOCTYPEnoteSYSTEMnote.dtdnoteto小布什/tofrom奥巴马/fromheading善意的提醒/headingbody嘿!离开白宫时别忘记把钥匙留下!/body/note软件学院任务1:XML中声明DTD2020年1月30日星期四训练1-2:改写训练1-1中的DTD为外部文档声明(使用SYSTEM关键字)软件学院任务1:XML中声明DTD2020年1月30日星期四任务1-3:外部DTD文档声明(使用PUBLIC)!DOCTYPE根元素PUBLICDTD名文件名软件学院任务1:XML中声明DTD2020年1月30日星期四1)要表明出身:如果DTD是由ISO发布的标准DTD,则名称前要冠以“ISO”字符串;如果DTD是由ISO之外的标准组织发布的标准DTD,名称前要冠以“+”字符;如果不是标准的组织,或者个人所发布的DTD,则名称前要冠以“-”字符。2)要表明拥有者:在名称中要包含一个表明DTD所有者的字符串。3)要表明主要内容:在名称中要包含一个表明DTD主要内容或者类别的字符串。4)要表明所使用的语言:在名称的尾部要包含一个表明所使用的语言标志(英语用EN说明,法文用FR说明、德文用DE说明、中文用ZH说明等),该语言标志必须是由IS0639所定义过的标准标志。5)分隔符:上述内容之间,要以两个斜线符号“//”分隔。6)顺序:上述内容在名称中出现的顺序与上述的顺序相同。DTD名的说明:软件学院任务1:XML中声明DTD2020年1月30日星期四案例1-3:XML外部DTD文档声明(使用PUBLIC)?xmlversion=1.0encoding=UTF-8?!DOCTYPEnotePUBLIC-//Mr.guo//note//ENnote.dtdnoteto小布什/tofrom奥巴马/fromheading善意的提醒/headingbody嘿!离开白宫时别忘记把钥匙留下!/body/note这个名称的意思是:这是一个由非标准组织发布的、属于Mr.guo的、关于便签信息并使用英文标记编写的DTD文件。软件学院任务1:XML中声明DTD2020年1月30日星期四训练1-3:改写训练1-2中的外部文档声明(使用PUBLIC)软件学院任务2:DTD中声明元素2020年1月30日星期四1、声明只有PCDATA的元素!ELEMENT元素名称(#PCDATA)例子:!ELEMENTto(#PCDATA)2、声明只出现一次的元素!ELEMENT元素名称(子元素名称)例子:!ELEMENTnote(body)软件学院任务2:DTD中声明元素2020年1月30日星期四3、声明带有子元素(序列)的元素!ELEMENT元素名称(子元素名称1,子元素名称2,.....)例子:!ELEMENTnote(to,from,heading,body)4、声明空元素!ELEMENT元素名称EMPTY例子:!ELEMENTbrEMPTY软件学院任务2:DTD中声明元素2020年1月30日星期四5、声明带有任何内容的元素!ELEMENT元素名称ANY例子:!ELEMENTnoteANY6、声明最少出现一次的元素!ELEMENT元素名称(子元素名称+)例子:!ELEMENTmessage(note+)软件学院任务2:DTD中声明元素2020年1月30日星期四7、声明出现零次或多次的元素!ELEMENT元素名称(子元素名称*)例子:!ELEMENTmessage(note*)8、声明出现零次或一次的元素!ELEMENT元素名称(子元素名称?)例子:!ELEMENTmessage(note?)软件学院任务2:DTD中声明元素2020年1月30日星期四9、声明选择性元素!ELEMENT元素名称(子元素名称1|子元素名称2)例子:!ELEMENTnote(to,from,header,(content|body))10、声明混合性内容例子:!ELEMENTnote(#PCDATA|to|from|header|body)*软件学院任务3:在IE中使用DTD验证XML2020年1月30日星期四?xmlversion=1.0encoding=gb2312?!DOCTYPEnoteSYSTEMnote.dtdnoteto小布什/tofromm奥巴马/frommheading善意的提醒/headingbody嘿!离开白宫时别忘记把钥匙留下!/bodypsIloveyou/ps/note案例3-1:使用IE的XML解析器验证下面的文档文件名:outer_note_dtd_error.xml软件学院任务3:在IE中使用DTD验证XML2020年1月30日星期四scripttype=text/javascriptvarxmlDoc=newActiveXObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.validateOnParse=truexmlDoc.load(outer_note_dtd_error.xml)document.write(br/ErrorCode:)document.write(xmlDoc.parseError.errorCode)document.write(br/ErrorReason:)document.write(xmlDoc.parseError.reason)document.write(br/ErrorLine:)document.write(xmlDoc.parseError.line)/script案例3-1:验证代码关闭验证:false软件学院任务3:在IE中使用DTD验证XML2020年1月30日星期四训练3:使用IE浏览器验证您编写的XML文档软件学院2020年1月30日星期四
本文标题:第03讲 使用DTD声明XML元素
链接地址:https://www.777doc.com/doc-3394481 .html