利用XML格式解析原理批量进行成果资料格式检查

2013-10-29 01:10唐雪梅
物探化探计算技术 2013年5期
关键词:文档成果资料

唐雪梅

(中石化西南油气分公司 勘探开发研究院,四川 德阳 618000)

0 前言

随着成果资料的海量增长,成果资料格式检查工作量十分繁重。为解决各种地质科研项目成果提交的文档格式需与上级要求的归档标准格式严格相符的问题,技术人员经常面对电脑屏幕进行检查。而对于电子文档屏幕上展示的格式,如果不认真核对资料格式,就不能得到修正。作者在长期从事检查资料格式的过程中,从研究电子文档的不同格式入手,找到了Word文档的XML格式这个切入点,从自己熟悉的编程语言入手,编制了一个功能较全的Word电子文档格式检查工具,可以快速地辅助解决进行资料归档前与标准归档格式的匹配问题[16],大大减少了人工进行资料翻阅的强度,提高了文档纠错率。

1 XML格式和Word文档的关系

XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等[15]。如何定义这些标记,既可以选择国际通用的标记语言(比如HTML),也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识;它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。用户可以定义自己需要的标记,这些标记必须根据某些通用的原理来创建,但是在标记的意义上,也具有相当的灵活性。一个简单的XML格式描述的错误信息表示为:

简单说,XML就是一种数据的描述语言,虽然它是语言,但是通常情况下,它并不具备常见语言的基本功能即被计算机识别并运行[6]。只有依靠另一种语言,来解释它,使它达到你想要的效果或被计算机所接受作为一种便捷的数据操作和数据传输的标准,在如今各种网络应用系统开发过程中发挥着越来越重要的作用。特别是现在,各单位、企业都不止一个应用系统,数据不同步、数据不共享已经给人们工作中带来了许多麻烦。而各系统的数据库不同,开发平台不同也直接给数据共享的实现带来了很大的困难,XML所具有的灵活性恰恰可以解决这一数据传输问题,使得不同平台数据库的数据有了一个自定义的标准,开发人员可以利用XML跨越不同平台和不同数据库系统,利用程序把数据转换为XML进行共享。

2 WordProcessingML简介

WordProcessingML(简称 WordML)即 Word标记语言,它是传统Word文档格式和内容的一种镜像处理格式。这种标记语言其实派生于结构定义比较广泛的XML格式。自Microsoft Office Word 2003伊始,新增了支持WordML的功能,引入了生成 WordML文档的“Save as XML”命令。这种XML支持是其最令人兴奋和最强大的功能之一,它针对XML进行了完整设计,并支持WordML的原生XML词汇。从这以后,当双击一个由Word生成的XML文档时,Windows加载程序会自动将该文件与Word进行关联。WordML非常强大和灵活,足以捕获整个往返过程中Word文档的所有多信息编辑和格式。如果在Word中创建一个普通文档,将其保存为WordML,然后再从Word中打开它,该文档就能保证与原始文档一样。Word文档的宏观WordML描述结构如下:

从上面的格式也可以看出,XML与WordML格式是同承一脉,只是WordML是专门针对Word文档定义的一种标记语言。WordML格式的文档使用的根标记必须是“w:wordDocument”,根元素的名称“wordDocument”来自http://schemas.microsoft.com/office/word/2003/WordML 命 名 空间。在WordML中,一般使用前缀“w”来引用这个命名空间。然后在根标记对之间结合使用其它的标记进行文档属性、字体、列表、样式以及包括部分段落实体等的详细描述。当从Windows资源管理器中双击该文件时,Windows会自动确定它是WordML文档(通过检查顶部的mso-application处理说明),然后启动Word来处理它。

批量检查Word文档的可行性。众所周知,包含有图片、文字等复杂对象的Word文档是不可识别的二进制代码,文档撰写人在没有Word编辑器的情况下,是不能直接通过文档本身对其进行编辑和修改的,如果强行修改会导致文档格式错误。即使能够修改,也需要利用OfficeVBA、OLE对象、自动化控件或者支持其相关操作的控件等编程实现。但如果能够将Word文档呈现为XML格式,这种编辑和修改将会变得方便和容易,而且具有很好的通用性[3]。图1是 Word文档按照 WordML描述的一种文档模型,展示了其清楚的结构模型和良好的层次关系。图2则是一段示例文本片段的XML格式段落描述图。正如Word编辑器中一样,WordML中的描述结构也以段落标记对<p></p>体现。这种描述格式不仅使对象和内容一目了然,更重要的是它非常强大和灵活的格式,保证了与Word文档的完美互换。如果熟悉WordML格式,用户仅用简单的记事本工具就可以完成很多的文档修订工作。鉴于此,我们通过WordML格式标记进行解析,将标准归档文件的XML数据和准备提交的成果资料数据的XML数据进行对比统计分析,找到与标准格式的差别,并通过自动或者手工修改,这就具备了批量检查Word文档的可行性。

图1 WordML描述文档框架结构Fig.1 The frame structure of WordML document

3 资料格式检查功能设计

3.1 WordML格式解析

WordML(WordProcessingML)是自 Office 2003 Reference Schemas开始的后续版本提供的一种XML方案,它描述了如何将一份Word文档以及相关联的部分(如字形、字体、表格、图形等诸如此类),以XML文档的形式表现。通过对WordML编程来操作Word,就可以在不用引入第三方库的情况下,把Word当作XML文本来操作,并且可以在没有安装Word的机器上运行。最简单的WordML文档仅仅包含五种基本元素和一个命名空间(namespace),基本结构由document和body元素组成,后跟一个或多个块级元素,如表示段落的p[12]。一个段落包含一个或多个r元素。r代表一段连续文本,它是具有一组共同属性(如格式设置)的文本区域。一段连续文本包含一个或多个t元素,t元素包含一个文本区域。表1列出了document、body、p、r和t元素在WordML中的含义。

如图2中选择部分的段落描述和字体描述。我们通过读取<p>标记的元素就能够获取有关文档段落的信息,再通过其中的子元素标记<pPr>可以获得段落属性,通过<r>就可以获取与运行属性相关的一系列参数。如果对<r>再细分下去,可以通过<rFonts>获取字体格式,通过<t>获取段落之中的文本片段。如果对其中的所有项目进行解析,就可以获取Word文档包括内容和格式的完整信息。图3代表只包含一个文字片段“如何快速检查成果资料格式”的XML格式标识和Word编辑工具显示格式的匹配关系。

表1 Document、body、p、r和t元素在 WordML中的含义Tab.1 Meaning of"document","body","p","r"and"t"element in the WordML document

图2 Word转换的XML格式段落标记片段Fig.2 A part of the mark language for the paragraph of XML format transferred from the Word document

在 .Net编程过程中,利用XMLReader、XMLWriter等操作类进行XML格式数据的读取和筛选操作,这种解析方式具有很大的通用性,而且可以随机地解析WordML中的任何一个部分,也可以解析整个文档,但是这要求编程的时候结构考虑要周到,否则随着解析量的增加,组合方式的变化,程序的编制工作将会越来越复杂。

3.2 格式检查工作流程

图3 Word文档XML描述与Word编辑器显示对比举例Fig.3 Comparison of format description based on XML for Word document and Office Word editor show styles

地质成果资料是复杂的,每种资料的归档格式要求不尽相同。编制格式检查工具的时候要尽量使其具有通用性,这样才能够以不变应万变。其实纵观各种归档资料的检查对比工作,均脱离不了两个主要的检查点:①内容的纠错;②格式的检查。在要求标准的归档格式之后,无论是成果报告、还是科研报告,既有共同点,也有不同点。共同点是各种成果报告均会涉及标题、目录、正文、参考文献等类似的版块,均涉及到内容是否有错和段落、字体格式等是否有统一标准等问题。而不同点是不同的报告或者论文不同的版块可能出现的位置不一样,体现的形式如版面设置、段落格式、字体格式等不一样。在编制批量检查工具时,需要把对格式要求明显的标题、目录、正文、参考文献等版块分离出来,然后对每个版块的标题格式、正文格式、所在位置、页码、页眉页脚、边距等格式进行标准设置,并独立保存为一个标准的格式文档,并转换成WordML格式描述文件(见图3)。

将成果资料的每个关注版块独立出来,格式和内容都清楚明了,便于对比和检查,更能够保证在格式检查时其相对独立性,即使其中某个版块检查可能出现错误,也不会影响到其它的版块的检查正确与否,这样就能全面控制成果资料归档格式的检查的准确率。要能准确地检查一份归档成果资料,首要条件是设置标准的成果资料格式。格式设置主要有:纸型、页边距,字体大小,颜色,行高等。对于不同部份分别设置不同的格式,如标题是小二号字、内容是四号字等。让被检查的归档资料与这标准格式进行匹配和对比,匹配不成功就生成错误报告或者发现与标准格式异常的部分就提出纠错建议。整个检查工作的流程归结起来如图4所示。

3.3 主要检查功能设计

图4 归档资料与标准格式检查对比流程图Fig.4 Flow chart of contrast examination of format of archiving data and standard of presupposition

资料格式检查对比功能是本文讨论的重点。程序可以直接完成Word到WordML格式的转换工作,然后与标准XML文档模板进行比较,将对比检查结果或者修改意见通过检查工具以信息或者输出文件的方式展现给用户。因为使用了一种易适配、易转换的XML通用数据格式,所以各个模块转换和传递的数据都有统一的格式和标准,可以为后续检查功能的增加提供方便灵活的接口。检查工具目前具备如下的几项检测功能:

(1)页面设置检查。页面格式检查较为简单,利用标准格式提供的页面设置参数与提供的归档资料XML格式对比主要参数,如遇主要设置参数有差异,便在输出报告中进行输出和提醒,并给出正确的页面设置参数:

(2)封面和扉页的格式检查。目前所涉及的地质归档资料封面和扉页的格式相对简单,对照标准格式的页码范围、题目格式,设置参数和子项目格式设置参数进行扫描并逐条对比,并按照格式的先后检查输出结果就可以。主要区别点在于段落的行间距、字体、字号等的区别。

(3)标题和正文的格式检查。在 Word文档中,标题的体现方式有很多种,但在一个标准格式的报告中,标题格式只需要规定需要的级数即可,WordML中通过使用<wx:sub-section>标记的嵌套表示标题的级数和上下级关系(见图5)。在进行格式检查的时候,可将首次遇到的标题级别标志设置为“0”,遇到与规定标题格式相一致的定义则将级别的标志增加“1”,如果遇到与定义格式不匹配的标题格式,则与正文格式进行匹配,如果找不到标题和正文的匹配项,则输出不匹配信息和提出修改警告,如果遇到同级标题匹配结束,则将检查标题的级别标志相应减“1”。直到标题级别标志编程为“0”时,则表示完成了报告中某一部分的不同级别的格式对比检查,如此循环整个文档,就可以完成所有部分和级别的标题格式检查。

图5 有<wx:sub-section>标记分级标题(上)和使用普通格式的标题分级的WordML格式(下)Fig.5 Format of using"<wx:sub-section>"mark(upper)and normal format(lower)of classification title

正文格式的提取和检测在格式检查过程中是最简单的,如果仅是正文格式的判断,则会相对容易。在小篇幅的文档,人工操作也容易解决,如果是超大篇幅的成果报告,仅凭手工检查,工作量是非常巨大。此时最好还是编程实现检查,但无论文件的大小与否,想通过WordML操作,都将会变得非常复杂。同时,在WordML描述之中,标题和正文是没有严格的区分界限的,如果文档没有严格按照标题样式来定义,那么确定标题之间的顺序或者确定标题和正文就会相当困难。例如不同的标题使用相同的格式,将很难检测出上下级标题;另外,如果标题使用正文的格式,也将无法判断这种版式,因为在WordML中,标题和正文都是当作段落来处理,用<w:p>标记表示。因此,在程序编制中只能增加辅助判断“×.×”或者“×.×.×”的格式进行近似匹配来确定,并将所有的标题按名称和级别辅助罗列出来供用户检查对比。

(4)图表格式编号检查。图表内容在现代图文并茂风格的报告中也占据相当大的比例,手工检查图表格式也相对容易,毕竟图表的显示状态很直观,尺寸、版式稍有变化就很容易体现出其不同之处。但文章中编号的检查就没有那么容易了,必须逐项进行对比检查,否则就会出现错误和遗漏。在成果报告的编排中,一般图表的标题和引用,均有一定的格式要求,在编程中进行检查判断也是可行的。如利用“图”“表”后跟数字一般均为图表项,利用其所在的章节数或者图表的编号,就可以判断图表是否连续编号并判断引用的图表号是否在图表索引号范围之内。下面列出图表的引用编号及其标题说明格式示例:

以上为标准格式中图、表标题的WordML描述,其样式和字体都已清楚说明。

(5)文字及拼写错误检查。在WordML中,错别字的检测是较容易实现的。Word XML文档对象模型中,通过对XMLShowAdvancedErrors属性的设置,可返回包含关于错别字的信息。Word文档编辑器中错别字是以下滑波浪线形式注明的(见图6(a))。在 WordML中,则以proofErr标记注明(见图6(b))。

在程序中,直接对proofErr节点进行解析,然后在检查信息输出文件中将前后的上下文与找到的错误信息文本一并显示和提示,给用户提出错别字修正意见。

4 实际应用举例

由于归档资料来源不同,其格式也会有些差异,如科研报告和成果报告文档格式都来自各研究部门和各地震施工队伍提交的成果资料报告,如何快速地进行提交文档的格式检测是十分必要的。经作者在多份成果资料的检查工作中测试,此检查工具运行正常,能够较快地输出提交成果资料与标准格式的对比结果,甚至将从提交资料中发现的格式异常点进行全部输出,方便后续的人工检查和核对。图7显示了某份成果资料检查的整个过程,图7(a)是检查报告格式之前设置的标准格式,图7(b)为其部分XML格式数据。检查工具的工作界面如图8所示,输出的检查结果见图9。

经过测试,本系统的准确率在90%以上,其中的10%包括能够正确指出的成果报告格式异常点但程序无法处理的部分。因为是涉及到大量的文本解析,对于较大成果资料解析耗时相对较长,但一般的200页左右的成果报告,数秒钟之内就能够完成成果资料的快速逐行扫描检查,同时生成错误格式报告以及纠正方法。但如果使用单纯人工来检查对比的话,至少要花费数十分钟至数小时的时间,而且还经常出现遗漏的错误。因此利用此检查工具协助人工操作,可以极大地提高检查效率和结果准确率。

图8 软件检查过程运行界面截图Fig.8 Screen-capture of software running interface

5 结束语

图9 某地质成果报告检查输出结果Fig.9 Checked result of one report of geological results

Office系列办公工具已经是一个功能非常强大的文字编辑工具,如今支持开放式标记语言XML格式,更让其如虎添翼,它不但极大地提高了人们的工作效率和改变了人们的办公习惯,更多的为用户提供了方便和灵活的文字编辑方式,通过这种能使数据更易适配或更易转换的通用数据格式,XML正在彻底改变应用程序和用户间的交互方式。利用XML格式进行格式解析和检查判断只是成果资料管理手段之一,它充分利用计算机快速运算的特点,来辅助人工进行部分格式检查核实,但其检查工作的正确与否最终要靠人工检查来核实确认。这种检查方式不仅能应用于成果归档资料的格式检查工作,还可以应用于类似如论文、报纸、杂志等出版行业的书写格式检查工作。通过这样的一种智能化、自动化的检查步骤,可以很大程度地减少人工工作强度,改变以往效率低、耗时长、检查不全面、出错率高等弊端。虽然不能替代Word的功能,但在一定程度上可提高人们的工作效率。当然,检查工具的稳定性和实用性还需要进一步的测试和完善,作者将在今后的工作中进一步优化检测判断方法,增加错误自动修订等功能,让软件的功能更加智能化,这将成为后期工作中最具期待性的目标。

[1]刘俊崝,陆现采,徐士进,等.基于XML的地质信息共享与交换模型[J].物探化探计算技术,2001,23(2):160-165.

[2]肖晓玲,卢正鼎,张翔.VC与Fortran混合编程及其在大地电磁测深中的应用[J].物探化探计算技术,2000,22(1):82-85.

[3]陈国胜,何宗明.基于XML技术的Word文档录入及格式检测系统设计[J].计算机时代,2009(4):35-37.

[4]徐东风,彭红星.廖俊杰.基于Java的文档格式检查技术的研究及其应用[J].计算机工程与设计,2010,31(19):4309-4315.

[5]陈呈超,秦勃.基于学术论文质量模型的检索排序算法研究[J].中国海洋大学学报,2008,38(1):135-138.

[6]Charles F Goldfarb.XML实用技术[M].北京:清华大学出版社,1999.

[7]唐洪彬.Word、Excel自动阅卷系统的设计与实现[J].宿州教育学院学报,2004,7(2):55-57.

[8]曹益华,张昱.DTD可选的XML访问控制研究[J].微型计算机系统,2008(1):73-79.

[9]余双,曹冬磊,戴蓓洁,等.高效XML验证技术的实现[J].计算机工程与设计,2008,29(4):937-941.

[10]吴洁.XML应用教程[M].北京:清华大学出版社,2005.

[11]丁跃潮,张涛.XML实用教程[M].北京:北京大学出版社,2006.

[12]李文峰,段红亮.Java实现 Word文档到XML文档的转换浅析[J].现代计算机,2008(3):158-160.

[13]晶辰工作室.Word 2000VBA开发实例指南[M].北京:电子工业出版社,2000.

[14]李贵林,李建中,杨艳.用Plug-in实现对PDF文件的信息提取[J].计算机应用,2003(2):110-112

[15]开放的XML开发官方网站[N/OL].http://openxmldeveloper.org/default.aspx.

[16]石油天然气勘探与开发地质成果报告编制要求[S].中石油化工集团公司企业标准Q/SH 0166-2008.

猜你喜欢
文档成果资料
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
Party Time
PAIRS & TWOS
JUST A THOUGHT
验收成果
工大成果
“健康照明”成果聚焦
基于RI码计算的Word复制文档鉴别
“三医联动”扩大医改成果