APP下载

一种复杂的XML格式之间转换的解决方案

2009-02-01梁广吉宋晓慧

软件工程 2009年11期
关键词:文档

梁广吉 宋晓慧

摘要:随着网络技术的迅速发展,越来越多的信息被以XML文档形式来交换。XML具有开放性、自描述性和平台无关性,近来己成为网上应用系统间数据交换的标准。本文提出了一种复杂的XML格式之间转换的通用解决方案,解决了商务通信系统中不同XML格式文档的数据转换问题,使得行业数据传输和表达按照行业规范自动分析和处理。

关键词:XML;格式转换;文档

随着互联网应用需求及其相关支撑技术的发展,XML[1]的元语言特性及其本身良好的结构性使它成为互联网异构环境中各种不同类型和不同领域数据相互交换的开放标准。XML格式之间的转换是XML技术领域内的一个比较常见,且又是一个很重要的题。即使是在同一个行业的内部,数据文档的XML Schema之间的差距也非常大。企业信息系统的集成,数据信息的交换等都需要进行XML数据格式之间的转换工作。本文提供一种更适合于解决复杂的XML格式之间转换的解决方案。该方案成功的解决了PDF的XAF文件格式,FileNet表单文件格式到IBM Lotus Forms表单文件格式的转换工作。

1 一种XML格式之间转换的构架

不同XML格式之间的转换工作是常见而又非常重要的。在IT领域,为了解决这一问题,各种新方法、新技术层出不穷。比如利用XSLT[4]等技术进行XML数据格式的转换,XSLT(Extensible Stylesheet Language Transformations)是一种基于XML的一种语言,用以将一种XML格式数据转换为另一种XML格式数据,也可以转换成任意其它格式的数据。而对于复杂转换经常是困难的,甚至是不可能的。又比如RDF/RDFS/OWL技术(XML Schema是用来定义XML文档结构,而RDFS/OWL(本体描述语言)则定义了文档词汇,提供了一种共同的理解)。本文提出了一种XML格式之间转换的方案构架。如图1所示。

图1 XML格式转换框架

原文件(XML格式)通过解析器(Parser)解析生成数据信息,并存储在数据模型里。数据模型是整个构架的核心部分。数据模型主要是基于目标文件的XML Schema[2]而构建的,也可以基于目标XML文件的领域知识构建。它可以是普通的数据模型,也可以是基于EMF(Eclipse Modeling Framework)的数据模型。在对原XML文件进行解析的过程中,解析器要根据基于原文件和目标文件的XML Schema文件而生成的映射表中的信息,做相应的解析优化处理。

在输出目标XML文件之前,优化器和转换规则先后对数据模型中的数据信息进行相应处理。配置文件在构架中的作用是用来管理优化器和转换规则的。用户可以根据业务逻辑的需要通过配置文件来定制优化器和转换规则。可以看出这种解决方案的简单灵活性,可复用性和可扩展性。只需为不同的原文件提供一个解析器就扩展了构架的应用。

2 构建XML格式转换的数据模型

2.1 模板及其性质

数据模型是用来存储解析进来的数据信息的,它是构架的核心部分。目前有两种构建数据模型的办法:普通的数据模型和基于EMF技术构建的数据模型。

普通的数据模型是应用普通的Java类来构建,主要是基于目标文件的领域知识,通常是结构化的数据模型。这种模型构建的优点是简单、通用,主要的缺点是需要构建输出模块从而把模型中的信息输出为满足目标XML Schema的XML文件。图2显示了在电子表单领域中应用的结构化数据模型片段。

图2 电子表单领域的结构化数据模型片段

基于EMF技术构建数据模型的技术已经相当成熟。我们主要应用目标文件的XML Schema来构建EMF数据模型。基于EMF的数据模型具有事件通知机制和持久化方面的支持。因此,模型带来的最大的好处就是开发者不必自己动手构建输出模块。

模型的构建是XML格式之间转换的关键。构建的模型应当满足应用程序的需求(对照映射表,模型要完全支持原文件中的可匹配信息),不要求模型囊括相关领域的所有通用知识,但模型提供给原文件解析器的API应该简单易用,模型要具有高可扩展性和良好的可维护性。

3 优化器(Optimizers)在解析原XML文件中的应用

当原XML文件中的信息被解析进来,并存储在已经建立的数据模型里,此时的数据模型称为原始数据模型,模型里面的数据信息称为原始数据信息。我们根据目标XML文件的特性,需要对原始数据信息进行优化处理。可以根据需要创建若干个Optimizers。

根据电子表单领域的实际需要,我们创建了很多Optimizers。举例如下:

(a)线(Line)的对齐、连接,如图4所示:

我们通过对以上Optimizers的应用,使得PDF文件的转换效果更佳。

事实上,优化器的开发应用取决于两种格式文件之间的可匹配的程度。如果两种文件的可匹配性很高,基本上不用开发优化器。反之,为了使数据平滑输出,需要根据业务逻辑的需要进行相应的优化处理。

此外,如果某种原文件的解析器需要用户通过UI配置一些解析参数的话,我们也可以提供Parser阶段应用的“Optimizers”。举例来说,原XML文件的某个元素和可匹配的目标XML文件的相应元素是一对多的关系,那么Parser的解析就有了多种选择。这时候,让用户进行选择似乎是最合理的解析策略了。

4 转换规则在生成目标XML[3]文件格式中应用

数据模型里面的信息经过优化后,就可以输出或者序列化为满足目标XML Schema的数据文件。在这个过程中,我们又可以根据用户的转换要求执行一些通用的转换规则。比如在电子表单领域,用户经常有这样的转换要求:对转换后的电子表单文件,要求统一更改标签(Label)的前景颜色(Font color),统一更改页面(Page)的背景颜色(background color),所有转换后的文件都要加入一个标准的包含企业标志(Logo)的Toolbar模版等等。这些转换要求可以以转换规则的形式存在。用户可以开发定制并应用自己的转换规则来批量转换原文件。对比Optimizers,我们知道转换规则主要是针对目标文件的通用操作的。用户对目标文件的常用的操作都可以以Rules的形式存在于转换框架里,极大的丰富了格式转换的框架。

5 应用配置文件管理Optimizers和Rules

配置文件就是一个XML格式的文件,用以持久化管理所有的Optimizers和Rules。用户可以通过定制Optimizers和Rules来配置自己的Profile(通常情况下,每一种原文件的解析器都对应一个缺省默认的Profile。系统还为所有解析器(包括用户定制的解析器,既第三方解析器)提供了一个可扩展的通用的 Profile)。在转换的过程中,需要加载Profile,进而应用里面的优化器和转换规则来对数据模型进行深入处理,从而完成转换工作。

清单1. 给出了 Profile 文件的示例片段。

xml version="1.0" encoding="UTF-8"?

http://sample.com.cn/profile

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://sample.com.cn/profile ProfileSchema.xsd ">

com.ibm.conversion.demo.eform.form

version control is applied for developer

2

Sample .form Profile

< !-- 假定有一个后缀名为 .form 的基于 XML 格式的电子表单文件 -->

form

com.ibm.conversion.demo.eform.optimizer.

FAlignOptimizer

yes

com.ibm.coversion.demo.eform.rule.ChangeAppearance

no

猜你喜欢

文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
Word文档 高效分合有高招
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
Office Word文档溯源方法研究