您好,欢迎来到微智科技网。
搜索
您的当前位置:首页格式化输出XML文档的通用解决方案

格式化输出XML文档的通用解决方案

来源:微智科技网
第24卷第4期 山西青年管理千部学院学报 V01.24 No.4 2011年12月 Journal of Shanxi College for Youth Administrators Dec.,2011 【计算机应用】 格式化输出XML文档的通用解决方案 郭翠英 (山西青年职业学院计算机系,山西太原030032) 摘 要:针对XML文档输出通用性和可扩展性差的问题,设计了一个基于DOM技术,并利用JavaScript语言结合CSS技 术的案例。实现了格式化输出XML文档的通用解决方案,达到了XML文档数据显示与数据存储的真正分离,实现了不受 文档内容局限的通用格式化输出解决方案。 关键词:DOM;XML;格式化输出;CSS 中图分类号:TP31】_52文献标识码:B 文章编号:1008—8997(2011)04—0099—04 <明星> 一、引 言 <明星姓名性别=”女”>张怡宁</明星姓名> XML(eXtensible Markup Language,可扩展标记语 <所属行业>乒乓球</所属行业> 言)是由W3C(World Wide Web Consortium,万维网联盟) <运动成绩>奥运会冠军<,运动成绩> 推出的新一代网络数据表示、传递和交换的标准,是 <居住地>中国北京</居住地> Intemet环境中跨平台的、依赖于内容的技术。 </明星> 单纯的XML文档是用来描述和保存数据的,例 <明星> 如关于体育明星的描述,可以用下面的XML文档实 <明星姓名性别=”女”>李娜</明星姓名> 现。 <所属行业>网球</所属行业> <?xml version=”1.0”encoding=”gb2312”?> <运动成绩>法网冠军</运动成绩> <!一一File Name:mingxing.xml一一> <居住地>中国四川</居住地> <体育明星> </明星> <明星> <,体育明星> <明星姓名性别=”男”>姚明</明星姓名> 从上述XML文档可以看出,XML文档本身不包含 <所属行业>篮球</所属行业> 数据的显示格式。为了使XML文档所包含的数据按 <运动成绩>奥运会男篮八强</运动成绩> 照需要以一定的格式显示,方便人们阅读,就需要使用 <居住地>美国休斯顿</居住地> 特定的样式语言来对其进行格式描述。迄今为止, </明星> W3C推荐了两种样式表语言标准,一种是层叠样式表 <明星> CSS,一种是可扩展样式语言XSL。 <明星姓名性别=”男”>刘翔</明星姓名> <所属行业>田径</所属行业> 二、CSS与XSL的特性 <运动成绩>奥运会冠军</运动成绩> CSS(Cascading Style Sheets)即层叠样式表或级联样 <居住地>中国上海</居住地> 式表,是目前在浏览器上按一定格式显示XML文档内 </明星> 容的主要技术之一。CSS样式表中包含了一组设置元 收稿日期:2011—06—20 作者简介:郭翠英(1962一)女,山西l临县人,山西青年职业学院计算机系教授。 素显示样式的规则,能够用来控制XML文档内容的显 示格式。但是,使用CSS技术来显示XML有其局限 性,它既不支持中文标记,又不允许访问XML文档中 的属性,不能对文档中的内容进行自由选择。 XSL(eXtensible Stylesheet Language)即可扩展样式 维表格样式输出。 1.XML文档结构 XML文档具有典型的三层结构,类似描述数据库 中的数据,根元素相当于表名,~级子元素代表数据库 中的行,二级子元素代表数据库中的列,如图r所示: 棍元素 级子元素 硼量姓名性别_ 男 棚月‘棚墨姓名>.乙一 二覆子元素 一语言,是目前用来设计XML文档显示样式的主要技术 之一。在显示XML文档时,XSL样式表要比CSS样式 表功能更为强大且更富弹性。XSL样式表提供了对所 有XML组件(包括元素、属性、注释和处理指令)的控 嘶扈行业堰骧<厮犀行业> 制权,可以轻易排序和筛选XML文档中的数据,并允 许修改或新增信息。一个XML文档链接相应的XSL 样式表后,即可直接在IE浏览器中打开,并按照样式 表指定的格式显示出文档内容。 可见,XSL是目前显示XML文档数据的最好选 择。它不仅符合XML文档的标准,具有XML的一切 特点,而且在功能上也比CSS更为灵活强大,所以,在 需要将XML文档内容显示出来的时候,通常应首先考 虑使用XSL。 但是XSL是为特定的XML文档设计的,当文档标 记改变,XSL就得重新设计,例如前面的例子,当XML 文档由描述体育明星变为描述客户信息时,文档结构 本身没有大的改变,显示要求也没有改变,只是标记名 称和内容需要改变,这时就需要利用DOM进行解决。 三、基于DOM访问XML DOM(Document Object Mode1)的中文含义为文档对 象模型,由一组代表HTML文档或者XML文档中不同 组成部分的程序对象组成,这些对象提供了各自的属 性和方法,使应用程序开发者能够通过编写脚本程序 来操纵和显示文档中相应的组件。 使用DOM技术访问XML文档,具有强大的功 能和灵活性,不仅可用来编写访问本地XML文档 的程序,还可用来编写访问服务器端XML文档的 应用程序。 DOM以树状的层次节点来储存XML文档中的所 有数据,可以使用DOM节点树来访问任何形式的XML 文档,并且可以使用DOM提供的编程接口来显示和操 纵XML文档中的任何组件,包括元素、属性、处理指 令、注释及实体等。 四、格式化输出XML的综合解决方案 基于上述分析,我们提出解决显示本文开头所设 计的描述体育明星的XML文档的通用方案,要求按二 1 00 硼星, . . ‘ 埔目皇姓名性别 。男。>划翔‘朋曩姓名' 箍J’ 意多个’ ̄盟_鲁 ’, .AWlI-T.  一一 《棚 啡删星> 图1 XML文档结构 2.利用DOM技术使用JavaScript语言访问XML 文档 利用DOM对象编写应用程序来实施对XML文档 的访问和处理,利用JavaScript语言在客户端编程实 现,文件名为“ty. 。程序设计思想是首先载入XML 文档,然后判断文档是否正确,出错的话显示错误信 息,如果没有错误,则首先读出XML文档的根元素作 为表格的标题,然后从一级子元素中读出二级子元素 名称作为表格的列,接着循环读出每一级子元素中所 有二级子元素内容,以及元素所包含的属性名和属性 值作为表格列内容,最后生成HTML表格元素,赋值给 客户端HTML文档中的DIV标记实现格式化输出,其 代码如下: window.onload=domXml; function domXml(){ var xmldoc=neW ActiveXObiect(”MSXML.DOM. Document”);//创建文档对象 xmldoc.async=’’false”: xmldoc.1oad(”mingxing.xml”);//加载XML文档 if(xmldoc.parseError.errorCode!=0)f// ̄JJ断文 档是否格式良好 strl=”载入的文档有错误!错误信息如下:”+ ”\n”: str2=”错误代号:”+xmldoc.parseError.error. Code+”\n”: str3=”文档出错位置:”+xmldoc.parseError. iflepos+”\n”: str4=”错误所在行:”+xmldoc.parseErorr.1ine +”\n”: str5=”错误所在列:”+xmldoc.parseErorr.1ine. pos+”\n”: str6=”错误原因:” +xmldoc.parseError.reason +”\n”: str7=”错误文本:” +xmldoc.parseError.srcText +”\n”: str8=”文档路径:”+xmldoc.parseError.url+” \n”: message=strl+str2+str3+str4+str5+str6 +str7+str8: alert(message); } else{ biaoti=xmldoc.documentElement.nodeName;//读文 档根元素作表格标题 document.getElementById(”hl”).innerHTML=biao— ti; HTMLCode=”<tr>”: for(i=0;i<xmldoc.documentElement.childNodes (0).childNodes.1ength;i++){ //读二级子元素作表格的列 HTMLCode+:”<th>”+xmldoc.documentE1e— ment.ehildNodes(0).ehildNodes(i).nodeName+”</th >”: } HTMLCode+=”</tr>”: ofr(i=0;i<xmldoc.documentElement.child. Nodes.1ength;i++){ HTMLCode+=”<tr>”: f0r(j=0;J<xmldoc.documentElement.childNodes (i).childNodes.1ength;J++){ //读二级子元素的内容 HTMLCode+=”<td>”+xmldoc.documentEle. ment.childNodes(i).childNodes(j).text; //读二级子元素的属性名和属性值 NamedNodeMap xmldoc.documentElement.child— Nodes(i).childNodes(j).attributes; for(k=0;k<NamedNodeMap.1ength;k++){ HTMLCode+=”(”+NamedNodeMap(k).node. Name+":”+NamedNodeMap(k).nodeValue+”)” }; HTMLCode+=”</td>”: } H ⅥLC0de+=”</tr>”: } HTMLCode=”<table>”+HTMLCode+”</table >”; //将生成HTML表格内容显示在DIV中 document.getElementById(”DisplayDIV”).innerH11ML =HTMLCode; } } 3.利用CSS样式表为表格定制显示样式 为了使表格显示美观,便于改变其显示样式,可以利 用CSS技术,为标记编写样式,下面简单设计了标题、表 格、标题行和单元格中的样式,需要时只需改变这个样式 表,就能够改变输出的样式,而不必影响XML文档和HT. ML文档,其代码如下: #hl{ text—align:center; font—size:25px; } div{text—align:center;} table{border:lpx double#CCC;} th{ border:lpx double#CCC: background—color:#7fffff; } td{ border:lpx double#CCC: background——color:yellow; } 4.客户端编写HTML网页 有了JavaScript脚本和CSS文档,在编写客户端 HTML网页时,调用脚本并链接CSS文档,即可实现格 式化输出XML文档,其代码如下: <!D0CTn,E HTML PUBLIC”一//W3C// ID HTML 4.01//EN””http://www.w3.org/TR/html4/strict.dtd”> <html> <head> <meta http—equiv=”Content—Type”content:” text/html:charset=gb2312”> <title>格式化输出XML文档</title> 一一链接CSS 】01 <link rel=’’stylesheet”type=”text/css”href=”ty. ass”> < < > 一一调用脚本文件”ty.js” <script type=”text/javascript”src=”ty.jS”></ script> </head> <body> <P id=”hl"></p> <div id=”DisplayDIV”></div> </body> </html> </品 > 体育明星显示效果(见图2)。 图3 品牌信息XML文档 体育明星 品牌列表 图4 格式化输出效果 图2 格式化输出效果 基于XML的数据共享和交换已经成为当今的热 如需改变为另一个XML文档,只需文件结构符合 三级结构,所有程序都不需要做任何改动(或仅将js 文件中加载的XML文档文件名修改)。例如有品牌信 息的XML文档(见图3)。各程序不做任何修改显示效 果(见图示4)。 点之一,利用DOM技术结合Java.Script语言和CSS技 术,实现XML文档以表格形式输出的通用解决方案, XML文档标记和内容改变,HTML文件不用做任何修 改,真正实现了数据显示和数据存储分离,具有较高的 通用性、综合性和可维护性,且具有更强的跨平台性、 扩展性和更高的可靠性。 [ 参 考 文 献 】 [1]高怡新.XML的基础教程[M].北京:人民邮电出版社,2006. [2]Charles F.Goldfarb,Paul Prescod.XML手册(第四版)[M].北京:电子工业出版社,2003 General Solufiom to Formularized 0utput of XML Documents GUO Cui—-ying (Department of Computer Science,Shanxi Youth Vocational College,Taiyuan,030032,China) Abstract:Aiming at the poor general output and extensibility of XML documents,we designed a case based on DOM technolo— gY,which depended on JavaScript language and contained CSS technology.Through the case,we worked out the general solut- ions to formularized output of XML documents,realizing the separation between presentation and storage of data in XML docu- ments.Thus we made an achievement in generally formularized output solution which is not limited by the content of docu- ments. Key words:DOM;XML;formularized output;CSS f责任编辑:刘伟) 102 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务