人民邮电出版社ECJTUNIVERSITYXML技术基础第二章XML语法规则《XML技术基础》2人民邮电出版社回顾XML简介及发展历史;理解XML与HTML的关系;了解XML的进一步认识;了解XML的技术规范;XML解析器、浏览器及编辑软件XML文档的编写3人民邮电出版社本章目标XML标记语法XML文档组成–元素(element)–属性(attribute)–文本(PCDATA--parsedcharacterdata)–注释(comment)–处理指令(PI--processinginstruction)–DOCTYPE–实体(ENTITIES)–CDATA(characterdata)小结4人民邮电出版社标记语言的基本概念标记语言的基本特点:在表示数据内容的基础上,插入各种具有明确含义的标记,以起到对数据内容进行解释、说明、限制等作用。标记的表示方法:,一般成对使用。ahref=标记的命名规则–名称的开头是字母或下划线“_”;–标记名称中不能有空格;–名称的字符串只能包含英文字母、数字、“_”、“-”、“.”等字符。5人民邮电出版社标记的使用规则XML文档必须具有根标记且根标记必须唯一–XML文档中的第一个元素就是根元素。开始标记和结束标记需配对使用pThisisaparagraph【HTML】pThisisanotherparagraph/p【XML】标记不能交错使用,所有的XML元素必须合理包含biThistextisboldanditalic/b/i【HTML】biThistextisboldanditalic/i/b【XML】6人民邮电出版社标记的使用规则XML标记都是大小写敏感的;MessageThisisincorrect/message×messageThisiscorrect/message√空标记的使用–空标记指的是标记只有开始没有结束,又称为孤立标记–形式:标记名/标记名标记名/属性值必须使用引号7人民邮电出版社标记的使用规则两个基本的概念1,格式良好的XML文档符合语法的XML文档称为结构良好的XML文档。2,有效XML文档有效XML文档:内容结构严格遵守它自身的标记说明,能通过自身的语法检查;通过DTD验证的XML文档称为有效的XML文档。格式良好的XML文档与有效的XML文档的区别?–有效地XML文档肯定是格式良好的XML文档。反过来,一个格式良好的XML文档不一定是有效的XML文档。有效的XML文档遵守DTD或Schema定义的规则。8人民邮电出版社一个完整的XML实例?xmlversion=1.0encoding=UTF-8standalone=no??xml-stylesheettype=text/xslhref=show_student.xsl?!DOCTYPErosterSYSTEMstudent.dtd!--此处为注释信息--rosterstudentID=n101name李华/namesex男/sexbirthday1978.9.12/birthdayscore92/scoreskill此学生爱好编程,以下是它编的代码![CDATA[scriptfunctionf1(a,b){if(name=cai&&a0){return1}else{return0}}/script]]/skillskillVisualBasic&C#/skill/student/roster序言文档元素根元素属性元素注释文档类型声明XML声明文本预处理指令CDATA实体9人民邮电出版社XML声明XML声明一般是XML文档的第一行第一个字符XML声明由以下几个部分组成:–version--文档符合XML1.0规范,现在只有’1.0’是必须定义的部分;–encoding--文档字符编码,默认为“UTF-8“还可以定义为“GB2312”等;当使用UTF-8时,XML文档可以使用中文、日文、英文等;当使用GB2312时,XML文档可以使用中文和ASCII字符;–standalone--是否需要从其他外部资源获得自定义标记的说明,并检查XML文档的有效性。standalone=“yes”(不需要外部文档)standalone=“no”(缺省)?xmlversion=1.0encoding=UTF-8standalone=“no?10人民邮电出版社处理指令PI语法:?target?或?targetinstruction?目标命名:–名称必须以字母、下划线或冒号开头;–名称可以包括字母、下划线、冒号、数字、横线和句号;处理指令PI用于将XML文档与XML应用程序联系起来,用来向XML应用程序传递信息。样式表处理指令–这个处理指令必须出现在序言部分,在根元素之前。–?xml-stylesheettype=“type”href=“uri”?type=text/css或者type=text/xsl”传递的信息应用程序的名字?xml-stylesheettype=text/xslhref=show_student.xsl?11人民邮电出版社注释注释不能出现在声明之前;不要把注释放在标记中间;–Name!--thename--TOM/Name注释内容中不要出现--;注释不能嵌套;可以在除以上限制以外的任何地方放注释。注释中的内容在解析时会被忽略;!--此处为注释信息--12人民邮电出版社文档类型声明!DOCTYPErosterSYSTEMstudent.dtd文档类型定义(DTD)是用来定义XML文档数据结构;文档类型声明是用来声明文档类型定义;文档类型声明必须包括或引用文档类型定义;文档类型声明使用DOCTYPE标记声明DTD;DTD的分类:内部DTD子集、外部DTD子集一个XML文档只有一个DTD声明13人民邮电出版社声明内部DTD子集例如:?xmlversion=1.0?!DOCTYPE员工[!ELEMENT员工(姓名,性别,出生日期)!ELEMENT姓名(#PCDATA)!ELEMENT性别(#PCDATA)!ELEMENT出生日期(#PCDATA)]员工姓名李亮/姓名性别男/性别出生日期1978.2.5/出生日期/员工!DOCTYPE根元素名[文档类型定义]内部DTD子集通常声明语法:Standalone=?14人民邮电出版社声明外部DTD子集例:!DOCTYPE员工SYSTEMoutDTD.dtd!DOCTYPE员工PUBLIC“-//W3C//DTD//EN”!DOCTYPE员工PUBLIC“-//W3C//DTD//EN”“”该DTD是私有的该DTD是公有的1:!DOCTYPE根元素名称SYSTEM“DTD-URL”2:!DOCTYPE根元素名称PUBLIC“DTD-name”“DTD-URL”声明语法:Standalone=?将上一个例题由内部DTD改为外部DTD15人民邮电出版社文档类型声明(续)一个XML文档可以同时拥有内部DTD和外部DTD子集,语法:!DOCTYPE根元素名称PUBLIC“DTD-name”“外部URL”[内部文档类型定义]当同时拥有外部和内部子集,若这两者出现矛盾时,不同的解析器有不同的策略。一般以内部DTD子集为准。17人民邮电出版社元素TITLEXML技术基础./TITLE开始标记结束标记内容TITLE/空元素TITLETITLEID=101/空元素TITLE18人民邮电出版社元素(续)XML元素是可以扩展的,它们之间有关联。XML元素的内容XML元素有简单的命名规则19人民邮电出版社根元素XML的根元素–每个XML文档必须有且只有一个根元素。–根元素是一个完全包括文档中其他所有元素的元素。20人民邮电出版社元素(续)元素是可以扩展的,以携带更多的信息XML便条例子:noteto全体同学/tofromMike/frombody请大家学好XML,因为它有用:P/body/note21人民邮电出版社元素(续)让我们来设想一个能够读取此XML文档的并能解读其中XML元素(to,from,和body)的软件,可能的输出如下:MESSAGETo:全体同学From:Mike请大家学好XML,因为它有用:P22人民邮电出版社元素(续)我们再来设想,如果便条的作者在这个XML文档中加入一些额外的信息,如下所示:notedate2005-02-24/dateto全体同学/tofromMike/fromheading注意哟/headingbody请大家学好XML,因为它有用:P/body/note23人民邮电出版社元素(续)那么原来的应用程序会中断或者崩溃么?不会。应用程序仍然会正确的解读to,from,和body等元素,并且产生同样的输出。24人民邮电出版社元素(续)XML文档是可以扩展的!25人民邮电出版社元素(续)元素之间的关系:子元素/父元素、祖先/后代设想有这样一本书:署名:XML指南第一章:XML入门简介什么是HTML什么是XML第二章:XML语法XML元素必须有结束标记XML元素必须正确的嵌套26人民邮电出版社元素(续)我们可以用XML文档来描述这本书:booktitleXML指南/titlechapter1XML入门简介para1什么是HTML/para1para2什么是XML/para2/chapter1chapter2XML语法para3XML元素必须有结束标记/para3para4XML元素必须正确的嵌套/para4/chapter2/book27人民邮电出版社元素(续)XML元素的内容:元素内容的类型:嵌套元素/字符数据/实体引用/CDATA节/处理指令/注释有三类XML元素的内容:–混合内容–简单内容–空内容28人民邮电出版社元素(续)XML元素命名与Java、C的命名规则类似:–元素名必须是以字母、下划线开始的字符串;–元素名可以包含字母、数字、连字符、下划线、句号。–元素的名字不能以XML(或者xml,Xml,xMl...)开头。–元素的名字不能包含空格。–应该使元素的名字具有可读性。–XML文档往往都对应着数据表,我们应该尽量让数据库中的字段的命名和相应的XML文档中的元素命名保持一致,这样可以方便数据变换。–在XML元素命名中不要使用:,因为XML命名空间需要用到这个十分特殊的字符。29人民邮电出版社属性studentID=n101属性值用双引号(“)或单引号(‘)分隔(如果属性值中有’,用”分隔;有“,用‘分隔)一个元素可以有多个属性,它的基本格式为:元素名属性名=属性值特定的属性名称在同一个元素标记中只能出现一次属性值不能包括,&,,如果需要用则应用替代符;属性只能包含在开始标记中。属性的命名规则同元素命名。30人民邮电出版社属性与子元素的有关问题属性的表达方式:StudentID=100NameTOM/Name/Student子元素的表达方式:Studentid100/idNameTOM/Name/Student31人民邮电出版社属性与子元素的有关问题(续)一般来说子元素可以完全代替属性。要采用子元素的情况:1.一个属性不能包含子属性,但子元素可以包含自己的子