资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,XML,与,Web,服务,Xml,数据的底层结构,-,DTD,和,XML Schema,目录,复习,2.1 XML,文档类型定义文件,DTD,2.2 XML,模式定义文件,Schema,复习,10001,20001,1000.1,2010-12-04,复习,所有的,XML,文档(以及,HTML,文档)均由以下简单的构建模块构成:,元素,属性,实体,PCDATA,CDATA,下面是每个构建模块的简要描述,元素,元素是,XML,以及,HTML,文档的主要构建模块。,HTML,元素的例子是,body,和,table,。,XML,元素的例子是,note,和,message,。元素可包含文本、其他元素或者是空的。空的,HTML,元素的例子是,hr,、,br,以及,img,。,实例:,body,text in between,some message in between,属性,属性可提供有关元素的额外信息。,属性总是被置于某元素的开始标签中。属性总是以名称,/,值的形式成对出现的。下面的,img,元素拥有关于源文件的额外信息:,元素的名称是,img,。属性的名称是,src,。属性的值是,computer.gif,。由于元素本身为空,它被一个,/,关闭。,实体,实体是用来定义普通文本的变量。实体引用是对实体的引用。,大多数同学都了解这个,HTML,实体引用:,&,nbsp,;,。这个“无折行空格”实体在,HTML,中被用于在某个文档中插入一个额外的空格。,当文档被,XML,解析器解析时,实体就会被展开。,下面的实体在,XML,中被预定义:,实体引用 字符,&,lt,;,&,&,quot,;,&,apos,;,PCDATA,PCDATA,的意思是被解析的字符数据(,parsed character data,)。,可把字符数据想象为,XML,元素的开始标签与结束标签之间的文本。,PCDATA,是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。,文本中的标签会被当作标记来处理,而实体会被展开。,不过,被解析的字符数据不应当包含任何,&,、,字符;需要使用,、,&,lt,;,以及,&,gt,;,实体来分别替换它们。,CDATA,CDATA,CDATA,的意思是字符数据(,character data,)。,CDATA,是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。,复习,请用,XML,表达出一则,Email,数据,发送者,:John,接收者,:George,时间,:2011-12-12,标题,:Reminder,内容,:Dont forget the meeting!,总结,:,同样的数据可以用不同的结构的,XML,文件来描述,.,2.1 XML,文档类型定义文件,DTD,DTD:,文档类型定义,是一套关于标记符的语法规则,它定义了可用在文档中的元素,属性和实体,以及这些内容之间的相互关系,.,举例说明,DTD,数据分析,发送者,:John,接收者,:George,时间,:2011-12-12,标题,:Reminder,内容,:Dont forget the meeting!,发送者,:,小东,接收者,:,小明,时间,:2011-12-12,标题,:,你好,内容,:,欢迎你们来到温大,举例说明,DTD,层次结构的设计,root,email,from,to,date,day,month,year,heading,body,举例说明,DTD,DTD,描述,举例说明,DTDXML,与,DTD,结合,George,John,Reminder,Dont forget the meeting!,举例说明,DTD,总结,为什么使用,DTD,?,通过,DTD,,您的每一个,XML,文件均可携带一个有关其自身格式的描述。,通过,DTD,,独立的团体可一致地使用某个标准的,DTD,来交换数据。,而您的应用程序也可使用某个标准的,DTD,来验证从外部接收到的数据。,您还可以使用,DTD,来验证您自身的数据。,2.2.1 DTD,编写语法,2.1.1.1,元素定义,2.1.1.2,属性定义,2.1.1.1,元素定义,语法格式,:,Name,是一个标准的,XML,标记的名字,Content,由以下三种之一组成,关键字,EMPTY,关键字,ANY,描述包含在本元素中的子元素的顺序和重复次数的内容模型,.,例子,DTD,声明中注意点,(1),以,ELEMENT,开后,(2),区别大小写,(3),不能重复定义元素,.,内容类型,-EMPTY,1,EMPTY,用于定义空元素,该元素只可能有属性而不会有字符数据或子元素,如,元素其形式只能为,声明语法,:,具体应用,:,标签,内容类型,-ANY,这表明该元素可以包含,DTD,中定义的其它任何元素或已编译的字符数据,语法,:,内容类型,-#PCDATA,不包含其它子元素而只包含字符数据的元素,.,语法,:,内容类型,子元素类型,元素可以包含一系列元素,子元素内容模型用于指定某个元素可以包含哪些子元素,.,如,:,子元素间的关系可以分为两种,序列,选择,内容类型,子元素类型,-,序列,其子元素必须出现且仅出现一次,而且要依次出现,序列中,不能出现,#PCDATA,因此下面的元素声明是错误,内容类型,子元素类型,选择,例子,:,例子,:,邮件发送的例子,消息头,时间,发送者,接收者,主题,分隔符,内容,文字,底部或签名,签名,(,文字,),底部,(,任意,),内容类型,子元素类型,混合,若某元素既包含子元素又包含已编译的字符数据,则该元素具有混合内容。其声明的语法如下:,3.,元素出现次数指示符(,Element occurrence indicator,),3.,元素出现次数指示符(,Element occurrence indicator,),?字符,它说明元素可以出现,0,次或,1,次。,*字符,它说明元素可以不出现,或出现,1,次或多次。,+,字符,它说明元素必须出现至少一次,或者说可以出现一到多次,消息头,时间,发送者,接收者,(,多个,),主题,分隔符,内容,文字,底部或签名,签名,(,文字,),底部,(,任意,),2.1.1.2,属性定义,1,属性声明,属性声明的语法如下:,其中,,ATTLIST,关键字用来定义元素所具有的属性,,Element_name,是元素名,,Attribute_name,是该元素所具有的属性名,,Type,是属性的类型,最常用的类型是,CDATA,,,Default_value,是属性的默认值。,声明属性时应注意以下几点:,属性名称遵循的规则与有效的元素名称相同。,在一个给定的元素中不能有两个属性同名。,若属性值中含有双引号,则该属性值应用单引号括起来。,2,属性的类型,CDATA,属性类型,枚举属性类型,ID,属性类型,IDREF/IDREFS,类型,NMTOKEN/NMTOKENS,属性类型,(name token),ENTITY,和,ENTITYS,属性类型,NOTATION,类型,(,标记,),3,属性的默认值,属性声明可以给属性指定一个默认值,使得当在,XML,文档中未明确地指定该属性的值时,,XML,处理器会将此默认值作为该属性的值。属性的默认值可以分别用下面三个关键字进行定义:,#REQUIRED,、,#IMPLIED,和,#FIXED,。,例子,:,REQUIRED,:当一个元素的属性被声明为,#REQUIRED,之后,那么这个元素在使用时必须具有该属性,否则,XML,文档就是无效的。,IMPLIED,:若将一个元素的属性声明为,IMPLIED,,则该属性可以出现在指定的元素中,也可以缺省,即该属性不是必须使用的。,FIXED,:将一个属性声明为,FIXED,之后,在相应,XML,文档中可以不用明确地指定该属性的值,处理器会自动地给出其值;但如果要明确地指出属性值,该值必须是属性定义时给出的默认值。,例子,:,2.1.2 XML,文档和,DTD,的匹配,2.1.2.1,内部,DTD,声明内部,DTD,的语法是:,其中,document.type.name,与,XML,文档的根元素名相同,2.1.2.2,外部个人,DTD,如果有多个文档要使用同一个,DTD,,则该,DTD,可被置于一个单独的文当中(注意,DTD,文件的文件扩展名为,dtd,),并在每个使用它的文档中放入一指向它的链接。最简单的方式是提供一个指向该文件的,URL,。,2.1.2.3,外部公用,DTD,(,External Public DTD,),如果某个外部个人(,SYSTEM,),DTD,很通用,可供其他的很多,XML,共享的话,可以给它一个正式的公用的标识符。首先是给该,DTD,一个正式的公用的名称。,名称的格式是:,-/Big Bank/,DTDsustomer_support,/EN/,名称的各个部分是:,名称以加号(,+,)或减号(,)开头。加号表示该,DTD,已经通过像,ISO,这样的标准组织的批准。减号表示该,DTD,未经标准化。,“,/Big Bank/DTD”,表示编写和维护该,DTD,的个人或组织。,“,sustomer_support,”,是对此,DTD,的描述,,/EN/,表示该,DTD,所用的语言,本例中是英语。,DTD,具有一个名称的优点是查找该,DTD,的应用程序可通过名字来查找,并且可以引用其最新版本,而不是在某一特定服务器(使用,URL,的情况)上的某一特定版本(可能已经过期)。,2.1.2.3,实体的定义,实体有各种类型,如下面所示的分类。但它们所起的作用是相同的。,综合例子,出版社,ID,出版社名,出版社地址,作者,ID,作者名,性别,年龄,综合例子,作者,ID,出版社,ID,标题,价格,年,举例说明,:,论坛帖子,主题,:,时间,关键字,作者,:,内容,:,
展开阅读全文