当前位置: 首页 > 专利查询>武汉大学专利>正文

一种新的空间信息发布样式表处理器的转换方法技术

技术编号:2863511 阅读:210 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种新的空间信息发布样式表处理器的转换方法。本发明专利技术以DOM方式解析GML样式表文件,以SAX方式解析GML源文件,并且将样式表划分为定位信息和结构信息,生成两棵样式表树。在SAX解析器解析源文档时,每遇到一个元素标记就将这两棵样式表树遍历一遍,若是需要的元素就将数据提取出来,如不需要就忽略。本发明专利技术的特点是:能够快速地实现XML文档间的转换,并且能够处理大数据量的GML空间信息到SVG的转换,实现空间信息的发布。

【技术实现步骤摘要】

本专利技术属于信息技术中的空间信息获取与处理
,特别是涉及。
技术介绍
地理信息标记语言GML(Geography Markup Language)文档作为包含地理信息的可扩展标记语言XML(eXtensible Markup Language)文档,用于对空间和非空间信息进行编码,可以用来对异构空间数据进行集成。但GML本身不是为显示而设计的,而地理数据的显示又是空间信息发布中非常重要的部分,因此,GML文档需要转换为可显示的格式再进行发布。我们选择W3C推荐的SVG(Scalable Vector Graphics)矢量格式标准。SVG本身也是基于XML的,GML文档转换到SVG格式实质上是将一种格式的XML文档转换成另一种格式的XML文档,可以通过样式表XSLT(XML样式表转换器)实现,通过将编写好的样式表(XSLT)和GML源文件传递给XSL处理器执行而实现的。我们从一些与XML、XSL、XSLT相关的专业技术网站上(如W3C组织的http//www.w3c.org/Style/XSL/,http//www.w3c.org/DOM/,http//www.w3c.org/XML/,IBM公司的http//www-900.ibm.com/developerWorks/cn/xml/index.shtml等)可以看到,在作XML格式转化时,首先要分别解析两个输入文件源文件,样式表文件。传统的XSLT处理器处理的方法是将这两个文件转换为DOM树存放在内存中,内存中的DOM树的大小一般达到原始数据大小的10倍或以上,这对小数据量XML数据影响不大,如样式表文件一般都不大,不超过几百K字节,将它转化为DOM树并不占用太多的内存和时间,故并不是效率的瓶颈;而GML数据源文件可能很大,可能几十兆甚至上百兆,若转为DOM树,占用的系统资源太多,很容易造成内存溢出。若再加上生成DOM树所占用的CPU资源,用户难以接收这样的转换效率,是XML文件转化时效率的瓶颈。因此,当若源文件过大,采用DOM方式不是一个好的选择。传统做法对大文件(如几十兆或上百兆)的处理一般不直接采用XSLT处理,而采用另外两种方法一种方法是将数据分成块,通过XSLT分别转换每一块,最后对结果块合并。这样作编程比较容易,适用性较广。但是若数据过大,分块过多,这种方法消耗的时间太长,对于大数据量GML数据处理依然低效。另一种方法是通过编写一个使用SAX接口的应用程序实现XSLT样式表相同的功能。它运行起来速度会比前者快很多倍,效率很高。但基于SAX接口的编程很复杂,扩展性较差。目前基于上述技术方法的常用XSLT处理器主要是Apache公司的Xalan-java处理器(http//xml.apache.org/index.html#xalan,最近访问时间2004年10月25日)和Michael H.Kay的Saxon处理器(http//www.saxonica.com/,最近访问时间2004年10月25日)。但是相关的实验测试数据表明这些XSLT处理器能够处理的数据量如Xalan对于20MB及以上GML文档无法处理,Saxon对于40MB及以上GML文档无法处理,即GML文档过大,处理器转换过程中产生内存溢出,导致转换失败。故如何设计一个能高效处理大文档的XSLT处理器,成为高效地将GML向SVG转换的关键。
技术实现思路
针对上述问题,本专利技术提供了一种不需要将源文件转换为一棵DOM树的XSLT处理器,避免了生成DOM树所消耗的时空资源以及内存溢出,极大的提高了大数据量XML数据的转换效率,且适用性较广新的空间信息发布样式表处理器的转换方法。为了解决上述问题,本专利技术处理器的转换方法是对于GML文档向SVG格式的转换,分别以DOM方式解析样式表文件,以SAX方式解析源文件。将上述样式表划分为定位信息和结构信息,生成两棵样式表树,在SAX解析器解析源文档时,每遇到一个元素标记就将这两棵样式表树遍历一遍,若是需要的元素就将数据提取出来,如不需要就忽略。上述具体转换方法是第一步骤对样式表按照定义分片,并按顺序编号;第二步骤将分片按定义划分为两类,一类为第一部分(含定位信息),一类为第二部分(含输出XML文件的结构信息);第三步骤将属于第一部分的分片中的每一片,读入一个文件流中,每一片对应一个文件流,产生一个文件流数组;第四步骤将属于第二部分的分片中的每一片,生成一棵DOM树,产生一个DOM树数组,并为每一棵DOM树分配一个文件流,产生一个文件流数组;第五步骤当SAX解析器解析源文档时,每遇到一个元素标记就将DOM树数组中的每一棵DOM树遍历一遍,若是需要的元素就将数据提取出来,并放入相应DOM树对应的文件流中;第六步骤当SAX解析器解析源文档结束后,将第一部分对应的文件流数组和第二部分对应的文件流数组按第一步骤中的分片顺序合并,最后生成的文件流输出就是结果文档。本专利技术的特点是以DOM方式解析样式表文件,以SAX方式解析源文件。并且将样式表划分为定位信息和结构信息,生成两棵样式表树,在SAX解析器解析源文档时,每遇到一个元素标记就将这两棵样式表树遍历一遍,若是需要的元素就将数据提取出来,如不需要就忽略。转换算法能够快速地实现XML文档间的转换,并且能够处理大数据量的GML空间信息到SVG的转换。附图说明图1为本专利技术与两个常用处理器的时间效率对比图。图2为本专利技术与两个常用处理器的空间效率对比图。具体实施例方式下面结合附图进一步说明本专利技术。本专利技术是将样式表文件以DOM方式解析为一棵DOM树存入内存中,以SAX方式解析源文件。每遇到一个元素标记就将样式表树遍历一遍,若是需要的元素就将数据提取出来,如不需要就忽略。由于在一般情况下,样式表文件很小,只有几KB或几十KB,生成的DOM树就很小,并且以SAX方式扫描XML文件效率很高,所以本专利技术处理器处理速度比一般的XSLT处理器速度要快。尤其当源文件数据量很大时,一般的XSLT处理器所消耗的时间是以指数级速度上升,而本专利技术处理器在样式表确定的情况下,所消耗的时间是以线性速度上升的,这是因为SAX方式扫描XML文件所用的时间随着XML文件大小增加是以线性速度增加的。所以源文件数据量越大,一般的XSLT处理器效率下降的越快,并且达到一定数据量如4兆左右,一般的XSLT处理器无法处理,而本专利技术处理器就不存在这种情况。为进一步提高XSLT处理器的效率,可以从两个方面入手一方面提高SAX解析器对XML文档遍历的速度,另一方面对样式表进行优化。由于一般对XML编程都是使用实现DOM接口和SAX接口的软件包提供的API,如Aparche公司提供的Xerces包,IBM公司的DOM4J包,SUN公司的JDOM等产品。一般的XSLT处理器都是以这样的一些产品为开发平台作二次开发,如应用相当广泛的XSLT处理器——Xalan处理器就是基于Xerces包开发出来的。这些软件包对于SAX接口的支持和SAX解析器的执行效率虽然略有不同,但差距不大。所以,通过提高SAX解析器对XML文档遍历的速度来提高XSLT处理器的执行效率不是一种有效的方法。本专利技术处理器在作转换时,当通过SAX解析器遍历源文件时,每遇到一个元素标记就将样式本文档来自技高网
...

【技术保护点】
一种新的空间信息发布样式表处理器的转换方法,其特征在于:对于GML文档向SVG格式的转换,分别以DOM方式解析样式表文件,以SAX方式解析源文件。

【技术特征摘要】
1.一种新的空间信息发布样式表处理器的转换方法,其特征在于对于GML文档向SVG格式的转换,分别以DOM方式解析样式表文件,以SAX方式解析源文件。2.如权利要求1所述的新的空间信息发布样式表处理器的转换方法,其特征在于将样式表划分为定位信息和结构信息,生成两棵样式表树,在SAX解析器解析源文档时,每遇到一个元素标记就将这两棵样式表树遍历一遍,若是需要的元素就将数据提取出来,如不需要就忽略。3.如权利要求1或2所述的新的空间信息发布样式表处理器的转换方法,其特征在于第一步骤对样式表按照定义分片,并按顺序编号;第二步骤将分片按定义划分为两类,一类为第一部分(含定位信息),一类为第二...

【专利技术属性】
技术研发人员:关佶红周水庚边馥苓陈俊鹏张俊张建华
申请(专利权)人:武汉大学
类型:发明
国别省市:83[中国|武汉]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1