在信息化建设发展的过程中,作为信息主要载体的文档,成为我们工作生活中不可或缺的一部分,其中对基于XML格式的流式办公文档的套用最为广泛。文档採用基于XML的格式之后,对XML文档的各种访问技术也被用于对流式办公文档的处理。针对基于XML格式的文档,出现了很多XML数据访问技术。
基本介绍
- 中文名:文档访问
- 外文名:Document Access
- 访问控制模型:BLP、DBLP、TRBDAC等
- 处理技术:XPath、UOML、ODQ等
- 文档格式:ODF、OOXML、标文通等
- 访问需求:格式无关、查询粒度适中等
文档访问概述
在信息化建设发展的过程中,作为信息主要载体的文档,成为我们工作生活中不可或缺的一部分,其中对基于XML格式的流式办公文档的套用最为广泛。目前世界主流的流式办公文档格式主要有3种:标準为IS0/IEC26300;2006的开放文档格式(open document format,ODF)、标準为ISO/IEC 29500:2008的OOXML(officeopen XML)以及标準为GB/T20916—2007的标文通。这3种流式文档格式都基于XML,相应的处理技术也由原来VBA、宏等方式逐渐过渡到利用XML相关技术进行处理。
在早期,用户对流式文档的操作,主要基于办公文档处理软体,并可以使用VBA、宏等方式扩展对办公文档的处理。带来的问题是,传统的方式效率低,速度慢,所能处理的文档格式单一,因其过分依赖办公软体产品,使之对于不同格式的流式文档而言,无法通过同一个办公软体实现操作互通,给用户带来不便。
流式办公文档採用基于XML的格式之后,对XML文档的各种访问技术也被用于对流式办公文档的处理。针对基于XML格式的文档,出现了很多XML数据访问技术,如:XPath、XSLT、DOM和SAX、XQuery、LINQ、相应格式的API/BD、UOML、ODQ等。
XML文档访问
随着XML(eXtensible Markup Language)在电子商务、政务、网路出版和移动通信等领域的广泛套用,越来越多的公司把XML作为其存放信息或与外部世界交换信息的手段。XML已经成为web环境中描述数据的标準,如何实现XML文档的安全访问控制是进行数据保护的一项重要内容。当这些XML格式的信息存储在计算机时,如果包含了比较敏感的数据,就需要一种灵活高效的访问控制机制,既保证合法用户能够方便快捷地访问资源,又要阻止非法用户的访问请求或合法用户的非法访问请求。
国内外对XML文档的访问控制的研究有很多。其中自主访问控制策略DAC具有相当大的缺陷,它是建立在用户本身能够保证客体的可信性的假设基础上的,这个假设通常不成立;基于角色的访问控制策略RBAC是一种灵活而有效的访问控制策略,但在拥有多个安全等级的信息系统中效果不佳;基于规则的访问控制可以解决这些问题,BLP模型是一种基于规则的访问控制模型,源自军事套用领域,对一般套用过于严格,但又有许多优点,根据实际需求进行改进并得到一个新的DBLP模型。
文档访问控倒
支持读操作的访问控制模型在处理读操作时的工作过程如图中虚线部分所示:
XML文挡访问控制过程

- 当用户请求访问XML文档时首先将文档解析为DOM(Document Object Model)树。
- 根据文档的DTD(Document‘Type Definition)及存放文档授权信息的XAS(XML Access Sheets)标记DOM树,给文档中的每个节点都设定授权符号(+允许访问,一禁止访问)。
- 将DOM树中所有授权符号为“一”的节点移除,将剩下的节点转化为XML格式返同给用户。
- 移除某些节点而形成的新的文档可能不符合原来的DTD。通过将DTD中所有的元素和属性都设定为可选的来解决该问题,此过程称为loosening DTD。用户只能看到他有权访问的那部分文档,这样就确保了数据的保密性。然而,这些模型没有详细研究更新操作的访问控制,也没有考虑由于更新操作引起的数据完整性问题。
如果向以上支持读操作的模型引入更新操作以支持用户的更新请求,则要增加如图I实线框内所示的访控制过程,用以处理更新操作带来的有效性验证问题。具体步骤为: - 通过DTD验证(DTD verification)确认更新操作执行之后是否引起XML文档结构的改变,使其不再符合原来的DTD。
- 如果文档的结构发生改变,对原有的DTD不再有效,则检查用户是否具有修改原有DTD的许可权。
- 如果用户具有修改DTD的许可权,则修改DTD并更新文档;否则,不能修改DTD并拒绝执行操作。
现有的DTD验证方法解析被更新操作更改了的XML文档,生成新的DOM树,之后通过遍历每个节点来比较新的DOM树与DTD。这个DTD验证过程需要在记忆体中保留2个DOM树,这将消耗大量的记忆体窑间,解析及搜寻DOM树也降低了访问控制的速度访问控制技术通过定义操作类型来明确区分更新操作的语义,避免了基于DOM树的验证和重複标记过程。
访问控制实现
访问控制系统必须始终保存那些检查访问许可权所需的信息,很多不必要的许可权检查也被重複多次,多余的工作降低了访问控制的速度,可以通过将访问控制过程划分为2步来解决以上问题:
- 根据访问授权信息得出用户的许可权类型,如果请求中某些操作的操作类型高于用户的许可权类型,则这些操作将提前被排除掉,不再进入访问控制过程的第(2)步,这就节省了随后的许可权检查及其他工作。
- 通过步骤(1)检查的操作要通过遍历被标记的DOM树来判断它是否能被最终执行。
下面通过实例来说明如何使用操作类型及分步访问控制技术实现XML文档的访问控制。
分步访问控制第(1)步

首先进入访问控制第(1)步,针对图2中的XML文档,图3中用户Wong的许可权类型是x,因此没有请求D类型操作的许可权。根据文档相应的操作类型表可知,插入title元素的操作是D类型的,该操作就被排除掉。其余2个操作为x类型,被允许进入访问控制第(2)步。
在第(2)步中,遍历使用操作类型标记的DOM树,根据节点上标记的授权信息判断通过第(1)步检查的2个操作是否能被最终执行。根据该用户的访问授权信息标记的DOM树。根据图中元素标记的授权信息可知,对于这个嵌套请求,replace操作通过许可权验证可以被执行,而delete操作被拒绝。
分步访问控制第(2)步

BLP和DBLP模型
BLP模型
BLP模型是对安全策略形式化的第一个数学模型,它用状态变数表示系统的安全状态,用状态转换规则来描述系统的变化规则。它是高安全系统中常用的多级安全策略模型。
在BLP多级安全策略模型中,给每一个数据对象定义一个安全级标籤表示它所包含信息的敏感性;同时给每一个用户定义一个安全级标籤,表示他能访问什幺样的数据。每个安全级标籤由两部分组成:密级和範围的集合。密级是密级集合中的一个元素,密级集合可表示为:{绝密、机密、秘密、公开}。此集合是全序的,即:绝密>机密>秘密>公开。範围的集合是系统中非分层元素集合的一个子集,它的元素依赖于所考虑的环境生产部门、销售部门等等。安全级的集合满足偏序关係,此偏序关係称为支配。
多级访问控制策略模型基于安全级间的支配关係定义了一个安全规则集合来保证系统的安全,系统中每一个操作要由系统通过安全检查。安全检查执行“不上读不下写”的规则。系统中的数据对象称为客体,用户称为主体,设用户的安全级为Ls,数据对象的安全级为Lb,则安全读写规则定义如下:
(1)允许读:若且唯若Ls≥Lb;(2)允许写:若且唯若Lb≥Ls。
若且唯若操作满足模型的所有规则,此操作才能允许执行,可以有效地保证数据流的保密性。其中称(1)是BLP模型的简单安全特性,(2)是BLP模型的特性。
BLP模型是一个很安全的模型,控制信息只能由低向高流动,能满足对数据保密性要求特别高的需求。本文的立足点是希望这种高安全的模型能套用到一般的系统中去。在实际中这种过安全机制带来了一些问题:·特性使得只能由下级向上级或平级写,这样上级对下级发文就受到限制;并且没有考虑客体的安全级可以发生变化。也存在不安全的地方:一方面,特性允许低级用户向高级写,使得低安全级的信息向高安全级流动,可能破坏高安全客体中数据的完整性;另一方面,高读低没考虑是否需要,不符合最小特权原则。
动态BLP模型
动态BLP模型(DBLP模型)的主客体标籤中增加了时限域,时限主要是用来控制客体标籤的动态变化,DBLP模型中的主客体标籤的支配关係首先要比较时限,即若T0∈Ts,标籤之间才具有可比性,否则标籤之间是不可比的。
- 结论1 DBLP模型具有和BLP模型相同的保密性。
- 证明 在DBLP模型标籤支配关係的形式化定义中添加时限可以完成对访问许可权的动态控制,Ts∈To的判断只是一个先行条件,在条件满足时标籤支配关係的判定完全等同于BLP模型,DBLP模型具有和BLP模型相同的保密性,其保密性是可以保证的。
- 结论2 在DBLP模型中可以保证各级客体的完整性。
- 证明 如果主体中所有成员都信任客体成员则客体关于主体具有完整性,与客体平级和经过授权的上级都是可信任主体,其写入操作是可信的,从而不会破坏客体的完整性,DBLP的特性禁止上写保证了上级客体的完整性,从而能够保证整个模型中客体的完整性。
流式办公文档访问
处理需求
随着对流式办公文档套用领域的不断扩展,对其访问与操作的需求也呈现了多样化的趋势,具体如下:
(1)格式无关性需求。由于目前存在的流式办公文档格式不统一,对文档内容的访问与操作都要依赖于支持相应格式的办公软体产品,无法实现离线文档操作。因此需要有一种统一的方式,能够对各种格式文档进行相应的访问与操作,以禁止文档底层存在的格式差异,实现文档格式的互操作;
(2)文档访问查询粒度适中性需求。对于流式办公文档而言,用户常常希望能够以段落、列表、表格、图片等基本元素,即文档的功能点进行访问与操作,而目前对于流式办公文档的访问操作,要幺是利用文档中提供的元数据对整个文档实现获取,粒度较粗糙,无法很好地从文档真实的内容中準确获得数据,很多流式文档的数据资源无法得到有效的共享和利用;要幺就是利用XML的相关技术,访问文档的结构粒度过于细緻,效率不高的同时,也不利于流式文档上下文环境内容理解。因此,流式办文档访问查询粒度的适中性,也成为流式文档得以进一步套用的阻碍;
(3)文档操作的简便实用性需求。利用XML技术对流式文档进行访问,无论是专业开发人员还是普通用户,都需要学习複杂的语言及编程思想,编写繁琐的代码,并且,对文档逻辑结构要有一定的了解,访问方式不够。
处理技术
访问流式办公文档的处理需求的增加,使得相应的处理技术变得非常关键。这里给出XML数据访问技术的简要介绍:
(1)XPath。W3C的XPath主要是对XML文档底层元素和属性等节点直接进行操作的技术,它是直接针对XML的树形结构的路径表达式导航来定位XML文档中的各个节点。表达直观,但表达式构造複杂容易出错,如果不藉助其它工具,则需要手工编写完成,耗时耗力L6J。
(2)XSLT。XSLT是以XPath为基础发展起来的,是利用XPath获取所需节点,并进行相应处理,但表达能力有所限制,不够灵活。
(3)DOM和SAX。DOM技术是利用树型结构来对XML文档中的各个元素(节点)进行处理,使对XML的文档处理更为灵活,但DOM处理需一次将整个XML文档载入记忆体,尤其是对于规模较大的xML文档,其处理速度较慢;为避免DOM载入慢的问题,SAX技术被提出来,利用SAX处理时,不是一次性把整个档案载入到记忆体中,而是对XML档案按其对应节点的访问次序,将档案的一部分载入入记忆体,相比DOM处理速度大大提升。
(4)XQuery技术。XQuery的查询描述能力较强,相比其它访问方式来说,可支持多文档联合查询,但语言过于複杂,普通用户不易完全掌握。
(5)LINQ技术。随着对文档访问技术的简化需求增加,微软在Visual Studio 2008中引入了LINQ,其关键技术包括LINQ to XML,该技术提供了一套比DOM更轻量的API,相比使用以往的操作方法,使得处理XML更为容易。
(6)相应格式的API/SDK。目前主流的流式办公文档格式ODF,00xML以及UOF,都提供了相应的API或SDK,那幺,利用API或SDK来对流式文档的访问就可以直接针对文档的功能点进行直接获取并进行各种操作,便于实现对文档的进一步套用或二次开发。
(7)UOML。UOML是OASIS的正式标準,是电子档案领域针对基于XML的版式文档的接口标準,它定义了一整套非结构化文档的操作规範.可以很方便地对版式文档进行访问与操作,禁止底层细节问题,能够实现不同格式文档的互相读写。
(8)ODQ。ODQ是一种专门针对流式办公文档的访问技术。它从用户使用需求出发,能够脱离办公软体,利用较为通俗的语句,对不同格式的文档直接获取其局部内容并进行相应的操作,方便用户使用;同时对开发人员来说,能够禁止底层的操作细节,使之更专注于上层套用开发。
访问方法比较
使用ODQ对流式文档进行访问,与前3种访问方式进行比较,其优越性体现如下:
(1)针对流式文档,禁止文档格式和版本的差异,为用户提供统一的访问接口,达到了格式无关性;
(2)ODQ具有类似SQL的语法结构,符合用户使用习惯,代码简洁,开发人员无需花费过多时间去学习複杂的查询语言,只需发出“做什幺”的命令,而不用考虑“怎幺做”。为操作流式办公文档带来了很大的方便。
(3)查询粒度方面,与前3种访问方式做比较,如表1所示。因为需要的是通用文档操作功能,不是进行细粒度的访问,并不需要深入了解文档内部结构,在这方面,可以体现出ODQ和API的优越性。
(4)将在基于B/S结构的web套用中,ODQ封装进协定中,大部分内容放在伺服器端,对于客户端来说,不会耗用很大记忆体,可以较为快速地提取所需信息;
(5)在web套用方面,文献中对0DQ的返回值形式进行了扁平化研究,可以将访问结果以更容易的方式进行网路传输并解析。
综合上述分析,这里给出4种流式文档访问方式在代码精简度、查询粒度、对不同格式流式文档问互操作能力支持以及操作简便性的比较,见表1。
