1、第第1章章 XML概述概述目标目标1.1 什么是什么是XML 它是它是Internet环境中跨平台的、依赖于内容的技术,环境中跨平台的、依赖于内容的技术,是这个时代中处理分布式结构信息的选择工具,用是这个时代中处理分布式结构信息的选择工具,用它来简化通过它来简化通过Internet的文档信息传输。的文档信息传输。XML的设计目标的设计目标 可扩充性可扩充性 语义与表现形式的分离语义与表现形式的分离 在在Internet上的可用性上的可用性 简单性简单性 国际化国际化 和和SGML的协作性的协作性XML XML是一种类似于HTML的标记语言 XML是用来描述数据的 XML的标记不是在XML中预定
2、义的,而是自定义的标记 XML使用DTD或者Schema后就是自描述的语言1.2 XML的产生背景的产生背景电子数电子数据交换介绍据交换介绍 定义:定义:EDI,即电子数据交换,是指在两个即电子数据交换,是指在两个计算机系统之间以标准格式交换文档的过计算机系统之间以标准格式交换文档的过程。一般来说,交换出现在贸易伙伴之间。程。一般来说,交换出现在贸易伙伴之间。EDI是是Electronic Data Interchange的缩写,它的缩写,它是一种利用计算机进行商务处理的新方法。是一种利用计算机进行商务处理的新方法。传统贸易过程和EDI过程XML产生背景 随着上网人数的激增,上网已不再局限于浏
3、览网随着上网人数的激增,上网已不再局限于浏览网页,而是数据传递、交换页,而是数据传递、交换.。SGML过度复杂,无法过度复杂,无法在在WEB上普及、应用;上普及、应用;HTML过度简单缺乏弹性,无法满足过度简单缺乏弹性,无法满足WEB各方位上各方位上的需求。的需求。XML继承继承SGML优点又不太复杂,且能弥补优点又不太复杂,且能弥补HTML的的不足,文件数据经过不足,文件数据经过XML标记后,能够很容易在标记后,能够很容易在WEB上传递、交换和使用。上传递、交换和使用。XML是一个交叉平台,独立于硬件和软件的发送信是一个交叉平台,独立于硬件和软件的发送信息工具息工具。XML和HTML主要区别
4、 XMLXML是被设计用来描述数据的是被设计用来描述数据的重点是:什么是数据,如何存放重点是:什么是数据,如何存放数据数据 HTMLHTML是被设计用来显示数据的是被设计用来显示数据的重点是:显示数据以及如何更好重点是:显示数据以及如何更好地显示数据地显示数据XML相对相对EDI的优势的优势 低成本:低成本:XML不需要不需要VAN高额费用,中小商高额费用,中小商业单位也分受益。业单位也分受益。定制商业规则:定制商业规则:XML允许用户创建自己的商允许用户创建自己的商业规则和格式。业规则和格式。容易解释:容易解释:EDI需要翻译软件映射贸易伙伴需要翻译软件映射贸易伙伴的格式,而的格式,而XML
5、通过免费下载解析器很容易通过免费下载解析器很容易解释解释XML文档。文档。平台独立:不管什么平台,都能进行交易。平台独立:不管什么平台,都能进行交易。1.3 XML的优越性的优越性(1)更有意义的搜索。)更有意义的搜索。(2)开发灵活的)开发灵活的Web应用软件。应用软件。(3)不同来源数据的集成。)不同来源数据的集成。(4)多种应用得到的数据。)多种应用得到的数据。(5)本地计算和处理。)本地计算和处理。(6)数据的多样显示。)数据的多样显示。(7)粒状的更新。)粒状的更新。(8)在)在Web上发布数据。上发布数据。(9)升级性。)升级性。(10)压缩性。)压缩性。1.4 XML的应用综述数
6、据交换数据交换Web服务服务内容管理内容管理Web集成集成系统配置系统配置.XML可以从可以从HTML中分离数据中分离数据 通过通过XML,可以在可以在HTML文件之外存储数据。文件之外存储数据。在不使用在不使用XML时,时,HTML用于显示数据,数用于显示数据,数据必须存储在据必须存储在HTML文件之内;文件之内;使用了使用了XML,数据就可以存放在分离的数据就可以存放在分离的XML文档中。可以集中精力去到使用文档中。可以集中精力去到使用HTML做好做好数据的显示和布局上,并确保数据改动时数据的显示和布局上,并确保数据改动时不会导致不会导致HTML文件也需要改动。这样可以文件也需要改动。这样
7、可以方便维护页面方便维护页面。XML用于交换数据用于交换数据 通过通过XML,我们可以在不兼容的系统之间交换我们可以在不兼容的系统之间交换数据。数据。在现实生活中,计算机系统和数据库系统所在现实生活中,计算机系统和数据库系统所存储的数据有存储的数据有NN种形式种形式,对于开发者来说,对于开发者来说,最耗时间的就是在遍布网络的系统之间交换最耗时间的就是在遍布网络的系统之间交换数据。数据。把数据转换为把数据转换为XML格式存储将大大减少交换格式存储将大大减少交换数据是的复杂性,并且还可以使得这些数据数据是的复杂性,并且还可以使得这些数据能被不同的程序读取。能被不同的程序读取。XML 和和 B2B(
8、Business To Business)使用使用XML,可以在网络中交换金融信息。可以在网络中交换金融信息。XML正在成为遍布网络的商业系统之间正在成为遍布网络的商业系统之间交换金融信息所使用的主要语言。许多交换金融信息所使用的主要语言。许多与与B2B有关的完全基于有关的完全基于XML的应用程序正的应用程序正在开发中。在开发中。XML可以用于存储和共享数据可以用于存储和共享数据 通过通过XML,纯文本文件可以用来存储和共享纯文本文件可以用来存储和共享数据。数据。XML提供了一种与软件和硬件无关的存储和提供了一种与软件和硬件无关的存储和共享数据方法。共享数据方法。大量的数据可以存储到大量的数据
9、可以存储到XML文件中或者数据文件中或者数据库中。应用程序可以读写和存储数据,一库中。应用程序可以读写和存储数据,一般的程序可以显示数据。般的程序可以显示数据。XML可以充分利用数据可以充分利用数据 使用使用XML,你的数据可以被更多的用户使用。你的数据可以被更多的用户使用。XML是与软件、硬件和应用程序无关的,所是与软件、硬件和应用程序无关的,所以可以使数据可以被更多的用户、更多的以可以使数据可以被更多的用户、更多的设备所利用,而不仅仅是基于设备所利用,而不仅仅是基于HTML标准的标准的浏览器。浏览器。别的客户端和应用程序可以把你的别的客户端和应用程序可以把你的XML文档文档作为数据源来处理
10、,就像他们对待数据库作为数据源来处理,就像他们对待数据库一样,你的数据可以被各种各样的一样,你的数据可以被各种各样的“阅读阅读器器”处理。处理。XML可以用于创建新的语言可以用于创建新的语言 XML是是WAP和和WML语言的母亲。语言的母亲。无线标记语言(WML,The Wireless Markup Language),用于标识运行于手持设备上(比如:手机)的Internet程序。WML采用了XML的标准。1.5 XML开发工具 1.6 小结 XML技术的起源、发展与应用 XML开发工具Altova XML Spy 2007的安装和使用。第2章 XML语法目标目标2.1 XML文档结构2.2
11、 XML文档规则文档规则 必须有必须有XML声明语句声明语句 所有的所有的XML文档必须有一个结束标记文档必须有一个结束标记 XML标记都是大小写敏感的标记都是大小写敏感的 所有的所有的XML元素必须合理包含元素必须合理包含 所有的所有的XML文档必须有一个根元素文档必须有一个根元素 属性值必须使用引号属性值必须使用引号 使用使用XML,空白将被保留空白将被保留 在在XML中注释的语法基本上和中注释的语法基本上和HTML中的一样。中的一样。符合语法的XML文档称为格式良好的XML文档。通过DTD或是XML Schema验证的XML文档称为有效的XML文档。2.3 XML声明 XML 文档以 X
12、ML 声明作为开始,它向解析器提供了关于文档的基本信息 XML声明由“”结束。例如:实例1:张三03/11/1961医生XML声明声明根元素根元素元素元素文本文本属性属性程序说明 声明区:整份文件的第一行必须是声明区:整份文件的第一行必须是XML文件的声明。文件的声明。1.:表示该行命令结束。表示该行命令结束。数据区:数据区:和和构成的区块,紧临在构成的区块,紧临在声明区之后,区内只能有一个根元素。声明区之后,区内只能有一个根元素。用I E 查看XML 要查看一个要查看一个XML文档,可以点击一个链接,在地址文档,可以点击一个链接,在地址栏键入栏键入URL,或在文件夹中双击一个,或在文件夹中双
13、击一个XML文件名。文件名。如果在如果在IE中打开一个中打开一个 XML文档,它将用颜色显示文文档,它将用颜色显示文档编码的根和子元素。可以点击元素左边的一个加档编码的根和子元素。可以点击元素左边的一个加号号(+)或减号或减号(-)来展开或收缩元素的结构。来展开或收缩元素的结构。如果想如果想查看原始的查看原始的XML源文件,必须从浏览器菜单中选择源文件,必须从浏览器菜单中选择“View Source”。查看一个无效的查看一个无效的 XML 文件文件 如果用如果用IE打开一个错误的打开一个错误的XML文件,文件,IE就会就会报告这个错误。如果你点击报告这个错误。如果你点击note_error.x
14、ml,IE就会显示一个错误信息。就会显示一个错误信息。2.4 XML文档内容文档内容 元素元素 元素是元素是XML文件的基本构造块,作为主要的标文件的基本构造块,作为主要的标注成分,用来描述文件的内容注成分,用来描述文件的内容 内容内容 在在XML文件中,由元素表示的信息就称为元素文件中,由元素表示的信息就称为元素的内容的内容 属性属性 属性提供元素的补充属性属性提供元素的补充属性 注释注释 XML中的注释同样使用中的注释同样使用来表示来表示根元素根元素 每个每个XML文档必须有且只有一个根元素。文档必须有且只有一个根元素。根元素是一个完全包括文档中其他所有元素的元根元素是一个完全包括文档中其
15、他所有元素的元素。素。根元素的起始标记要放在所有其他元素的起始标根元素的起始标记要放在所有其他元素的起始标记之前。记之前。根元素的结束标记要放在所有其他元素的结束标根元素的结束标记要放在所有其他元素的结束标记之后。记之后。元素元素2-1 APTech 元素元素TITLE开始标记开始标记结束标记结束标记内容内容空元素空元素TITLE空元素空元素TITLE元素之间的关系:子元素元素之间的关系:子元素/父元素、祖先父元素、祖先/后代后代元素内容的类型:元素内容的类型:嵌套元素嵌套元素/字符数据字符数据/实体引用实体引用/CDATACDATA节节/处理指令处理指令/注释注释元素元素2-2 所有的所有的
16、XML文档必须有一个根元素文档必须有一个根元素 XML文档中的第一个元素就是根元素文档中的第一个元素就是根元素 XML元素是相互关联的元素是相互关联的 XML元素之间是父元素和子元素的关系元素之间是父元素和子元素的关系 XML元素有不同的内容元素有不同的内容 XML元素内容指的是从该元素的开始标签到元素内容指的是从该元素的开始标签到结束标签之间的这部分结束标签之间的这部分 XMLXML元素可以拥有一个或更多的属性元素可以拥有一个或更多的属性 XML属性或属性值可以是强制的或可选择的属性或属性值可以是强制的或可选择的XML元素的命名规则元素的命名规则 名字中可以包含字母、数字以及其它字母名字中可
17、以包含字母、数字以及其它字母 名字不能以数字或名字不能以数字或“_”(下划线下划线)开头开头 元素的名字不能以元素的名字不能以XML(或者或者xml,Xml,xMl.)开开头头 元素的名字不能包含空格元素的名字不能包含空格 要避免在名字中使用要避免在名字中使用“-”和和“.”。在元素名中不能使用在元素名中不能使用:,因为它是为一种成为,因为它是为一种成为“名字空间名字空间”(namespaces)的东西预留的。的东西预留的。属性TOM 属性是用来提供有关元素的附加信息的。属性是用来提供有关元素的附加信息的。属性属性所提供的信息通常不是数据的一部分所提供的信息通常不是数据的一部分 属性值用双引号
18、(属性值用双引号()或单引号()或单引号()分隔(如果属)分隔(如果属性值中有性值中有,用,用分隔;有分隔;有,用,用分隔)分隔)一个元素可以有多个属性,它的基本格式为:一个元素可以有多个属性,它的基本格式为:特定的属性名称在同一个元素标记中只能出现一次特定的属性名称在同一个元素标记中只能出现一次 属性值不能包括属性值不能包括,&属性属性元素与属性元素与属性 使用属性带来几个问题使用属性带来几个问题:#属性不能包含多个值属性不能包含多个值(而子元素可以而子元素可以)#属性不容易被扩充属性不容易被扩充(为将来的修改为将来的修改)#属性不能描述结构属性不能描述结构(而子元素可以而子元素可以)#属性
19、更难被程序代码所操作属性更难被程序代码所操作#属性值不容易进行属性值不容易进行DTD测试测试 如果将属性作为一个数据的容器使用,那如果将属性作为一个数据的容器使用,那么最终的结果是,文档将难以阅读和维护。应么最终的结果是,文档将难以阅读和维护。应该尽量用元素去描述数据。只在提供与数据无该尽量用元素去描述数据。只在提供与数据无关的信息时才使用属性。关的信息时才使用属性。XML专用标记注释专用标记注释 注释内容中不要出现注释内容中不要出现-;不要把注释放在标记中间;不要把注释放在标记中间;Name TOM 注释不能嵌套;注释不能嵌套;可以在除标记以外的任何地方放注释。可以在除标记以外的任何地方放注
20、释。内部实体内部实体 一些字符有特殊含义,一些字符有特殊含义,”已用作标签使已用作标签使用,不能出现在用,不能出现在XML文件中。文件中。XML提供一些提供一些预先定义的实体,称为内部实体。预先定义的实体,称为内部实体。<用来显示小于用来显示小于()符号符号&用来显示用来显示and(&)符号符号"用来显示双引号用来显示双引号(“)符号符号2.5 命名空间 XML命名空间提供了一种避免元素名称冲突的方命名空间提供了一种避免元素名称冲突的方法。法。命名冲突命名冲突 两个不同的两个不同的XML文档使用同一个名字来描述不同类文档使用同一个名字来描述不同类型的元素的情况往往会导致
21、命名冲突。型的元素的情况往往会导致命名冲突。命名空间常用于模式文件的定义中。命名空间常用于模式文件的定义中。这个 XML 文档在table元素中携带了水果的信息:苹果 香蕉 这个 XML 文档在table元素中携带了桌子的信息 桌子 80 120 如果上面两个XML文档片断碰巧在一起使用的话,那么将会出现命名冲突的情况。因为这两个片断都包含了元素,而这两个table元素的定义与所包含的内容又各不相同。解决方法解决方法 使用前缀解决名称冲突问题使用前缀解决名称冲突问题 h:table 苹果苹果 香蕉香蕉 f:table 桌子桌子 80 80 120 120 什么是命名空间 W3C 名称规范声明命
22、名空间本身就是一个统一资源标示符,Uniform Resource Identifier(URI)Uniform Resource Identifier(URI)。命名空间是阻止具有相同名字元素间的冲突的一种方法。在XML中,命名空间是被统一资源标识符URI分配或识别的一个虚拟空间。URI是从不同模式中唯一标识元素和属性的一个字符串。命名空间URI和WEB URI不同,它不是实际指向因特网上的一个资源,它只是用来解决具有相同名字元素间的冲突的一个唯一标识符。确保URI的唯一性 我们可以分配任何名称或字符串作为一个URI。为了确保其一致性,应注意:1.使用一个被开发者控制的URI2.一般的,每个
23、XML模式必须包括名称空间URI http:/www.w3.org/2001/XML schema,使用它来确保按照W3C规定的标准来使用基本XSD文档特征。声明声明命名空间 命名空间的声明一般放置在元素的开始标记处,其使用语法如下所示:xmlns:prefix=“URI”(prefix为定义的命名空间的前缀,是可选的。有两种命名空间的声明:缺省的和明确的。)缺省声明缺省声明 缺省缺省命名空间,不需要指定前缀。使用缺省声明,不需要指定前缀。使用缺省声明命名空间 的所有元素和属性不需要任何前缀。的所有元素和属性不需要任何前缀。如:如:.明确声明明确声明 XmlnsXmlns关键字与一个命名空间关
24、键字与一个命名空间URIURI的一个前缀相的一个前缀相关联关联 .2.6 本章小结 在本章中,我们介绍了所有XML文档中必需的基本语法,包括:XML文档的结构及文档规则,XML声明语句的写法,元素及属性的定义,字符和实体的引用,XML中的命名空间的定义及使用,等等。其中最为重要的是XML的文档规则,因为只有符合XML文档规则的XML文档才是Well-Formed,即格式良好的XML文档,在书写XML文档时一定要特别注意这一点。第第3章章 XML文档类型定义文档类型定义-DTD 51目标l理解文档类型定义lDTD声明l元素声明l属性声明l实体声明52XML 确认 -确保XML文档中数据的一致性
25、符合语法的XML文档称为结构良好的XML文档。通过DTD验证的XML文档称为有效的XML文档。533.1 DTD概述 l文档类型定义-Document Type DefinitionlDTD用来描述XML文档的结构,DTD定义了XML文档中可用的合法元素。l用DTD 指定:可以在文档中存在的元素、元素可以具有的属性、在元素内部元素的层次结构以及元素在整个文档中出现的顺序。543.2 DTD声明 DTD可以是一个完全独立的文件,也可以在XML文件中直接设定。DTD分为外部DTD(在XML文件中调用另外已经编辑好的DTD)和内部DTD(在XML文件中直接设定DTD)两种。553.2.1 3.2.1
26、 内部内部DTD 内部DTD是在XML文件的文件序言区域中定义的。内部内部DTD的的XML文档的结构为:文档的结构为:文档数据区.563.2.1 3.2.1 内部内部DTD(续)(续)!DOCTYPE poem -根元素的名称 -子元素的名称及顺序 -子元素的数据类型 -结束标签 王维 鹿柴 空山不见人,但闻人语声.返景入深林,复照青苔上.注意:例中的定义关键字一定要大写,注意:例中的定义关键字一定要大写,如如DOCTYPE、ELEMENT、#PCDATA,且,且元素名称与数据类型之间也要有空格。元素名称与数据类型之间也要有空格。内部内部DTD示例示例573.2.2 外部DTD 外部DTD是一
27、个独立于XML文件的文件,实际上也是一个文本文件,只是使用.dtd为文件扩展名。外部DTD的好处是:它可以方便高效地被多个XML文档所共享。外部DTD的创建方式、语法和内部DTD是一样的。583.2.2 外部DTD(续(续2-1)使用外部DTD的XML文档的结构为:文档数据区.593.2.2 外部DTD(续(续2-2)王维鹿柴空山不见人,但闻人语声.返景入深林,复照青苔上.外部外部DTD使用示例使用示例603.3 DTD语法 一个DTD文档包含元素元素(ELEMENT)的定义规则的定义规则元素之间的关系规则元素之间的关系规则属性属性(ATTLIST)的定义规则的定义规则可使用的实体可使用的实体
28、(ENTITY)或符号或符号(NOTATION)规则规则613.3.1元素声明确定元素及其确定元素及其类型类型 元素有三种不同的类型元素有三种不同的类型 数据型(即字符内容)数据型(即字符内容)Hello 元素型(即包含的内容是元素)元素型(即包含的内容是元素)QUIT Hello everybody!混合型(包含的内容既有元素又有内容)混合型(包含的内容既有元素又有内容)Hello everybody quit 623.3.1元素声明元素的定义(1/5)语法关键字关键字元素名称元素名称EMPTY该元素不能包含子元素和文本,但可以有属性(空元素)该元素不能包含子元素和文本,但可以有属性(空元素
29、)ANY该元素可以包含任何在该元素可以包含任何在DTD中定义的元素内容中定义的元素内容#PCDATA可以包含任何字符数据,但是不能在其中包含任何子元素可以包含任何字符数据,但是不能在其中包含任何子元素PCDATA代表字符数据,为防止与关键字混淆,加代表字符数据,为防止与关键字混淆,加#前缀前缀 纯元素类型纯元素类型只包含子元素,并且这些子元素外没有文本只包含子元素,并且这些子元素外没有文本 混合类型混合类型包含子元素和文本数据的混合体包含子元素和文本数据的混合体元素类型元素类型633.3.1元素声明元素的定义(2/5)EMPTY示例-空元素XML示例:皮诺曹皮诺曹爸爸643.3.1元素声明元素
30、的定义(3/5)ANY示例XML示例:皮诺曹皮诺曹爸爸 将根元素设为ANY类型后,元素出现的次数和顺序不受限制。653.3.1元素声明元素的定义(4/5)#PCDATA示例皮诺曹皮诺曹爸爸XML示示例:例:663.3.1元素声明元素的定义(5/5)组合类型示例XML示例:67注意注意1:在元素设置中,如果元素包含多个子元素,如:!ELEMENT 书籍(名称,作者,价格)这种含多个子元素的声明,那么“名称”、“作者”、“价格”这些标记在XML文件中必须以上面排列的顺序出现,每个标记必须而且只能够出现一次。68注意2:如果在设定元素时,按照!ELEMENT 书籍ANY,这样在元素下就可以包含任意被
31、设定过的元素,出现的次数和顺序也不受限制,并且在该元素下,除了可以包含子元素以外,还能够包含一般的文字。69注意3:在XML文件中,一个标记可能多次出现(或者不出现),除了在它们的父元素中用ANY关键字之外,还可以在元素的旁边加上特定的符号来控制标记出现的次数。70修饰符号-无符号:只能出现一次符号 用途 示例示例说明()用来给元素分组(古龙|金庸|梁羽生),(王朔|余杰),毛毛 分成三组|在列出的对象中选择一个(男人|女人)表示男人或者女人必须出现,两者至少选一+该对象最少出现一次,可以出现多次(1或多次)(成员+)表示成员必须出现,而且可以出现多个成员*该对象允许出现零次到任意多次(0到多
32、次)(爱好*)爱好可以出现零次到多次?该对象可以出现,但只能出现一次(0到1次)(菜鸟?)菜鸟可以出现,也可以不出现,如果出现的话,最多只能出现一次,对象必须按指定的顺序出现(西瓜,苹果,香蕉)表示西瓜、苹果、香蕉必须出现,并且按这个顺序出现 713.3.2属性声明属性声明 在DTD中定义属性时,我们使用下面的格式来给一个元素定义一组合适的属性,同时指定这些属性的类型和缺省值:其中:元素名是属性所属的元素的名字。属性名是属性的命名。值类型是给属性分配的值。缺省值是属性的初值。72属性的定义 语法CDATAIDIDREF/IDREFSNMTOKEN/NMTOKENSEnumerated#REQU
33、IRED#IMPLIED#FIXED valueDefault value73属性类型 CDATA 属性值可以是任何字符(包括数字和中文)XML示例:74属性类型NMTOKEN/NMTOKENSNMTOKEN是CDATA 的一个子集,表示属性值必须是英文字母、数字、句号、破折号、下划线或冒号(不能是中文!)。NMTOKENS与NMTOKEN类似,包含多个由空格分隔的字符。!DOCTYPE poems 八阵图八阵图 功盖三分国功盖三分国,名成八阵图名成八阵图,江流石不转江流石不转,遗恨失吞吴遗恨失吞吴.!DOCTYPE poems 八阵图八阵图 功盖三分国功盖三分国,名成八阵图名成八阵图,江流石
34、不转江流石不转,遗恨失吞吴遗恨失吞吴.XML示例:75属性类型 ID 表明该属性的取值必须是唯一的。该ID必须以一个字母开头ID属性值必须是合格的属性值必须是合格的XML名字名字XML示例:76属性类型 IDREF/IDREFS IDREF属性的值指向文档中其它地方声明的ID类型的值。IDREFS同IDREF,但是可以具有由空格分开的多个引用。空格XML示例77属性类型Enumerated 事先定义好一些值,属性的值必须在所列出的值的范围内。78属性的特点REQUIRED 元素的所有实例都必须有该属性的值(NOT NULL)语法:DTD 示例:XML 示例:79属性的特点IMPLIED 元素的
35、实例中可以忽略该属性(NULL)。语法:DTD示例:XML示例:80属性的特点FIXED value 元素实例中该属性的值必须为指定的固定值。在元素中不能够设定该属性,因为这个属性被设为具有固定值的属性(#FIX关键字)语法:DTD示例:XML示例:81属性的特点Default value 为属性提供一个默认的值 语法:DTD示例:XML示例:82定义实体内部实体 作用:避免重复输入 (宏、变量)XML中五个预定义实体 自定义实体语法:!DOCTYPE 根元素根元素 引用已定义的实体:&实体名实体名;实体符号<&"'833.4 本章小结 在本章中,我们学习了如
36、何使用DTD来描述文档结构,包括文档包含的必需元素、属性和任选元素、属性,以及元素间的相关关系和自定义实体。特别学习了以下内容:文档类型定义(DTD)提供了XML文档所包含的元素、属性和实体及相互关系的定义。内部DTD和外部DTD 元素类型声明:声明元素名称和子元素。如何在DTD中声明元素的属性 如何从内部和外部实体开始创建XML文档 第第4章章 XML模式定义模式定义-XSD 什么是SchemaXML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。XML Schema规定XML文档实例的结构和每个元素/属性的数据类型。数据库XML文档数
37、据文档数据表结构SQLXPathSchema为何需要Schemal DTD 的局限性的局限性 DTD不遵守不遵守XML语法语法(写(写XML文档实例时候用一种文档实例时候用一种语法,写语法,写DTD的时候用另外一种语法)的时候用另外一种语法)DTD数据类型数据类型有限(与数据库数据类型不一致)有限(与数据库数据类型不一致)DTD不可扩展不可扩展 DTD不支持命名空间(命名冲突)不支持命名空间(命名冲突)l Schema的新特性的新特性 Schema基于基于XML语法语法 Schema可以用能处理可以用能处理XML文档的工具处理文档的工具处理 Schema大大扩充了数据类型大大扩充了数据类型,可
38、以自定义数据类,可以自定义数据类型型 Schema支持元素的继承支持元素的继承 Schema支持属性组支持属性组4.1 Schema的文档结构 所有Schema文档使用schema作为其根元素用于构造schema的元素和数据类型来自http:/www.w3.org/2001/XMLSchema命名空间本schema定义的元素和数据类型属于http:/mynamespace/myschema命名空间目标命名空间不一定遵循本Schema(若是qualified则必须遵循)4.2 Schema的数据类型 简单类型 内置的数据类型(built-in data types)基本的数据类型 扩展的数据类型
39、 用户自定义数据类型(通过simpleType定义)复杂类型(通过complexType定义)用户自定义的简单数据类型的语法 自定义数据类型的内容模式 Restriction中可以使用的关键字及含义特性特性描述描述enumeration在指定的数据集中选择,限定用户的选值在指定的数据集中选择,限定用户的选值fractionDigits限定最大的小数位,用于控制精度限定最大的小数位,用于控制精度length指定数据的长度指定数据的长度maxExclusive指定数据的最大值(小于)指定数据的最大值(小于)maxInclusive指定数据的最大值(小于等于)指定数据的最大值(小于等于)maxLen
40、gth指定长度的最大值指定长度的最大值minExclusive指定最小值(大于)指定最小值(大于)minInclusive指定最小值(大于等于)指定最小值(大于等于)minLength指定最小长度指定最小长度Pattern指定数据的显示规范指定数据的显示规范复杂数据类型的声明语法 内容模型定义(包括子元素和属性的声明)complexType元素使用示例 complexType与simpleType区别 simpleType类型的元素中不能包含元素或者属性。当需要声明一个元素的子元素和/或属性时,用complexType;当需要基于内置的基本数据类型定义一个新的数据类型时,用simpleType
41、。4.3 模式文件中的元素声明element元素作用:声明一个元素属性:name type ref minOccurs maxOccurs fixed default 示例:声明元素的方法1使用内置的数据类型声明元素的方法(续)使用用户定义的simpleType xs:element name=geometry type=/2声明元素的方法(续)使用complexType34.4 模式文件中的属性声明模式文件中的属性声明 required、optional、prohibited简单类型复杂类型示例:4.5 在XML模式中创建元素和属性组 sequence:指定组中的子元素按照一定顺序进行出现
42、group:用通用名组合成组 choice:同一个时刻只能使用组中子元素的其中之一 all:组中的子元素在父元素内可以按照任意顺序出现 attributeGroup:创建属性组。sequence元素 作用:给一组元素一个特定的序列 示例:choice元素 作用:允许唯一的一个元素从一个组中被选择 属性:minOccurs/maxOccurs 示例:group元素 作用:把一组元素声明组合在一起,以便它们能够一起被复合类型应用 属性:name/ref 示例:attributeGroup元素 作用:把一组属性声明组合在一起,以便可以被复合类型应用 属性:name/ref 示例:4.6 模式重用 模
43、式的一个关键特征是支持高度重用性。在一个模式中声明的组件能够被另一个模式重用。Include元素 Import元素Include元素 Include元素用来包含或引用定位在一个明确地址的外部模式。语法:Include元素包含2个属性:id用来指定元素的ID。ID必须是唯一的,但ID属性是可选择的。schemaLocation指定模式文件的物理地址。目标命名空间 Include元素允许引用任何在同一目标命名空间的上下文中被定义的外部模式。使用schema元素的targetNamespace属性来声明目标命名空间。.Import元素 Import和include完成同样功能,但import允许访问
44、来自多个不同目标命名空间的外部模式。语法:Import 元素包含3个属性:id用来指定元素的ID。ID必须是唯一的,但ID属性是可选择的。namespace指定被引入模式所属名称空间URI。schemaLocation指定模式文件的物理地址。4.7 本章小结 Schema的文档结构的文档结构XSD的数据类型的数据类型XML Schema中元素的声明语法中元素的声明语法XML Schema中属性的声明语法中属性的声明语法在在XML模式中创建元素和属性组模式中创建元素和属性组模式文档的重用模式文档的重用第5章 XML文件的显示CSS和XSL呈现呈现XML 文件文件 原始的原始的XML文件可以用文件
45、可以用IE 6.0(或者更高的版或者更高的版本本)或者或者Netscape 6来察看来察看,但是如果希望让但是如果希望让XML文档象文档象Web页那样显示就必须添加一些页那样显示就必须添加一些额外的显示信息。额外的显示信息。样式表简介样式表简介l为什么需要样式表为什么需要样式表 XML数据本身并不包含数据显示的信数据本身并不包含数据显示的信息息l什么是样式表什么是样式表 描述结构文档表现方式的文档描述结构文档表现方式的文档l使用样式表的意义使用样式表的意义数据或内容与表示层分开数据或内容与表示层分开lW3C推荐的样式表标准:推荐的样式表标准:CSS级联样式表级联样式表XSL可扩展样式表可扩展样
46、式表样式表样式表 定义:包含一个或多个定义:包含一个或多个XML文档的格式文档的格式化规则的文档。包含指示化规则的文档。包含指示WEB浏览器如浏览器如何将原文档的结构翻译为一个能够显示何将原文档的结构翻译为一个能够显示的结构的代码。的结构的代码。任务:任务:将将XML文档转换为另一种结构文档转换为另一种结构描述如何表达被转换的信息描述如何表达被转换的信息5.1 级联样式表CSSCascading Style Sheets 是一个文本,包含特殊元素格式特征的一个或者更多的规则和定义。它控制XML文档和HTML文档中的标签如何被格式化。Css的作用?的作用?1.能把XML文档翻译成特定的目标,将X
47、ML文档转换成另一种结构。包括:创建一个不变的文本(比如标签和标题)指定提取所需数据的过滤器 改变元素和属性的顺序 排列内容 完成复杂的转换,根据存在的内容计算值2.描述如何表达被转换的信息。包括:屏幕或页面的布局 将转换的内容分配成列表和段落 属性的规范(例如间距、页边框、对齐和字体)CSS的语法的语法 语法如下:语法如下:elementname property1:value;property2:value;Elementname指定元素的名字指定元素的名字 Property1和和 property2为属性名为属性名 Value指定属性名的不同的值指定属性名的不同的值CSS示例 Hello
48、,there!Good morning!How are you?xsampdoc color:navy;display:blockgreeting font-family:Arial;font-size:32pt;width:30em;color:redquestion font-size:x-large;color:blackanswer font-size:20pt;color:blue字体属性字体属性 CSS的局限 CSS可以格式化XML文档,能够很好的控制输出的样式,比如色彩、字体、大小等,只能是文档的样式或外观。CSS不能重新排序文档中的元素。CSS不能判断和控制哪个元素被显示,哪个
49、不被显示。CSS不能统计计算元素中的数据。5.2 可扩展样式表XSLl什么是XSLCSSHTMLXSLXMLXML文档文档XSL样式表样式表XSLT 转换过程转换过程格式化格式化过程过程结果结果文档文档什么是什么是XSL?XSL(eXtensible Style sheet Language),可扩展),可扩展样式表语言样式表语言,是是XML的首选样式表语言,它要比的首选样式表语言,它要比HTML使用的使用的CSS复杂得多。复杂得多。XSL是是WWW协会推荐的一种标准。它包括协会推荐的一种标准。它包括3部分:部分:一个转换一个转换XML文档的方法;文档的方法;XSLT 一个定义一个定义XML部
50、分和模式的方法;部分和模式的方法;XPath 一个格式化一个格式化XML文档的方法。文档的方法。XSL格式对象格式对象5.2.1 XSLT XSL在转换在转换XML文档时分为两个过程,文档时分为两个过程,第一转换文档结构;第一转换文档结构;其次将文档格式化输出。其次将文档格式化输出。这两步可以分离开来并单独处理这两步可以分离开来并单独处理第一步的转换过程,也就是第一步的转换过程,也就是XSLT。XSLT处理器的工作处理器的工作XSLT样式表XML文档MSXML解析器XSLT树源树XSLT处理器结果树XSLT和CSS级联样式表级联样式表CSSXSL转换转换 XSLT使用简单使用简单使用复杂使用复