资源描述:
《气象数据发布网关系统的设计与开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、气象数据发布网关系统的设计与开发1、相关定义1.1、XML数据的发布定义管理服务器发布的XML数据是由嵌套的标签元素所构成,每个标签元素具有0个或多个子元素和0个或多个属性,而且元素本身也可以包含文本信息,即元素的数据内容。XML数据文档中标签元素可以嵌套任意的深度,属性可以是不同的数据类型,其中也可以在其中的一个属性中指定元素标识ID。另外,节点还可以表示文档元素的附加信息,如文本信息的CDATA类型属性,文档中其他元素的连接信息,如IDREF(S)/URI(s)类型元素等。为了安全地发布XML数据,作为算法基础,下面介绍在整个发布过程中都要用到的一个XML文档的公式
2、模型。以下我们使用Label表示元素标签名和属性名集合,用Value表示属性和元素值集合。定义2(XML文档):一个XML文档是一个集合d=(Vd,vd,Ed,ΦEd),其中:Vd=Vde∪Vda是一个分别表述元素和属性的节点集,对于任意属性v∈Vda,必然有一个val∈Value与之对应,而对于任意一个元素v∈Vde,Value中有可能有一个数值与之相关联,也可能没有,因为元素节点本身可以不包含任何数据内容;vd是描述一个XML文档的元素节点,是XML文档的根节点;17Ed=Ede∪Eda?Vd×Vd是边的集合,其中e∈Ede是一个描述元素和子元素的关系的边,它也可以
3、是元素之间的连接,即由IDREF(s)/URI(s)属性引出的连接边。e∈Eda是代表一个属性到元素的关系的连接边;ΦEd:Ed→Label是边标识映射函数,即实现边到标识符之间的映射。根据上面的定义,假设一个XML数据文档d=(Vd,vd,Ed,ΦEd)为某单位的年报表,为阐述报表内容和内容安全控制,可以将此XML数据文档表示成一个如图2.4所示的树形结构。在此XML树形结构中,白色顶点代表XML元素,灰色顶点代表XML属性,实线边代表元素-属性和元素-子元素的关系。在实际应用系统当中,为了规范XML数据的格式,可以利用文档类型定义(DTD)或XML架构(XMLSch
4、ema)定义在各种应用程序中的文档类型及结构。Annual-reportYear2007NameSouthwestUniversityAssetsAssetExpensesFundsExpensesFundsAssetFundingFundingFundingPatentsPatentPatentDateIDDeptDescrTechAuthorsDateIDDeptDescrTechAuthorsDICO03/26/200701/17/2007EEDDeptEEDDeptTotTotDateTypeAmount03/18/2006CNRDateTypeAmount01
5、/20/2006CNRDateTypeCNRAmount02/28/2006图2.4一个XML数据图形表示例子Fig.2.4AnexampleofgraphrepresentationofanXMLdocument在图2.4中的XML数据表示的树形结构中,为了实现查询结果的完整性校验,我们假定元素的孩子存在顺序关系,这个顺序关系在客户端确定一个查询结果的真实性是非常重要。那么我们怎样定义这个顺序呢?对于一个元素e,我们让它的属性在顺序中总是排在前面(如图2.4所示),为此定义一个函数child(),对于18一个XML文档d=(Vd,vd,Ed,ΦEd)的任一元素v∈Vd
6、e和一个整数i∈{1Ncv},这个函数就按照定义的顺序返回图中元素v的第i个孩子,其中Ncv代表节点v的孩子总数。2.3.2XML数据的Merkle哈希树Merkle哈希树[21]是一个使用在多个计算领域的著名的真实性和完整性校验处理机制,Naor和Nissim在[23]中就利用这种机制来创建了一个认证数据结构,从而实现了认证数据结构的高效率创建和维护。这种结构包含的是用户证书的认证信息。准确来讲,该结构存储了一个排序的哈希树架构,树的叶子节点与撤销的证书相对应,在应用中验证一个证书是否撤销就变成了验证这个证书是否包含在哈希树的叶子节点中。Devanbu也在[24]中也
7、采用了类似的方法来验证提交到关系数据库中的查询结果的真实性和完整性。这种方法还用在电子支付平台中用来实现公钥签名数目的最小化,这些公钥签名用来验证参与支付的证书。然而,据我们所知,目前还没有一个完整使用Merkle哈希树来处理XML数据发布的例子,只是Devanbu在[24]中基于Merkle哈希树来创建了一个架构,该架构是基于一种叫”xtrie”的数据结构,实现了客户端对特定数据查询结果的校验,这个结果也是来自于非信任的第三方信息发布服务器。但此方法需要严格限制XML数据的格式,没有考虑XML属性,元素的内容值只能存储在叶子节点,且只有