基于XML和XSLT技术的油田钻井报表系统的设计与实现

基于XML和XSLT技术的石油钻井报表的设计与实现

(李小冬,137********,lixd@https://www.360docs.net/doc/a12650825.html,)

1、前言

油气勘探开发过程中每钻一口井,都要根据这口井的实钻情况,填写一本井史,这是最宝贵的数据资源。为了很好地保存、查询以及利用这些数据资源,早在“六五”、“七五”期间,人们就用Dbase等数据库开发工具建立了各种井史数据库。但是随着计算机技术飞速发展,Windows操作系统取代了Dos操作系统,Dbase等数据库管理系统也已被SqlServer、Oracle等功能强大的数据库管理系统所取代。用Dbase开发的井史数据库不论在维护上还是在实际应用上都不能满足要求。为此,很多油田在新的计算机软、硬件环境下,重新开发了“钻井电子资料采集与应用软件系统”,但是钻井报表一直是钻井软件的一个技术难点。考虑到油田钻井报表种类多、格式复杂、数据量大以及要求用word格式的电子文件归档等特点,本文通过分析比较目前(B/S、C/S)报表生成技术的一些局限性;提出了使用word做模板,利用XML来获取和传递数据,利用XSLT来格式化数据,使数据与数据展示有效分离,有效地解决了钻井格式复杂、数据量大等难点。

2、基于XML和XSLT的报表生成技术

XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是标准通用标记语言(SGML,Standard Generalized Markup Language)。XML是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。XML与Access, Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,而XML仅仅是展示数据,用来存储数据的,重在数据本身,因此它具有与平台无关、易于扩展、数据描述性(语义性)强等特点,这些特点使得其成为了数据交换的唯一公共语言。在实际应用中,我们可能需要集成各种异构数据,那么XML是公共数据交换平台的不二选择。事实上,XML与其他数据表现形式最大的不同是:它极其简单。XML的简单使其易于在任何应用程序中读写数据。

XSLT是扩展样式表转换语言(Extensible Stylesheet Language Transformations)的简称,它是一种对XML文档进行转化的语言,它是XSL(Extensible stylesheet language)规范的一部分。XSLT是把XML 文档转化为另一文档的转换语言,即将源文档的所有数据或者部分数据,利用XPath进行选择,生成另外的XML文档或者其他可直接显示或打印的文件格式(例如 HTML文件、RTF文件等)。XSLT语言是声明性的语言,即XSLT程序本身只是包含了一些转换规则的文档。而这些规则可以被递归地应用到转换过程中。XSLT处理程序会首先确定使用XSLT中的哪些规则,然后根据优先级作出相应的转换操作。

报表的本质是将数据按一定的格式进行显示,因此,利用XML和XSLT进行报表设计成为很自然的选择。

即在信息系统中,我们可以利用Word做模板,用XML来存储和传递数据,然后利用XSLT来格式化数据,其具体处理流程如下图所示:

基于XML和XSLT的报表生成技术的关键在于XSD架构文件的设计和XSLT文件的生成。对于XSD架构文件所有的报表可以通用。XSD架构文件是对XML文档的严格定义。XSD由元素、属性、命名空间和XML文档中的其他节点构成。XSD文档至少要包含:schema根元素、XML模式命名空间的定义和元素定义。在XSD中必须定义一个且只能定义一个schema根元素。根元素中包括模式的约束、XML模式命名空间的定义,其他命名空间的定义、版本信息、语言信息和其他一些属性。XSD中的元素是利用element标识符来声明。其中name属性是元素的名字,type属性是元素值的类型,在这里可以是XML Schema中内置的数据类型或其他类型。本文设计的XSD架构文件如下图(部分截图)所示:

至于XSLT文件的获取,可以利用我们专门开发的工具。用此工具可以将设计好的word模板文件转换为对应的XSLT文件。

3、系统设计和实现

3.1 word报表模板文件的设计

打开需要设计的word模板文件,然后在word中加载之前已经设计好的XSD架构文件,选择“在文档中显示XML标记”,加载了XSD架构文件后,如下图所示:

在显示数据的时候,有时我们只需显示单个数据,则在需要显示数据的地方单击“Item”;有时我们需要显示多行数据(纵向循环),则在需要显示数据的地方点击“AreaH”;有时我们需要显示多列数据(横向循环),则在需要显示数据的地方点击“AreaV”;在选择了对应的XSD元素之后,在模板中右键点击添加的元素,然后选择“属性”,将弹出XSD元素属性对话框,根据具体的需要,设置XSD元素的各种属性,如下图所示:

在设计完毕word报表模板所有的元素之后,点击保存,就完成了word报表模板的设计,下一步的主要任务就是将设计好的word报表模板生成为XSLT文件。

以下是设计好的一个word报表模板文件:

3.2 XSLT报表文件的生成

在设计好word报表模板之后,可以通过我们之前专门开发的转换工具将word报表模板转换为XSLT 模板文件,转换后的XSLT报表模板文件可以直接使用,通过.NET的Transform方法将XML数据格式化为最终的word格式报表。以下是转换后的效果:

3.3 具体应用和效果

石油钻井有很多报表,例如钻井工程日报、钻井工程月报、钻井液日报、钻井液月报、钻井井史、钻井液井史等。在开发之初,我们曾尝试COM组件技术去实现,但在实际应用中带了许多问题。如客户端必须使用Word2003,并且需要安装Office SP3补丁,报表生成速度慢等。这些问题迫使我们需要寻求一个简单的、便捷的、通用的解决途径,最终我们用XML和XSLT解决了报表问题,在我们部署的客户端上对office版本不再有限制,可以使用office2003、office2007或者office2010,而且生成速度极快。我们将该报表技术用在了塔里木油田的钻井专业数据库项目建设中,在生成6000多条钻时记录数据的时候仅仅只用了50秒,在生成300页的钻井井史时,总共用时不足9分钟,生成后的文档不再需要排版,因此得到了各井队工程师的认可。实践证明该方法完全达到了我们预期效果。事实上,在现代信息系统中,用户报表已经成为了一个不可缺少的角色,该方法的通用性和零附加性使得它有广阔的应用前景。

作者简介

李小冬,大学本科学历,计算机科学与技术专业,2004年通过国家程序员考试,擅长C#、https://www.360docs.net/doc/a12650825.html,、Access、Oracle等,熟悉钻井专业知识,曾开发:水费管理系统、住房维修资金管理系统、统一授权管理系统、塔里木油田钻井专业数据库等。

相关文档
最新文档