登陆注册
23788900000025

第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文档

同类推荐
  • 后进生转优妙招

    后进生转优妙招

    任何一个班级都存在着“后进生”,这就给工作在第一线的老师们提出了新的课题:如何转变这些棘手学生,让管理、教育从棘手变为得心应手?本书根据中外名师的实际教育经验出发,结合他们真实、优秀的教育案例,在深度点评之余,提出了在当前新教改的局面下因生施教,扬长避短,长善救失的种种具体办法及操作手段,本书是教师捕捉时代最新、最尖端的教育思想动态、开启后进生智慧天窗的一面窗口。
  • 安全教育二年级(上)

    安全教育二年级(上)

    《安全教育》系列编写的是孩子安全教育的图书。本书主要讲述的是自我保护能力是孩子们快乐健康成长的必备能力。只有学会自我保护,远离危险,我们的孩子才能拥有幸福,享受美好的生活。
  • 政治经济学概论

    政治经济学概论

    本书以马克思主义政治经济学基本理论为核心和主线,系统地介绍了自由竞争资本主义时期和垄断资本主义时期的经济现象、经济范畴和经济规律。本书在参照国内优秀同类教材基础上,力图实现创新,体现自己的特色。在方法上,力图实现理论与实践、逻辑与历史、规范与实证的结合;在内容安排上,注重对当代资本主义经济现象的介绍与分析,以体现理论对现实的关注和解释力。本书适用于高等院校经济学与管理学各专业,也适用子自学考试、函授等成人高等教育。
  • 学科融合德育的研究与实践(谷臻小简·AI导读版)

    学科融合德育的研究与实践(谷臻小简·AI导读版)

    本书包括:学科融合德育的研究与实践;生活化的语文并不缺少“语文味”等。使学生逐步形成正确的世界观、人生观、价值观,具有初步的创新精神、实践能力、科学和人文素养以及环境意识的一代新人。
  • 高校党课教程

    高校党课教程

    当今,我国已经进入全面建设小康社会、加快推进社会主义现代化的新的发展阶段。建设有中国特色的社会主义是一项十分伟大的事业,在这项伟大的事业中,高等学校担负着培养和造就社会主义事业建设者和接班人的重要任务。重视并做好在大学生中发展党员的工作,培养出一批又一批坚定的青年马克思主义者、合格的共产党员,是党的教育方针的内在要求,不仅关系到当前高校的改革、发展和稳定,而且关系到社会主义事业的兴衰成败,关系到党和国家的前途、命运。
热门推荐
  • 爵女惹不起:我本猖狂

    爵女惹不起:我本猖狂

    她是杀伐果决的爵女,一朝相遇,这小子耍她
  • 具现化的美梦

    具现化的美梦

    这个世界好似镜中水月一般的不真实。虚幻与真实的交杂,犹如无法言喻的美妙梦境,一触即碎。
  • 片段画面

    片段画面

    .在这个平行世界,有一群隐秘人,拥有强大武力和无尽财富,却鲜为人知。平平无奇的秦萧,得知自己的身世,继承家族意志,开启灵珠。这故事要从被秦家扫地出门开始讲……
  • 若是爱已成伤

    若是爱已成伤

    他多希望能将她捕获,永远安放在身边。在故事之初,她已死去,却一再影响着这个豪门世家的命运……她是一个通灵少女。美丽,寂寞,出身低微却高贵如莲。他是一个富家子弟。英俊,孤独,心机深沉,满身往事。然而,世俗的目光只能紧紧拥抱,挣扎在万丈深渊……
  • 穿越大唐做娱乐明星

    穿越大唐做娱乐明星

    现代流行歌手李锦寒穿越回大唐,做古代的娱乐明星。古代文人千辛万苦寻不到一首好曲子。而他脑子里可是存了上万首现代的流行歌曲,每一首放出来可都是轰动天下。什么TFboy的“左手右手一个慢动作”,周杰伦的“天青色等烟雨而我在等你”……当这些叼炸天的歌曲放出来,李锦寒顿时火了,矜持的古代美女也开始疯狂追星了。为了听李锦寒的歌,投怀送抱那太正常不过了……
  • 神使的工作日志

    神使的工作日志

    你想一夜暴富吗?你想资产过亿吗?你想一夜成名吗?你想众美环绕吗?你想拯救世界吗?还等什么?!签了这份合同去拯救世界吧!————————————————————“女神姐姐你骗我!!这跟说好的剧本不照啊!会挂掉什么的....我好害怕...”“少年呦,放心去吧!拯救世界的重任就交给你了,圣光忽悠着你!!”
  • 诸天幻戒

    诸天幻戒

    一个被社会所抛弃的弃婴,一个生活在底层的青年,一枚神奇的戒指,一件穿越位面的宝物,秦木如何依靠一枚戒指走向人生巅峰!!
  • 委托人俱乐部

    委托人俱乐部

    委托人俱乐部,欢迎您的光临。客人,您只需要付出下辈子的“气运”,我们就能为您弥补生前的所有遗憾。本俱乐部设备先进,团队强大,旗下员工包括资深厉鬼、千年老妖以及各种身份不明人士,全部经验丰富、素质过硬,可以完美应对各种复杂环境,百分百完成委托任务。展望未来,委托人俱乐坚持“以死人为本”的理念,加强创新,不断提升客户体验,争取成为综合素质过硬、客户满意度第一的俱乐部。
  • 逍遥侦探

    逍遥侦探

    一名大学毕业生,机缘巧合之下成为一名侦探,在侦查的过程中发现离奇案件不只是人类的罪恶,而且有来自魂界的魂物共同参与,又是一次机缘巧合,叶一铭成为一名噬魂师,从此他具有侦探和噬魂师双重身份,探查这个世界一切离奇古怪的案件。
  • 青春永望录

    青春永望录

    有你的青春美而甜蜜,有你的夏天凉爽而欢快,最美的年纪遇到最完美的你,青春让我勇敢去追寻埋藏心中已久的你,让我们永远记住属于我们的青春,属于我们的校园之声,我的脚步追逐这未来知道靠岸的你,我为梦倾尽所有,我的梦里只有你。关小羽心底永远为吴浩楠留着一扇门..........