xml中dtd

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

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

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

资源描述

第3章文档类型定义DTD•DTD与XML文档•定义元素及其后代•定义元素的属性1DTD与XML文档(1)为什么需要文档类型定义(DTD)?XML文档的基本要求是必须满足格式良好(WellFormed)的要求。格式良好的XML文档是非常简单的。如何根据需要对XML文档进行限制?如何公布一个XML文档的结构?如何重用XML文档的数据?为了解决这些问题,就得需要DTD来解决。什么是文档类型定义(DTD)?DTD描述了一个标记语言的语法和词汇表,也就是定义了可以在XML文档中出现的元素、这些元素出现的次序、它们可以如何相互嵌套以及XML文档结构的其它详细信息。DTD引入有效的XML文档一个“有效的(Valid)”XML文档既是“格式良好”的,又必须遵守文档类型描述DTD中定义的种种规定。DTD=DocumentTypeDefinition1DTD与XML文档(2)内部DTD:最简单的使用DTD的方法是在XML文档的内部分加入一个DTD描述。加入的位置是紧接在XML处理指示之后。?xmlversion=“1.0”encoding=“GB2312“standalone=”yes”?!DOCTYPE根元素名[元素描述]根元素名XML数据/根元素名这样,我们就定义了一个文件,它以DOCTYPE中规定的根元素名作为其根元素的名字。例3-1:内部DTD1DTD与XML文档(3)?xmlversion=1.0encoding=GB2312standalone=no?!DOCTYPE联系人列表[!ELEMENT联系人列表(联系人)*!ELEMENT联系人(姓名,ID,公司,EMAIL,电话,地址)!ELEMENT地址(街道,城市,省份)!ELEMENT姓名(#PCDATA)!ELEMENTID(#PCDATA)!ELEMENT公司(#PCDATA)!ELEMENTEMAIL(#PCDATA)!ELEMENT电话(#PCDATA)!ELEMENT街道(#PCDATA)!ELEMENT城市(#PCDATA)!ELEMENT省份(#PCDATA)]联系人列表联系人姓名张三/姓名ID001/ID公司A公司/公司EMAILzhang@aaa.com/EMAIL电话(010)62345678/电话地址街道五街1234号/街道城市北京市/城市省份北京/省份/地址/联系人联系人姓名李四/姓名ID002/ID公司B公司/公司EMAILli@bbb.org/EMAIL电话(021)87654321/电话地址街道南京路9876号/街道城市上海/城市省份上海/省份/地址/联系人/联系人列表1DTD与XML文档(4)外部DTD:将DTD置于XML文档之外的文件中。主要用于引用一个作者或组织所编写的众多XML文件中通用的DTD。?xmlversion=1.0“encoding=GB2312standalone=no?!DOCTYPE根元素名SYSTEM外部DTD文件的URL根元素名XML数据/根元素名例3-2:外部DTD1DTD与XML文档(5)?xmlversion=1.0encoding=GB2312standalone=no?!DOCTYPE联系人列表SYSTEMfclml.dtd联系人列表联系人姓名张三/姓名ID001/ID公司A公司/公司EMAILzhang@aaa.com/EMAIL电话(010)62345678/电话地址街道五街1234号/街道城市北京市/城市省份北京/省份/地址/联系人联系人姓名李四/姓名ID002/ID公司B公司/公司EMAILli@bbb.org/EMAIL电话(021)87654321/电话地址街道南京路9876号/街道城市上海/城市省份上海/省份/地址/联系人/联系人列表fclml.dtd:?xmlversion=1.0encoding=GB2312?!ELEMENT联系人列表(联系人)*!ELEMENT联系人(姓名,ID,公司,EMAIL,电话,地址)!ELEMENT地址(街道,城市,省份)!ELEMENT姓名(#PCDATA)!ELEMENTID(#PCDATA)!ELEMENT公司(#PCDATA)!ELEMENTEMAIL(#PCDATA)!ELEMENT电话(#PCDATA)!ELEMENT街道(#PCDATA)!ELEMENT城市(#PCDATA)!ELEMENT省份(#PCDATA)1DTD与XML文档(6)公用DTD:它是一个由权威机构制订的,提供给特定行业或公众使用的外部DTD。引用公共DTD的形式为:!DOCTYPE根元素PUBLIC“DTD标识名外部DTD的URL例:!DOCTYPEDOCUMENTPUBLIC“-//W3C//DTDHTML4.0//EN”“”这个“DTD标识名”的命名规则和XML文件的命名规则稍有不同。ISO的以ISO开头,改进的非ISO以+开头,未改进的非ISO的以-开头。后面由多个双斜线组成://所有者//类型描述//语言//版本。例:“-//W3C//DTDHTML4.0//EN”;“-//IETF//ENTITIESLatin1//EN”;“-//W3C//DTDHTML//EN//4.1”1DTD与XML文档(7)IEXMLTOOL是微软的IE插件,其功能是在IE中对XML文档进行有效性检查和浏览XSLT输出的代码。•从下面的网址下载iexmltls.exe:–=D23C1D2C-1571-4D61-BDA8-ADF9F6849DF9&displaylang=en–点击iexmltlx.exe解压到一个文件夹中–鼠标右键点击上述文件夹中的.inf的文件进行安装•使用iexmltls:–用IE打开XML文档–在打开的IE窗口上点击鼠标右键弹出下拉菜单–选择其中的“ValidateXML”2定义元素及其后代(1)元素的声明:元素声明不但说明了每个XML文件中可能存在的元素,给出了元素的名字,而且给出了元素的具体类型。一个XML元素可以为空,也可以是一段纯文本,还可以有若干个子元素,而这些子元素同时又可以有它们的子元素。DTD正是通过元素之间的父子关系,描述了整个文件的结构关系。元素的声明形式为:!ELEMENT元素名元素内容描述元素内容可分为如下的3个类型:简单型:元素内容是可解析的字符数据(ParsedCharacterData,PCDATA),即不含有子元素的文本。复合型:元素的内容含有其它元素,既有子元素。混合型:元素的内容既有文本数据又有子元素。2定义元素及其后代(2)简单型元素的声明:!ELEMENT元素名(#PCDATA)空元素的声明:!ELEMENT元素名EMPTY例如:!ELEMENTHREMPTY不限定元素内容的声明:(不推荐使用)!ELEMENT元素名ANY2定义元素及其后代(3)例:?xmlversion=1.0encoding=GB2312standalone=“yes?!DOCTYPE联系人[!ELEMENT联系人ANY!ELEMENT姓名(#PCDATA)!ELEMENTID(#PCDATA)!ELEMENT公司(#PCDATA)!ELEMENT电话(#PCDATA)!ELEMENTEMAIL(#PCDATA)]联系人姓名张三/姓名ID001/ID公司A公司/公司电话(010)62345678/电话EMAILzhang@aaa.com/EMAIL/联系人2定义元素及其后代(4)复合型元素的声明,即定义元素及其子元素:DTD尽管要求严格,但也有它的灵活性。使用正则表达式,我们就可以描述父元素与子元素之间非常复杂的关系。下面就是描述子元素的正则式:元字符含义+出现一次或多次*出现零次或多次?不出现或出现一次()一组要共同匹配的表达式|OR,或,AND,要求严格遵从顺序要求2定义元素及其后代(5)要求顺序的子元素DTD定义(,:有序)!ELEMENT联系人(姓名,EMAIL)!ELEMENT姓名(#PCDATA)!ELEMENTEMAIL(#PCDATA)下面的XML片断是有效的:联系人姓名张三/姓名EMAILzhang@aaa.com/EMAIL/联系人而下面这个XML片断不是有效的:联系人EMAILzhang@aaa.com/EMAIL姓名张三/姓名/联系人2定义元素及其后代(6)重复元素DTD定义(+:至少出现一次)!ELEMENT联系人(姓名,EMAIL+)!ELEMENT姓名(#PCDATA)!ELEMENTEMAIL(#PCDATA)下面的XML片断是有效的:联系人姓名张三/姓名EMAILzhang@aaa.com/EMAILEMAILzhang@hotmail.com/EMAILEMAILzhang@yahoo.com/EMAIL/联系人而下面这个XML片断不是有效的:联系人姓名张三/姓名/联系人2定义元素及其后代(7)DTD定义(*:出现任意次)!ELEMENT联系人(姓名,EMAIL*)!ELEMENT姓名(#PCDATA)!ELEMENTEMAIL(#PCDATA)成组元素:一组元素放在括号内DTD定义(元素组)!ELEMENT联系人(姓名,EMAIL)+!ELEMENT姓名(#PCDATA)!ELEMENTEMAIL(#PCDATA)符合这个DTD的XML片断可以是:联系人姓名张三/姓名EMAILzhang@aaa.com/EMAIL姓名李四/姓名EMAILli@bbb.org/EMAIL姓名王五/姓名EMAILwang@ccc.org/EMAIL/联系人2定义元素及其后代(8)OR或:符号“|”描述了一个OR操作。!ELEMENT联系人(姓名,(电话|EMAIL))!ELEMENT姓名(#PCDATA)!ELEMENT电话(#PCDATA)!ELEMENTEMAIL(#PCDATA)“联系人”元素应该有一个“姓名”子元素,在此之后还应该有一个“电话”或一个“EMAIL”元素,但不能同时有“电话”和“EMAIL”。下面都是无效的XML片段联系人姓名张三/姓名/联系人联系人姓名张三/姓名电话12345678/电话EMAILzhang@yahoo.com/EMAIL/联系人联系人EMAILzhang@aaa.com/EMAIL姓名张三/姓名/联系人2定义元素及其后代(9)符合上述DTD定义的有效的XML片段应该是:联系人姓名张三/姓名电话12345678/电话/联系人或者是:联系人姓名张三/姓名EMAILzhang@yahoo.com/EMAIL/联系人注意:在一个组中,只允许使用一种连接符(例如“,”或“|”)。下面这样定义的DTD是不合法的:!ELEMENT联系人(姓名,电话|EMAIL)2定义元素及其后代(10)可选子元

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

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

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

×
保存成功