高瑾宇 曹 平 陈 润 王博甲
(中航工业综合技术研究所,北京 100028)
基于XML的文件结构化方法研究
高瑾宇 曹 平 陈 润 王博甲
(中航工业综合技术研究所,北京 100028)
针对航空产品单一型号研制过程中遇到的技术文件格式要求严格、编制工作量巨大、引用关系及技术指标错综复杂等问题,提出了基于XML的文件结构化存储方法,建立了文件结构特征描述,研究了文件结构特征处理,讨论了基于XML的文件存储和读取技术。最后,通过一个实例验证了所提方法的正确性。
Word;结构化文件;智能编辑
随着信息技术进步与电子技术文档编制复杂性增加,航空产品型号研制过程中,各类型技术文件编制过程的标准化工作已经成为一项艰巨任务。由于技术文件数量繁多,设计人员经常要受困于这些技术文档重复而繁琐的编写工作。在现有技术条件下,通常针对此类问题的解决方案是对于每一个文件,做一个文件模板。这种方法在一定程度上缓解了该类问题,提高了文件编写效率。但是在文件模板编制工作上又花费了大量精力,并且一旦标准发生更改对应技术文件模板更改工作量很大。
本文提出了基于XML存储技术的文件结构化设计方法,将文件模板分别用文本文件和样式文件存储起来。这样不但实现了模板中文本和样式相分离,同时XML存储技术使文本结构可以结构化存储,为文件内容查找、重用、审查奠定了理论基础。
可扩展标记语言(Extensible Markup Language,XML)是一种用于标记电子文件,使其具有结构性的标记语言。通过此种标记,文件模板中文字化内容可以被结构化表达。因此,基于XML的文件结构特征描述有利于实现文件交换、传递和共享。
文件结构特征是组成文件的基本单元,通过对文件内容分析,将文件主要分为结构要素、特征要素、编辑要素3大类,如图1所示。其中:
结构要素:任何一个整体可以看作是由若干结构模块组成,文件中结构模块称之为结构要素。在一份具体的文件中,封面、目次、正文、附录等要素就是一份文件具体的结构要素。
特征要素:每一个结构要素中,包含若干特征单元,称之为特征要素。在具体的文件中表格、图片、文本等都称之为特征要素。
编辑要素:文件编辑过程中对文本的编辑操作统称为编辑要素。在具体操作中,列项、示例、注释等都称为编辑要素。
一般来说,在一份完整文件中一定包含若干结构要素、若干特征要素与若干编辑要素,并且结构要素、特征要素与编辑要素是多对多关系,如图2所示。
在文件文本中,有一类特殊文本内容——图、表特征要素,对于此类特征要素,不能直接以文本格式存储起来,需要对其进行格式转换。
对于表格来讲,要提取表格行列尺寸,单元格合并情况,以及表格填写情况等属性,首先将表格属性记录下来,再通过对表格单元格记录完成表格存储。读取时首先通过解析表格属性添加表,然后通过操作表格单元格完善表,最后通过填写表格单元格完成表。
对于图片来讲,Word图片采用Base64编码格式,要想对Word图片进行存储,首先要将Word图片解码处理并存放到一个指定文件夹,然后在文本中记录图片全路径。读取图片时,首先通过图片全路径找到对应Word图片,然后将Word图片导入并设置相应格式。
在文件文本中,为了方便处理文中多次出现并且频繁需要修改的文本,引入一种特殊结构特征——书签。其最大特点是可以实现相同内容书签中文本统一,具体表现为某一位置书签内容发生修改,其他位置书签同步修改。在具体处理中,将文中满足此特点的文本用一组前缀相同的书签封装起来。并且在文件处理中,为了把一套文件中不同文件的基本信息统一,将记录文件基本信息的书签用一个XML文件保存起来,以备其他文件使用,这样大大提高了文件修改效率和统一性。
在具体结构要素中,以封面要素为例,由于封面结构布局固定且“编号”、“密级”、“标题”等内容术语在文中多处出现字段,所以可以利用表格技术来设计封面格式布局,利用书签技术来填写相应文本内容。这种类型的结构要素称作为表格型结构要素。
以普通文本内容为例,将每一个段落看作是一个最小文件元。在进行文件存储时,首先判断文件元中是否有特殊格式文本,如果没有,提取文本格式信息,并将格式记录;如果有,则需要进行特殊格式转化,将特殊格式转化为可存储文本,然后再进行格式记录。这种类型的结构要素称作结构型结构要素。
以目次为例,由于目次内容是提取文件中大纲级别层级来自动生成,这种类型的结构要素称作创生型结构要素。
根据上述对文件结构特征的描述和处理,对于一份文件,基于XML的存储原理可按照3级结构来存储。一级结构存储文件结构要素构建文件整体框架,二级结构存储文件文本属性,三级结构存储文本内容。
在一级结构中,将文件中各个结构要素依次存储,在各个节点属性中设置结构要素的名称、书签等属性。在二级结构下,存放每个结构要素整体架构,并规定架构特征属性。在三级结构下,将文件结构要素中具体内容依次存放。
因此,将Word文件转换为XML结构化文件时,首先需要纵观全文提炼文件结构要素,其次判断结构要素类型。如果是表格型结构要素,需要确定表格的行、列、行宽、列宽、合并单元格、是否填写内容等基本属性,并且在需要修改的地方添加书签;如果是结构型结构要素,需要先确定文本结构层级,并确定每一层级样式及书签位置;如果是创生型结构要素,需要记录其在文本中存放位置,并且记录文本与内容的关联关系。
在文本存放中,主要采用节点式存放方式,将文件中每一个段落看作是一个最小单元,节点内容存放文本内容,节点属性存放文本样式,如果遇到特殊格式的表格、图片就在节点下按照表格、图片的存放方式来进行存放。
在XML文件解析时,首先要事先打开该文件所对应的dot文件,然后基于根节点循环。在每个结构要素节点下,通过循环其中子节点将结构要素内的内容依次输出,然后根据具体属性将文本刷新编辑,这样按节点将文件全部输出,就形成了一份符合标准的结构化模板。
根据以上描述,本文以GJB/Z 170.2-2013 《军工产品设计定型文件编制指南 第2部分:设计定型审查意见书》为例。
通过对文件结构的分析和处理,确定文件结构要素分别为封面、签署页、目录、目次、附录,并且文件第1章有特殊格式图片、文件第6章有特殊格式表格,因此导出的结构化模板如图3所示。
从图3中可以清楚地看出,文件结构化模板结构要素清晰,可阅读性强,这样既有利于文件内容重复利用,又方便文件模板修改。并且通过对结构化模板解析,同样可以得到与之前模板一样的Word模板。
本文以文件结构化的存储和读取为研究目标,着眼于实际应用需求,分析了现有解决方案的不足,提出了基于XML的文件结构化存储方案,讨论了其主要技术路线,并给出了关键问题的解决方案,最后用一个实际案例证明了方案的可行性。利用该技术开发出来的文件模板,体积小、格式准确、编写效率高、调用速度快,明显提高了文件编制和管理效率。
虽然基于XML的文件结构化存储方案,在文件编制过程中大大提高了编制效率,但是要想完全实现文件智能编辑,需要引入知识重用和挖掘,而结构化的文件设计可以完全解决文件中关键字搜索这一技术难点。因此,在后续研究中可以将知识挖掘考虑进来,使得文件编辑更加智能化。
[1] 曹平,杨文宏,朱亮. 基于XML的开放电子文档标准分析[J]. 航空标准化与质量,2011(6).
[2] 关巍. 利用VSTO实现文档的智能化[J]. 开发应用,2006(6).
[3] 惠怡静,邵学彬,程旭. 基于VSTO的Word数据自动化提取及报告生成系统的设计与开发[J]. 计算机光盘软件和应用,2013(19).
[4] 宋向瑛,朱嘉贤. 基于VSTO的文档格式处理系统设计与实现[J]. 电脑编程技巧与维护,2013(10).
[5] 王瑾. 基于VSTO的文档智能化实现[J]. 科技咨询导报,2007(18).
[6] 关巍. 基于VSTO自动批量生成WORD文档的设计与实现[J]. 信息与电脑,2010(11).
[7] 程旭辉. GJB 0《军用标准文件编制工作导则》实施指南[M]. 北京:国防工业出版社,2002.
[8] 张方纪,刘洪星. 结构化自动化Word文档的集成化应用技术[J]. 电脑知识与技术,2011(28).
(编辑:劳边)
T-65
C
1003-6660(2017)01-0045-03
10.13237/j.cnki.asq.2017.01.011
[收修订稿日期] 2016-11-23