登陆注册
9313600000025

第25章 电子政务的信息技术支撑(6)

W3C给出了两种样式表语言的推荐标准,一种是层叠样式表CSS,另一种是可扩展样式表语言XSL。层叠样式表CSS是一种样式描述规则,目前W3C有两个推荐标准,CSS1和CSS2。CSS2是在CSS1的基础上制定的,基本上涵盖了CSS1,并在CSS1的基础上增加了媒体类型、特性选择符、声音样式等功能,并对CSS1原有的一些功能进行了扩充。

CSS制定之初的服务对象并不是XML,而是针对HTML提出的样式表语言,但同样可以很好地应用于描述XML文档的表现。利用CSS可以定义HTML或XML文档中元素的显示效果,包括元素的位置、颜色、背景、边空、字体、排版格式。

CSS是一种静态的样式描述格式,不遵从XML的语法规范。而XSL是通过XSL进行定义的,遵守XML的语法规则,是XML的一种具体应用。XSL本身就是一个XML文档,系统可以使用同一个XML解释器对XML文档及其相关的XSL文档进行解释处理。

XSL由两大部分组成:第一部分描述了如何将一个XML文档转换为可浏览或可输出的格式;第二部分定义了格式对象FO(formatted object)。输出时,首先根据XML文档构造源树;然后根据给定的XSL将这个源树转换为可以显示的结果树,这个过程称作树转换;最后再按照FO解释结果树,产生一个可以在屏幕上、纸上、语音设备或其他媒体中输出的结果,这个过程称作格式化。

到目前为止,W3C还未能出台一个得到多方认可的FO,但是描述树转换的这一部分协议却日趋成熟,已从XSL中分离出来,另取名为XSLT。与XSLT一同推出的还有其配套标准XPath,这个标准用来描述如何识别、选择、匹配XML文档中的各个构成元件,包括元素、属性、文字内容等。

XSLT主要的功能就是转换,它将一个没有形式表现的XSL内容文档作为一个源树,将其转换为一个有样式信息的结果树。在XSLT文档中定义了与XSL文档中各个逻辑成分相匹配的模板及匹配转换方式。尽管制定XSLT规范的初衷只是利用它来进行XML文档与可格式化对象之间的转换,但它却表现在可以描述XML文档向任何一个其他格式的文档作转换的方法,例如转换为另一个逻辑结构的XML文档、HTML文档、XHTML文档、VRMI文档、SVG文档等。

3.文档资源间的链接语言——XLink

XLink是描述在资源间进行链接的语言。链接反映了不同资源对象之间的关系,而对象的选择是由定位来描述(这就是XPointer的职责)。

在XML1.0标准中规定的ID和IDREF标号类型属性就是建立简单链接关系的情况,XLink对这种基本功能进行了不同方面的扩展。

XLink可以声明多个资源之间的关系。资源这个概念对于WWW来说是具有普遍意义的,资源可以是任何信息或服务的可定位的单元,具体的资源例子有文件、图像、文档、程序和查询结果。所以定位资源是非常重要的环节,一般用XPointer进行资源的定位。当一个链接和一个资源的集合相联系,就认为这些资源加入了这个链接的队列。当然XLink可以链接任何资源,而不仅仅是XML文档的一部分。

XLink可以明确地将元数据(即资源内容)和链接相结合。XLink所链接的资源可以以不同的形式表示,比如在一个新开的窗口中显示,在链接处嵌入或者是代替开始的文档,用户可以根据具体情况进行设置。XLink提供附加函数,如行外链接(out-of-linelink)等。XLink的一个重要应用是用于超文本链接。简单的超文本情况类似于HTML中的A元素,但XLink中定义的链接远远超出了目前使用的HTML链接。XLink可以有多个链接终点,可以从不同的方向进行遍历,而且还可以将链接存储于独立于引用文档的数据库中。

4.XML文档定位的语言——XPath

XPath是用作XSLT和XPointer的对XML文档各部分进行定位的语言。它给XSLT和XPointer(XML文件内部链接语言)提供一个共同、整合的定位语法,用来定位XML文件中的各个部位。XPath除了提供一套定位语法之外,还包括一些函数,它们提供基本的数字运算、布尔运算和字符串处理功能。

XPath使用一个紧凑的、非XML的语法来方便实现XPath在XML属性值中的使用,它基于XML文档的逻辑结构,并在该结构中进行导航。除了用于定位,XPath自身还有一个子集能进行匹配,它能验证一个节点是否匹配某个模式。XPath把一个XML文档看成一个树或节点的模型。节点的类型可以有多种,包括元素节点、属性节点和文本节点。

XPath的基本语法由表达式构成。在计算表达式的值之后产生一个对象,这种对象有以下四种基本类型:节点集合、布尔型、数字型和字符串型。表达式的计算是依据上下文的出现,XSLT和XPointer中分别规定了XPath表达式将在怎样的情况下出现。这些上下文的关系包括:节点、一对正整数(表明位置和大小)、一套变量绑定集合、函数库以及规定表达式范围的名域声明。其中,变量绑定是从标量名称到变量值的映射;变量的值是一个对象,可以是表达式可能得到的各种类型,也可以是其他没有规定的类型;在函数库中,每个函数有零个或多个参数,并返回一个结果。XPath定义了所有支持工具都必须实现的核心函数库。其中函数的参数和结果都是上面涉及的四种基本类型。当然XSLT和XPointer还对XPath的核心函数库进行了扩展,有些函数的参数和返回结果数据类型超出了这四种基本类型。XPath基本上和在文件系统中寻找文件类似,如果路径是以“/”开头的,就表明该路径表示的是一个绝对路径,这和在UNIX系统中关于文件路径的定义是一致的。

5.XML内部结构部分的定位语言——XPointer

XPointer支持对XML的内部结构部分的定位。XML中支持两类链接:简单链接和扩展链接。

简单链接类似于HTML中的链接,扩展链接允许从某个链接跳转到任意其他链接。这种跳转实际上是从文档树型结构的某个部分转移到另一位置,这种转移基于不同的特性来实现,如元素类型、属性值、相对位置或字符的内容等。

实际上,扩展链接的概念就是可以链接的资源不单单只有一个,可以同时链接多个资源。被链接资源的显示由具体实现的应用程序来决定。XPointer还提供了对元素、字符串和其他部分的特定引用方法,XPath通过轴和谓词对XML文档中树型结构各部分进行选择。XPointer的思想也是如此。XPointer还可以表达多个这样的选择,而且依次在前面所选的结果中再次进行选择。

对XML文档进行标识的形式有三种:一种完整的XPointer定位形式以及两种简记形式。完整形式以一个大纲的名称开始,然后紧跟一个表达式,该表达式用括号括起。如果该大纲为XPointer,其表达式将根据与XPath兼容的方式来访问XML文档信息集合中的节点。

下面的示例表示了从文件的LINK元素到文件http://www.xlinksample.Com/xpointer.xml中根元素的链接,其中“xpointer(/child:*[position()=1])”就是用于定位的XPointer。

示例:

1.<LINK>

2.xmlns:xlink="http://www.w3.org/TR/1999/xlink"

3.xlink:type="simple"

4.xlink:href="http://www.xlinksample.com/xpointer.xml

5.#xpointer(/child:*[position()=1]>

6.</LINK>

XPath作为XPointer的基石提供了表达定位的语法。XPointer还在之上进行了扩展,XPath提供了对XML文档中的子节点集合进行定位的方法。XPath通过谓词对轴(所谓的轴就是指child,descendant,parent,ancestor等关键字,表明查询的范围)进行过滤是根据对节点或节点集的操作来定义的,而XPointer还需要指定另外意义上的文档节点。例如,要选择两个节点中的某一部分,而这两个节点可能处于文档中不同的子树中。为了实现这一点,XPointer把定位定义为XPath的广义节点。

6.XML处理、查询——XQuery,DOM,SAX

(1)XML数据查询语言——XQuery

XQuery构建在XPath规范之上。事实上,XQuery的一些特性已被公认为是非常基本的,且已合并入XPath2.0规范中,这个规范目前为W3C的XMLQuery和XSL工作组共同拥有。这意味着样式表创建者将很快就能利用像序列、量化和更强有力的类型控制这样的特性。同样,也已将条件表达式和迭代器添加到了XPath语言中,而在以前它们是XSL语言的一部分。这样就可以在样式表中编写更清晰的代码,并且为样式表创建者带来较少的麻烦。

尽管依照句法来说,它在数据操作上比XSL要好用得多(它还支持许多XSL不直接支持的操作),但是其底层的引擎还是必须读取每篇文档、解析它,然后使用查询语言对它操作。因此,对于已建立索引的文档资源库(即所谓的XSL“数据库”),XQuery是快速访问文档具体内容的更好的解决方案,但对于未建立索引的文档,它并不是一个好的解决方案。

XQuery包含一些用来访问资源库中多个文档的机制。这个文档函数允许以编程方式在同一个查询中访问多个文档。但是对于仍需要装入并解析每个文档的情况,要达到最佳性能,还需使用XML数据库或一些其他形式的索引模型。

XQuery适宜处理“混合”文档,即:同时包含叙述流和量化数据的文档。例如,一个医疗记录文档可能包含手术期间外科医生操作的描述,以及手术期间使用的药物、血和其他物品的数量。该文档不适合存储在关系型数据库中,XQuery能直接从该XML文档中抽取出量化信息。如果文档是纯数据,那么将该文档引入到关系型数据库中进行操作会更有意义。

(2)DOM

DOM是HTML和XSL文档的编程接口规范,与平台和语言无关,可以用各种语言在各种平台上实现。该模型定义了XML和HTML文档在内存中的逻辑结构,提供了访问、存取XML和HTML文档的方法。利用DOM规范,可以实现DOM文档和XML之间的相互转换,遍历、操纵相应的DOM文档的内容。要自由的操纵XML文件,就要用到DOM规范。

DOM文档中的逻辑结构可以用结点树的形式进行表述。通过对XML文件的解析处理,XML文件中的元素便转化为DOM文档中的节点对象。DOM的文档结点有Document,Element,Comment,Type等结点类型。每一个DOM文档必须有一个Document结点,并且为结点树的根节点,可以有子结点,或者叶子结点,如Text结点、Comment结点等。任何格式好的XML文件中的每一个元素均有DOM文档中的一个节点类型与之相对应。利用DOM接口将XML文件转化成DOM文档后,就可以自由的处理XML文件。

(3)SAX

与DOM比较而言,SAX是一种轻量型的方法。在处理DOM的时候,需要读入整个的XML文档,然后在内存中创建DOM树,生成DOM树上的每个结点对象。当文档比较小的时候,不会造成什么问题,但是一旦文档大起来,处理DOM就会变得相当费时费力。特别是对内存的需求,也将是成倍的增长,在某些应用中使用DOM很不合适,一个较好的替代解决方法就是SAX。

SAX在概念上与DOM完全不同,不同于DOM的文档驱动,是事件驱动的,也就是说,并不需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。

7.XML的一般应用过程

要构建一个XML应用,一般分为以下四个步骤:

(1)选择或编写DTD和Schema

确定应用系统中哪些信息需求采用XML来表示。如果是比较简单的数据结构,而且是单个简单的应用,可以采用DTD来定义XML信息的结构;如果数据结构和应用关系复杂,建议采用Schema来定义XML信息的结构。需要确定下列因素:文档中有哪些标记、标记可以包含哪些其他标记、标记的数量和次序、标记可以有的属性以及这些属性可有的值。

(2)生成XML文档

将DTD或Schema想象成需要填写的一个模板。对于每个元素,从其所在的位置,如数据查询、全文检索或目录查询中取得数据,然后简单地将其放入模板中。当模板被填满后(所有必需的元素被填入而且文档是有效的),能将其发送给要使用文档的另外一方。

(3)解释XML文档

当接收或读取到XML文档需要处理的命令时,有两种API可以使用,即前面所介绍的DOM和SAX。DOM提供了标准的功能来操作文档中的元素。SAXAPI在解析文档过程中发生一定事件的时候会发生通知事件。在对其响应时,不作保存的数据将会被抛弃。如果文档非常大,推荐使用SAX而不是DOM,因为这样将节省很多内存,尤其在只需要一个大文档中的几个元素时。在另一方面,DOM所提供的丰富的标准功能在SAX中是没有的。

(4)显示XML文档

同类推荐
  • 世界名人成长历程:创造成功的经济学家(3)

    世界名人成长历程:创造成功的经济学家(3)

    三十六行,行行皆有状元;而商场亦如战场,瞬间便又是另一翻风云。“创造成功的经济学家”为我们隆重讲述了商界名人们的成长史,品他们于商海间的每一个决策后的那份坚定和执着。
  • 电子商务概论

    电子商务概论

    本书共十章,内容有:电子商务概述、电子商务模式、电子商务技术基础、电子商务与网络营销、电子商务与物流、电子支付与网上银行、电子商务安全技术、移动电子商务、电子商务法、电子商务应用等。
  • 雷锋的故事(语文新课标课外读物)

    雷锋的故事(语文新课标课外读物)

    现代中、小学生不能只局限于校园和课本,应该广开视野,广长见识,广泛了解博大的世界和社会,不断增加丰富的现代社会知识和世界信息,才有所精神准备,才能迅速地长大,将来才能够自由地翱翔于世界蓝天。否则,我们将永远是妈妈怀抱中的乖宝宝,将永远是温室里面的豆芽菜,那么,我们将怎样走向社会、走向世界呢?
  • 企业会计业务核算与财务报告编制

    企业会计业务核算与财务报告编制

    企业会计业务核算与财务报告编制(第2版)》以会计职业能力培养为目标,以会计报表项目(会计科目)――会计报表――会计调整顺序组织内容,分为十五章。编写中结合高职高专会计专业教学的特点,在结构、体例、理念、教学内容等方面均有改革与创新,充分考虑到相关行业的职业资格认证需求,对接与会计从业资格、初级会计资格、中级会计师等认证有关的课程。
  • 第十六届新概念获奖者作文精选(B卷)

    第十六届新概念获奖者作文精选(B卷)

    黄兴主编的《第十六届新概念获奖者作文精选(B卷)》是一部收录第十六届全国新概念作文大赛获奖者优秀作品的文集。《第十六届新概念获奖者作文精选(B卷)》在2014年的新概念作文大赛结果出来后的第一时间,选取获奖的作者的新作,结集出版,分为A、8两卷,本书为B卷。按类别分成“献给时光不悔”“赶在落雪之前”“火蝴蝶”“秘地百合”“美狄亚的眼泪”“一路高速”六个章节。这些作者多数为90后,文章均为小说和散文,文风多样,可读性强。本书可以当做作文“圣经”,得到老师和家长的认同。对于喜爱青春文学的青少年读者,本书也是不错的青春文学阅读宝典。
热门推荐
  • 现代公司的统一财务控制与统一收支结算

    现代公司的统一财务控制与统一收支结算

    本书围绕大公司或集团货币资本的管理与控制进行探讨,涉及集团公司的多级法人治理结构下的公司运营诊断、公司财务风险,以及统一财务控制所要求的预算管理等。
  • 晨光搁浅流年

    晨光搁浅流年

    “最恣情的时光,皎洁的繁花”这是对青春最初的定义。“你在我半夏微凉的夜里”这是我对陪伴最好的诠释。十六七岁的年华里,还好遇到了“你”...从深秋初冬伴我到暖春酷夏的“你”
  • 感动欧美:快乐只在一念之间(下)

    感动欧美:快乐只在一念之间(下)

    人生原本是快乐的,只要你愿意,你就可以远离纷扰与烦恼。快乐是一种心态,它左右我们生活的质量;快乐是一种责任,它承载着我们精神的砝码。拥有快乐,我们才能将生命画卷渲染得明媚亮丽。快乐只在一念之间,你愿意握住快乐,悲伤与阴霾就会烟消云散。从今天开始,让我们做一个快乐的人,用我们欣悦之情面对生活所有的馈赠,并且,从今天开始,我们要将快乐打包,赠予每一个熟悉的或者陌生的人,让所有人的脸上绽放欢颜。
  • 娇妻难驯:总裁大人宠不够

    娇妻难驯:总裁大人宠不够

    被误诊,为报复,凭着那三流演技,成功绑架总裁,却被吃干抹净,简直亏大发了!可这事还没完!柳云市岑氏集团总裁岑书泽,钻石男神却告知所有人,他的女友逃了,请所有市民通缉!见者有赏!“你放过我吧,大不了你也绑我?”“好!”苏宛宛惊喜。夜晚,被绑了蝴蝶结的她变成了他的礼物。“只绑了一次,不够,下次再换个花样!”外人眼中深不可测衣冠楚楚的岑总裁,在她面前化身彻头彻尾的流氓,当真是衣冠禽兽!
  • 消失的航班

    消失的航班

    漆黑的夜里,一架满载乘客的飞机,在近万米的高空中,被雷电击中分崩瓦解..
  • 首席的杀手老婆

    首席的杀手老婆

    几年前的雨夜,叱诧黑白两道的他,救起了一个全身赤裸、肌肤溃烂的女孩。为了自己的一片江山,他训练她、操纵她。却从没有想到,这个渐渐长大的女孩,竟是他命中真正的克星。在需要她去救赎自己可怜的爱情时,在疯狂占有她却依旧毫无结果时,他才赫然发现,她…竟不知爱为何物!
  • 风雨人生

    风雨人生

    我出生在河北农村一个贫寒的家庭,自四岁起就一直过着饥寒交迫的生活。我过早地体会到生活的艰辛,和母亲一起承担着生活的重负。虽然家境贫寒,但我一直感受着母亲给予我们兄妹的关怀和爱护,母亲的爱是我童年最温暖的回忆。
  • 冷王遗爱

    冷王遗爱

    一朝穿越,是福还是祸?倾心一人,是情还是过转身成仇,是义还是错?复而得生,是幸还是堕多少年,浑浑噩噩你既不言,我和用说娶她,我为你轻舞一曲杀我,自有人为我千醉一刻剑抵喉间,我问,曾得到却失去和从未得到哪一个更让人失落你不语,只笑着将怀中的白玉摔破
  • 通天仕途

    通天仕途

    这是一个部队转业军官的官场人生,有刀光剑影,也有旖旎柔情,看似平坦的官路实则步步杀机,陷阱遍布,一不小心就会陷入万劫不复的境地。
  • 君子堂日询手镜

    君子堂日询手镜

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。