首页 > 范文大全 > 正文

XML文件映射为嵌套表格的方法研究与应用

开篇:润墨网以专业的文秘视角,为您筛选了一篇XML文件映射为嵌套表格的方法研究与应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:xml文件的高可扩展性和通用性目前被广泛用作中间数据模式,而嵌套表格在描述具有层次结构的复杂对象方面具有简单、直观的特点,在最终编程领域适合作为复杂数据结构的呈现方式被使用。论文提出一种将复杂层次结构的XML文件映射嵌套表格方法,利用中间数据结构,给出了复杂层次结构的XML文件映射为中间数据结构的算法。实验表明方法有效地降低了XML文件到嵌套表格映射的复杂性。

关键字:XML;嵌套表格;映射;中间数据结构

中图分类号:TP311文献标识码:A 文章编号:1009-3044(2010)01-247-03

Research and Application of Method Mapping XML to Nested Tables

ZHU Jing, SUN Zhong-lin, WEI Yong-shan

(Shandong University of Science and Technology College of Information Science and Engineering, Qingdao 266510,China)

Abstract: XML file is widely used as intermediate data model due to its scalability and universality, while the nested table is suited to be used to present complex data in the final program area because of its simpleness and intuitive in describe the complex object that has a hierarchical structure. Paper proposes a method to map the XML file with complex hierarchy to the nested table by an intermediate data structure and gives a algorithms to map the XML file with complex hierarchy to the intermediate data structure. Experiments prove that this method is effective in reducing the complexity of converting XML file to nested table.

Key words: xml; nested table; mapping; intermediate data structure

最终用户编程面向的是一些没有计算机编程背景的普通用户,近年来流行Yahoo! Pipes、Microsoft Popfly等互联网情景构造工具是常见的最终用户编程例子[1]。但是大多这类工具都是提供了基于数据流的可视化编程环境,研究表明,数据流和控制流对于最终用户来说是难以理解的编程概念[2],易用性较差。从面向最终编程领域的角度来讲,嵌套表格是一种常用的数据表现形式,对最终用户来说没有理解上的困难,并且嵌套表格具有强大的数据呈现能力,比较适合作为面向最终用户的编程界面。因此,在情景应用构造工具中,采用嵌套表格数据呈现方式,会大大降低情景应用构造的复杂性,从而提高工具的易用性[3]。情景应用中涉及到的数据是通过访问形式多样的个性化网络信息资源到的,为降低最终用户访问网络信息资源的复杂性,常常需要将个性化的资源进行统一的资源描述。目前XML已经成为互联网上数据表示和数据交换的新标准,它具有较强的数据描述能力[3],可以描述各种各样不同形式的网络资源。论文研究的工作是在情景应用构造环境下最终用户能够自主将需要访问的个性化网络资源通过统一的XML文档表示的前提下进行的(由本课题小组其它人员完成)。

因此,在情景应用环境中,用嵌套表格来呈现复杂结构的XML文件尤为重要,这与本文的研究目标是一致的。论文提出一种将树形结构表示的XML文件映射为嵌套表格的方法,提出了一种中间数据结构,并给出了XML文件转化为中间数据结构的算法。通过大量的实验证明该方法能够有效地降低XML文件向嵌套表格映射的复杂性。

1XML映射为嵌套表格的方法

1.1 XML文件到嵌套表格的实例

XML文件是一种具有层次关系的树状结构,节点之间存在上下层关系,本质上来说是嵌套与被嵌套的关系,如图1所示,它表示的是一个XML文件所对应的树型数据结构示意图,其中,节点用矩形表示,数据用正方形表示,1表示记录条数为1条,N表示记录条数为多条。

将图1所表示的树形结构的XML文件转化成相应嵌套表格的样式,如表1所示,可以看出嵌套表格数据模型对最终用户提供了可视化的数据呈现方式,以简单、直观的方式展现了XML文件的模式和数据。

整个嵌套表格数据模型由两部分构成:表头结构和表格体内容。表头结构表示的是XML文件模式,表格体内容表示的是XML数据记录。

在表头结构中,节点“客户”、“联系方式”、“订单”、“订单详细”是一类由多个子节点构成的节点,在嵌套表格模型中是由通过多个列的组合而形成的,将其称之为组合列。而节点“电话”、“数量”等(XML文件中对应的叶结点)没有任何子节点构成,在嵌套表格中仅占有一列的位置,将其称之为原子列。

1.2中间数据结构

表格是由许多单元格(cell)组成的,而每个单元格都是由行和列组成的地址标识的,因此实现XML文件向支持嵌套的表格映射,实际就是将XML文件的模式信息和数据信息都转化成为表格中相应的由行列坐标地址标识的表头单元格信息和表格体单元格信息。通过表1可以看出,在嵌套表格中是通过上下、左右相邻单元格的跨行跨列合并来嵌套地表示XML模式和数据的层次关系。因此,得出每个用行列坐标标识的的单元格合并信息是问题解决的关键。

在该方法中,设计一种中间数据结构来存储映射所需要的单元格合并信息(行列坐标标识)和单元格内容显示信息,此中间数据结构有效地降低了XML向嵌套表格转换的复杂性,同时论文在第三节具体给出了复杂层次结构的XML文件映射为中间数据结构的算法。表头中间结构和数据中间结构分别通过算法1和算法2生成,两者的中间数据结构内部含义相同,下面只通过表头中间数据结构来具体说明单元格合并信息和内容显示信息。

表2和表3表示表头对应的中间数据结构,表2 MergeArray表示表头单元格合并信息,表3 MergeContentArray表示合并后要显示的表头内容信息。表2中相邻同种颜色的单元格内部坐标相同,表示要合并的单元格,合并信息是通过跨行、跨列合并单元格实现的,合并后单元格中显示的内容为左上角单元格的内容。例如表2第一行合并后显示表3中(0,0)单元格中的内容即“客户信息”。通过使用此中间数据结构比较容易绘制出表1所表示的嵌套表格样式。

2 映射算法

2.1 XML文件模式映射到嵌套表格的中间数据结构算法

算法思想:遍历XML文件,使用队列从根节点开始逐层处理元素。一次入队一层元素并以*作为层分隔符号。然后从队列中逐个取元素处理,此元素叶节点数量即为此元素应占的单元格数,处理完将此元素的子元素全部入队并入队*,如果此元素为叶节点,则压入空格占位(即需要合并行)。递归处理直至队列为空或队列中所有元素均为空格退出。表4具体描述了算法的过程。

2.2 XML文件数据映射到嵌套表格的中间数据结构算法

算法思想:解析xml文件,获取某个结点下的所有叶结点,其中包括了重复的叶结点,进行去重处理后得到唯一的叶结点。查找每个叶结点的公有父节点(即一条数据块记录的根节点),然后逐个处理公共父节点。获取每个父节点下的叶结点数据后,即形成一个记录的数据块,每条数据记录内容采用对齐比较的方式,每个叶节点均对应不同数量的数据,每个叶节点均和数据数量最多的叶节点比较,缺少的个数即为需要合并的行数。表5具体描述了算法的过程。

3 总结

XML文件到嵌套表格的映射在面向最终用户领域编程方面经常会涉及到,但是对于复杂的XML文件实现向嵌套表格的直接映射比较复杂,为此,论文提出一种中间数据结构降低XML文件向嵌套表格映射的复杂性,通过中间数据结构来存储XML文件向嵌套表格的映射信息,通过中间数据结构生成算法得到关键的单元格合并信息和单元格显示信息,通过大量的实例验证了论文提出的映射方法的有效性。

参考文献:

[1] 杨少华.用户主导的互联网情景应用构造研究[D].北京:中科院计算所,2009.

[2] J. Wong and J. Hong, What do we mashup when we make mashups?[R] In: Proc. of the 4th International Workshop on End-User Software Engineering (WEUSE'08), Leipzig, Germany,2008,35-39.

[3] 王桂玲.用户主导的互联网虚拟应用构造与方法研究[D].北京:中科院计算所,2009 .

[3] 吴杨杨,陈锻生.一个基于XML的Web信息源集成方案究[J].计算机工程与应用,2001,10:34-37.

[4] 王,潘懋,郭艳军.基于XML元数据和Schema的信息提取研究[J].计算机工程与应用,2008,44(33):135-137.

[5] Guiling Wang, Shaohua Yang, Yanbo Han. Mashroom: End-User Mashup Programming Using Nested Tables[J].In Proc. of the 18th International World Wide Web Conference (WWW), Madrid, Spain, 2009, pp. 861-870.

[6] B.A.Nardi,J.R. Miller.The Spreadsheet Interface: A Basis for End User Programming[R],HP Labs Technical Reports,.2007.

[7] H.L. Lau and W. Ng, Querying XML Data Based on Nested Relational Sequence Model[R],In: Proc. of the Poster Track of International Conference on World Wide Web (WWW Poster'02), Honolulu, Hawaii, USA, 2002.