彭婉仪,吴家菊,纪斌
四川绵阳(中国工程物理研究院计算机应用研究所,
621900)
摘提出了一种基于XSL将XML文档转换HTML格式文档的算要:文章研究了XML文档转换为富文本格式的方法,
实现XML文档到HTML格式文档的转法。首先,新建一个与XML文档同名的HTML格式文档;其次定义转换算法,换;最后,调用系统默认浏览器以查看转换得到的HTML文档。该算法可以基于XSL将XML文档转换为HTML格式文档,以查看和验证XML文档的富文本显示格式是否符合阅读要求。关键词:算法;转换;XSL;XML;HTML;富文本中图分类号:TP391
文献标识码:A
AnAlgorithmtoTransformXMLDocumentintoHTMLFormatDocument
PENGWan-yi,WUJia-ju,JIBin
(InstituteofComputerApplication,ChinaAcademyofEngineeringPhysics,Mianyang621900,China)
Abstract:ThispaperstudiesmethodstotransformXMLdocumentsintorich-textformat,andproposesaXSLbasedalgorithmtotransformXMLdocumentsintoHTMLformatdocumentsbased.Firstly,anewHTMLformatdocumentwiththesamenameastheXMLdocumentiscreated.Secondly,transformationalgorithmisdefined,whichisusedtotransformtheXMLdocumenttotheHTMLformatdocument.Finally,systemdefaultbrowseriscalledtoviewtheHTMLdocumentobtainedfromthetransformation.BasedonXSL,thealgorithmcantransformXMLdocumentsintoHTMLformatdocument,whichcanbeusedtoviewandverifywhethertherich-textdisplayformatoftheXMLdocumentmeetsthereadingrequirements..
Keywords:algorithm;transformation;XSL;XML;HTML;rich-text;
XML(eXtensibleMarkupLanguage)是一种数据描述
并已在Internet上和企业内部得到和交换的通用格式,
在武器了广泛应用[1]。由于XML的通用性和可交换性,装备综合保障领域XML被广泛用于描述综合保障数
描述武器装备综合保障数据。随着科技的进步与发展,据的XML文档最终需要在数据浏览平台以富文本形式直观的显示,以辅助武器装备保障人员了解武器装故障情况等信息。因此备使用、维修、部件更换、训练、需要将XML文档转换为HTML、PDF或其它格式以便能够直观的显示[2]。
XSL(XMLStylesheetLanguage)是专门针对XML设
计的可延伸样式表语言,包括XSLT和XSL-FO两部分。样式表中定义了一个或多个将XML源文档转换为
结果树的模板规则,为结果文档提供框架结构[3]。自XML问世以来,国内外诸多学者对于如何基于XSL将XML文档转换为富文本格式文档进行了诸多的研究。王梅娟[4]等学者基于FOP实现了XML文档到PDF
格式的转换。陈一明[5]等学者基于XSL实现了存储于数据库中XML文档到PDF格式文档的研究。关辉[6]研究了利用XSLT实现XML文档格式的转换。还有其其它诸多关于XML文档向其它格式文档的研究[7,8,9]。在
当前关于XML文档转换为其它研究过程中我们发现,
格式文档的研究或基于某种开源框架,或应用于某种
特定的应用场景。在转换算法的可移植性、轻量化设计、易集成性等方面存在不足。
针对当前将XML文档转换为其它格式文档研究
收稿日期:2018-03-06
(1993-)软件工程与数据库;吴家菊(1978-)高级工程师,彭琬仪,女,四川绵阳人,在读硕士研究生,主要研究方向:,女,四川资阳人,作者简介:
软件工程与数据库技术。硕士生导师,主要研究方向:
第26卷第4期彭婉仪等,一种将XML文档转换为HTML格式文档的算法
·25·
过程中存在的不足,论文提出了一种基于XSL将XML
文档转换为HTML格式文档的算法(对于其它格式文档,只需对算法作出相应的修改)
,并定义了转换错误。针对转换过程总出现的转换错误,本算法能够确定错误原因和错误发生位置,供数据编辑人员做出修改。在转换完成并且没有转换错误的前提下,可以自动调用系统默认浏览器以查看转换得到的HTML文
档,以便数据编辑人员验证编辑数据是否满足格式要求。
该算法既可以作为单独的转换工具使用,也可以方便的集成到其它XML软件开发中,具有可跨平台移植、轻量化设计、易集成的优点。
1算法设计与实现
依据实际应用需求,从待转换的XML文档出发,
算法设计具体包括三个部分,
如图1所示。图1算法设计图
1.1新建一个与XML文档同名的HTML格式文档
为存储转换结果并将转换结果在系统默认浏览器显示,首先创建一个与XML文档同名的HTML格式文
档,创建过程如下所示:
(1)依据XML文档的URL路径获取XML文档名称;
(2)提取XML文档名称的除”.xml”文件后缀之外的名称部分;
(3)组合XML文档的父URL路径、第(2)步提取的名称部分和”.html”,得到一个新的HTML格式文档的URL路径。
(4)以第(3)步得到的URL路径为参数,
创建与XML文档同名并且同父URL路径的HTML格式文档。1.2
定义转换算法,
实现XML文档到HTML格式文档的转换
转换算法是基于XSL将XML文档转换为HTML格式文档算法的主体,转换过程中将获取的转换结果
存储于1.1中新建的HTML格式文档中,具体过程包括以下六个部分。1.2.1定义相关变量
算法的设计描述中创建的变量及变量赋值以Java
语言描述。为方便算法后续描述,为算法设计过程中应用到的变量赋予特定的变量名称。
(1)Org.w3c.dom.Document类型变量,变量名为XML-doc;
(2)File类型变量,变量名为outFile、xslFile;(3)DOMSource类型变量,变量名为ds;(4)FileOutputStream类型变量,变量名为fos;(5)Result类型变量,变量名为res;(6)SteamSource类型变量,变量名为ss;1.2.2解析XML文档,获取解析文档
DOM(DocumentObjectModel)[10,11]和SAX(Simple
APIforXML)[12]
均可用于解析XML文档。在算法中需
要获取完整的解析结果并将其应用到算法的后续设计中,基于触发事件的SAX解析方式不能满足算法的设计要求,因此选用DOM解析方式实现XML文档的解
析。首先,用Java语言实现DOM编程接口以获取DOM解析器实例;其次,DOM解析器实例调用相关方
法并将XML文档的URL路径作为参数,
实现XML文档的解析(为方便后续描述,
将解析结果命名为DOM-doc)。解析XML文档过程如图2所示。
图2DOM解析XML文档
1.2.3为相关变量赋值
依据上述定义及获取的变量,为1.2.1中定义的变量赋值。
(1)以XMLdoc为参数实例化DOMSource,并将其赋值给ds;
(2)将新建的HTML格式文档赋值给outFile;
(3)
以XML文档转换所需的XSL文档的URL路径作为参数实例化File,并将其赋值给xslFile。
·26·电脑与信息技术2018年8月
(4)以xslFile为参数实例化StreamSource,并将其赋值给ss;
(5)以outFile为参数实例化FileOutputStream,并将其赋值给fos;
(6)以fos为参数实例化StreamResult,并将其赋值给res;
1.2.4设置系统参数
为获取转换器实例,需要设置系统参数。
具体方法为:System调用setProperty()方法,并将“javax.xml.trans-form.TransformerFactory”和
“org.apache.xalan.processor.TransformerFactoryImpl”作为传入参数。
1.2.5实例化TransformerFactory,获取转换器实例转换器实例用于实现基于XSL将XML文档转换
为HTML格式文档。首先,
实例化TransformerFactory,获取实例化后变量(命名为fFactory);其次,tFactory调
用setErrorListener()方法,设置错误;最后,以ss为参数,tFactory调用newTransformer()方法,创建转换器实例(命名为transformer)。
其中,错误为自定义错误(命名为MyErrorListener)。MyErrorListener实现ErrorListener接
口,在其中定义三个方法,分别用于捕获在转换过程中出现的“warning”“、error”“、fatalerror”三种类型错误并将错误信息输出。错误实现错误监听与处理的过程如图3所示。
1.2.6实现XML文档到HTML格式文档的转换转换器实例调用相关方法,并将相关变量作为传入参数以实现XML文档到HTML格式文档的转换。
以ds、res为传入参数,转换器实例(transformer)调用trans-form()方法,
实现XML文档到HTML格式文档的转换。图3错误实现错误监听与处理的过程
1.3调用系统默认浏览器以显示HTML格式文档
为查看转换获得的HTML格式文档,需要调用系统默认浏览器打开HTML格式文档,调用系统默认浏
览器的过程如下:
(1)获取操作系统默认浏览器的URL路径;(2)获取outFile的URL路径;(3)定义一个长度为2的String类型的数组(命名为cmd),其中cmd[0]保存浏览器的URL路径,cmd[1]保存outFile的URL路径。
(4)获取应用程序相关运行时对象,
继而对象调用相关方法执行cmd指定的字符串命令。一种实施方式是java应用程序在windows系统中运行时,Runtime调用
getRuntime()方法获取应用程序相关运行时对象,继而以cmd为参数继续调用exec()方法执行指令,以实现调用系统默认浏览器查看转换得到的HTML格式文件。
根据上述算法设计思想,使用Java编程语言实现基于XSL将XML文档转换为HTML格式文档的转换算法。
2实验验证
为验证该算法的设计与实现是否符合设计要求,
我们对该算法进行了一系列的实验验证。实验过程分为两部分:第一部分验证该算法能否正确的实现XML文档到HTML格式文档的转换;第二部分验证该算法对转换错误的捕获和处理能力。
每组实验以XML文档及与其转换对应的XSL文档的组合作为输入文档。对于验证算法是否能够准确转换的实验,选取在
商业成熟的XML编辑软件(例如:XMLSpy)上经过正确性验证的XML文档及其对应的XSL文档,对比分析该算法的转换结果是否与商业成熟的XML编辑软
件的转换结果相同。
对于验证算法能否捕获错误并将错误信息输出的实验,则选取存在已知的转换错误的XML文档及其对应的XSL文档,对比该算法对错误的捕获及错误信息的输出是否与商业成熟的XML编辑软件的结果相同。经过一系列的实验、对比、
分析,该算法的转换正确性、对于转换错误的捕获和处理能力得到了验证。对于正确的XML文档和XSL文档组合,该算法能够正
确的将XML文档转换为HTML格式的文档。对于存在错误的XML文档和XSL文档组合,该算法能够准确
的捕获转换错误并将错误信息输出。
3
结束语
为解决当前将XML文档转换为其它格式文档研
究中存在的难跨平台移植、不易集成等缺点,论文提出
第26卷第4期彭婉仪等,一种将XML文档转换为HTML格式文档的算法
据库的转换[J].职大学报,2005(4):47-49.[4][5][6][7][8]
·27·
了一种基于XSL将XML文档转换为HTML格式文档的算法。该算法将XML文档和对应的XSL文档作为输入文档,转换完成后可以自动调用系统默认浏览器
查看转换得到的HTML格式文档。对于转换过程中存在的错误,该算法能够准确的捕获并将错误信息输出。该算法采用Java语言实现,满足了跨平台移植的特性。并且该算法不借助任何特定框架,使得其既可以单也已集成到其它相关XML软件独作为转换工具使用,
开发中。对于其它格式文档转换,仅需要修改算法的HTML格式文档创建部分和调用系统默认浏览器查看转换文档的部分做出修改,以满足其它格式文档的转验证了该算法的正确性,换及查看。经过大量的实验,
当前该算法已应用到某交互式电子技术手册制作平台的开发中。参考文献:
[1]徐宗昌.装备IETM技术标准实施指南[M].北京:国防工业出
版社,2012.[2]
国防工徐宗昌,雷育生.装备IETM研制工程总论[M].北京:业出版社,2012.
[3]李迪,董傲霜.利用XSLT与Java实现XML文件中数据到数
王梅娟,史涯晴,赵改连.基于XSL-FO的XML文档到其它格式文档的转换[J].电脑知识与技术,2008,4(29):179-182.陈一明,欧兴灿.基于XSL的XML文档转换技术及应用[J].湖南科技学院学报,2009,30(8):102-104.
关辉.利用XSLT实现XML文档格式的转换[J].福建电脑,2009,25(3):181-181.
吴晓丹,王志坚,袁丽萍.利用XSLT转换XM了文档的研究[J].现代计算机,2004(12):66-69.
鱼明.利用XSL转换XML到HTML的几种方法[J].安徽冶金科技职业学院学报,2005,15(2):50-52.
[9]关俊玲.基于XSLT标准的XML文档处理[J].软件导刊,2008
(11):44-46.
[10]JeremyK,JeffreyS.JavaScriptDOM编程艺术[M].北京:人民
邮电出版社,2011.
[11]MAJL,ZHANGSB,HUTS,etal.ParallelSpeculative
Dom-basedXMLParser[J],IEEEInternationalConferenceonHighPerformanceComputing&Communication&IEEEIn-ternationalConferenceonEmbeddedSoftware&Systems,2012,248(4):33-40.
[12]PANYF,ZHANGY,CHIUK.HybridParallelismforXMLSAX
Parsing
[J].IEEEInternationalConferenceonWebService,
2008:505-512.
(上接第20页)
表2三种缓冲方式返回检测结果的数量
测试组别第一组第二组第三组
顺序链式队列
100010001000
循环队列922926919
链式复合队列
100010001000
具备不错的防溢出能力,能够应用到机器视觉系统中,
在不损失系统运行效率的情况下提高系统的稳定性。参考文献:
[1]苑玮琦,魏智鹏,李德健.基于多级多线程和缓存的雪糕棒质
量在线检测系统[J].电子世界,2016(13):55-56.
[2]赵长林.单生产者/单消费者(SPSC)环形缓冲队列算法的改
进[A].中国通信学会、湖北省通信管理局.2011年通信与信息技术新进展———第八届中国通信学会学术年会论文集[C].中国通信学会、湖北省通信管理局:,2011:6.
[3]张丽.嵌入式操作系统非阻塞同步机制的研究[D].湖南大
学,2004.[4]
严蔚敏,李冬梅,吴伟民.数据结构(C语言版)[J].计算机教育,2012(12):62.
[5]伍之昂,曹杰,王有权.一种改进的死锁和活锁避免资源联合
分配协议[J].电子学报,2011,39(11):25-2596.[6][7]
HerlihyM.Wait-freesynchronization[J].AcmTransactionsonProgrammingLanguages&Systems,1991,13(1):124-149.黄姝娟,容晓峰,茹媛,张雅.一种采用Lock-Free同步机制的数据结构的研究[J].微电子学与计算机,2016,33(10):72-77.[8]
旁瓣特征的雪糕苑玮琦,李绍丽,李德健.基于纹理主、
棒裂缝缺陷检测[J].仪器仪表学报,2017,38(11):2779-2787.
由表1和表2的数据可知,链式经过两部分测试,
在复合队列在运行效率方面达到了循环队列的水平,防溢出能力方面达到了顺序链式队列的水平。顺序链
在数据入队和出队时,比式队列运行效率低的原因是,
其它两个队列增加了申请和释放存储空间的额外时间
使用时无法动开销。循环队列防溢出能力低的原因是,态扩展空间,导致队列溢出时旧数据被覆盖。
4结束语
本文将链式队列与循环队列相结合,设计了链式
复合队列结构,并实现了该结构在单生产者/单消费
者并发模型上的非阻塞同步机制。链式复合队列既可以直接应用于机器视觉软件系统,又可以作为基础构件来搭建更复杂的并行结构软件架构。从理论分析和实际测试结果可以得出结论,该队列结构及操作方法
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务