大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> JSP专区 -> JSP+XML构架网站的实例

JSP+XML构架网站的实例

时间: 2021-07-31 作者:daque

xml(可扩充标志谈话)看上去大概像那种w3c规范——此刻没有什么本质感化,纵然此后能派上用途,也是很久此后的事。但本质上,它此刻仍旧获得了运用。以是,不要比及xml已被加进了你最爱好的html编纂器中才发端运用它。它此刻就不妨处置百般里面题目和b2b体例题目。 在sparks.com,咱们运用xml来规范化从java东西到html数据表露等各别体例之间的数据表白。 更加须要指出的是,咱们创造,只有以特殊基础的xml构造来实行规范化,就不妨更简单地共享和操纵数据。在这一进程中,咱们创造了运用xml的很多灵验本领。底下精细引见咱们此刻的运用情景。 规范化 在运用xml之前,创造与你要运用的消息各别的xml数据方法。 天生动静xml 从数据库中天生html并不陈腐,但天生xml却很陈腐。这边咱们引见简直的天生办法。 用xsl动作沙盘谈话 xsl(可扩充款式表谈话)是设置xml数据表露方法的好本领,即使写成几个静态沙盘会更灵验。 天生html xml加上xsl就即是html。这听起来犹如不对,但用户所见的咱们的html页面本来即是xml和xsl共通爆发的功效。 一、规范化 xml的本领来自于它的精巧性。但悲惨的是,它偶尔太精巧了,及至于你会面临一个空缺的页面,烦恼该如何处置题目。 在任何xml的名目中,第一步处事都是创造规范的数据方法。为此你要作出以次确定: &&&决定数据: 由于没有规范的xml方法,开拓者不妨自在地开拓本人的方法。但是,即使你的方法只能被一个运用步调辨别,那么你只能运转这个步调来运用该方法。即使再有其余步调也能读懂你的xml方法,那明显会更有扶助。即使某个xml方法被窜改,则运用它的体例大概也须要被窜改,以是你该当创造尽大概完备的方法。由于大普遍体例忽视它们没辙辨别的标签,以是变换一个xml方法的最安定的本领是增添标签,而不是窜改标签。 单击此处察看xml数据方法范例 在sparks.com,咱们察看了各别的产物展现须要的一切产物数据。纵然并不是一切的页面都运用十足数据,但咱们仍旧由此开拓出实用于一切数据的特殊完备的xml数据方法。比方,咱们的产物明细消息页面表露的数据要比产物欣赏页面多。但是,咱们在这两种情景下仍旧运用沟通的数据方法,由于每个页面包车型的士xsl沙盘都只运用它所须要的字段。 能否运用dtd 在sparks.com,咱们运用构造杰出的xml,而不运用只是是精确的xml,由于前者不须要dtd。dtd在用户点击和看到页面之间介入了一个处置层。咱们创造这一层须要太多的处置。固然,在以xml方法与其余公司通讯时,运用dtd仍旧很不错的。由于dtd能在发送和接收时能保护数据构造精确。 采用领会引擎 此刻,不妨运用的领会引擎有好几个。采用哪一个简直实足在于于你的运用须要。即使你确定运用dtd,那么这个领会引擎必需能使你的xml被dtd考证。你不妨将考证另放到一个过程中,但那么会感化本能。 sax和dom是两个基础的领会模子。sax鉴于事变,以是在xml被领会时,事变被发送给引擎。接下来,事变与输入文献同步。dom领会引擎为动静xml数据和xsl款式表创造档次树状构造。经过随机考察dom树,不妨供给xml数据,就象由xsl款式表来确定一律。sax模子上的商量重要会合于对dom构造的外存贬低过渡和加速xsl款式表领会功夫减少上面。 但是,咱们创造运用sax的很多体例并没有充溢表现它的本领。那些体例用它来创造dom构造并经过dom构造来发送事变。用这种本领,在任何xml处置之前必需从款式表中创造dom,以是本能会低沉。 二、天生动静xml 一旦创造了xml方法,咱们须要一种不妨将其从数据库中动静移植的本领。 天生xml文书档案对立来说比拟大略,由于它只须要一个不妨处置字符串的体例。咱们创造了一个运用java servlet、enterprise javabean server、jdbc和rdbms(联系型数据库处置体例)的体例。 &&&&(相关xsl运用的其余消息,请参见用xsl动作沙盘谈话。) 天生xml的例子 在java中创造xml文书档案字符串的真实代码不妨分红几个本领和类。 启用xml天生进程的代码放在ejb本领里。这一范例会登时创造一个stringbuffer,再不保存天生的xml字符串。 stringbuffer xml = new stringbuffer(); xml.append(xmlutils.begindocument("/browse_find/browse.xsl", "browse", request)); xml.append(product.toxml()); xml.append(xmlutils.enddocument("browse"); out.print(xml.tostring()); 反面的三个xml.append()变元自己即是对其余本领的挪用。 爆发文献头 第一个附加本领挪用xmlutils类来爆发xml文献头。咱们的java servlet中的代码如次: public static string begindocument(string stylesheet, string page) { stringbuffer xml = new stringbuffer(); xml.append("<?xml version="1.0"?> ") .append("<?xml-stylesheet href="") .append(stylesheet).append(""") .append(" type ="text/xsl"?> "); xml.append("<").append(page).append("> "); return xml.tostring(); } 这段代码天生了xml文献头。<?xml>标签把本文献设置为扶助1.0本子的xml文献。第二行代码指向用以表露数据的精确款式表的场所。结果囊括进去的是项级标签(本范例中为<browse>)。在文献结束,惟有<browse>标签须要被封闭。 <?xml version="1.0"?> <?xml-stylesheet href="/browse_find/browse.xsl" type="text/xsl"?> <browse> 填入产物消息 实行了文献头后,遏制本领会挪用java东西来爆发它的xml。本例中挪用的是product东西。product东西运用两个本领来爆发它的xml表白。第一个本领toxml()经过爆发<product>和</product>标签来创造product节点。而后它会挪用internalxml(),如许就能供给产物xml所需的实质。internalxml()是一系列的stringbuffer.append()挪用。stringbuffer也被变换成字符串并归来给遏制本领。 public string toxml() { stringbuffer xml = new stringbuffer("<product> "); xml.append(internalxml()); xml.append("</product> "); return xml.tostring(); } public string internalxml() { stringbuffer xml = new stringbuffer(" ") .append(producttype).append(" "); xml.append(" ").append(idvalue.trim()) .append(" "); xml.append(" ").append(idname.trim()) .append(" "); xml.append(" ").append(page.trim()) .append(" "); 厖? xml.append(" ").append(amount).append(" "); xml.append(" ").append(vendor).append(" "); xml.append(" "); xml.append(" ").append(pubdesc).append(" "); xml.append(" ").append(vendesc).append(" "; 厖? return xml.tostring(); } 封闭文献 结果,xmlutils.enddocument()本领被挪用。这个挪用封闭xml标签(本例中为),并最后实行框架结构好的xml文献。来自遏制本领的所有stringbuffer也变换成字符串,并归来给处置首先http乞求的servlet。 三、用xsl动作沙盘谈话 为特出到html输入,咱们把天生的xml文献和遏制xml数据怎样表白的xsl沙盘相贯串。咱们的xsl沙盘由经心构造的xsl和html标签构成。 发端建沙盘 咱们的xsl沙盘发端局部与底下这段代码一致。第一条龙代码为必定代码,将本文献设置为xsl款式表。xmlns:xsl=属性援用本文献所运用的xml称呼空间,而version=属性则设置称呼空间的本子号。在文献的结束,咱们封闭标签。 由<xsl:template>发端的第二行代码决定了xsl沙盘的形式。match属性是必定的,在这边指向xml标签<basketpage>。在咱们的体例里,<basketpage>标签里包括<product> 标签,这使得xsl沙盘不妨考察嵌在<product>标签内的产物消息。咱们又一次必需在文献结束封闭<xsl:template>标签。 接下来,咱们来看一看构造杰出的html。因为它将被xml领会引擎处置,以是必需适合构造杰出的xml的一切准则。从实质上去讲,这表示着一切的发端标签必需有对应的中断标签。比方,常常不被中断的<p>标签,必需用</p>封闭。 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:template match="basketpage"> <html> <head> <title>shopping bag / adjust quantity</title> </head> <body bgcolor="</xsl:template> </xsl:stylesheet> 在沙盘的主体内,有很多xsl标签被用来为数据表白供给论理。底下证明两个常用的标签。 choose <xsl:choose>标签一致于保守编制程序谈话中if-then-else构造的发端局部。在xsl中,choose标签表白在代码加入的局部中,赋值将触发举措的爆发。具有赋值属性的<xsl:when>标签跟在choose标签反面。即使赋值是精确的,坐落<xsl:when>的发端和中断标签之间的实质将被运用。即使赋值缺点,就运用<xsl:otherwise>的发端和中断标签之间的实质。所有局部用</xsl:choose>来中断。 在这个例子里,when标签会为quantity标签查看xml。即使quantity标签里含有值为真的error属性,quantity标签将会表露列在底下的表格单位。即使属性的值不为真,xsl将会表露otherwise标签间的实质。在底下的范例里,即使error属性不真,则什么都不会被表露。 <xsl:choose> <xsl:when test="quantity[@error='true']"> <td bgcolor="src="http://img.sparks.com/images/i-catalog/sparks_images/sparks_ui/clearpixel.gif"/></td> <td valign="top" bgcolor="<font face="verdana, arial" size="1" color="<b>*not enough in stock. your quantity was adjusted accordingly.</b></font></td> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> for-each <xsl:for-each>标签不妨用来对一致xml数据的多种情景运用同一个款式表。对于咱们来说,不妨从数据库中掏出一系列产物消息,并在web页长进行一致方法化。这边有一个例子: <xsl:for-each select="package"> <xsl:apply-templates select="product"/> </xsl:for-each> for-each 轮回在步调遇到标签时发端。这个轮回将在步调遇到标签时中断。一旦这个轮回运转,历次标签出当前城市运用这个沙盘。 四、天生html 未来的某一功夫,欣赏器将会集成xml领会引擎。到其时,你不妨径直向欣赏器发送xml和xsl文献,而欣赏器则按照款式表中列出的准则表露xml数据。然而,在此之前开拓者们将不得不在她们效劳器端的体例里创造领会功效。 在sparks.com,咱们仍旧在java servlet里集成了一个xml领会器。这个领会器运用一种称为xslt (xsl transformation)的体制,按xsl标签的证明向xsl沙盘中增添xml数据。 当咱们的java servlet处置http乞求时,servlet检索动静天生的xml,而后xml被传给领会引擎。按照xml文献中的训令,领会引擎搜索符合的xsl款式表。领会器经过dom构造创造html文献,而后这个文献再传递给发出http乞求的用户。 即使你采用运用sax模子,领会器会通读xml源步调,为每个xml标签创造一个事变。事变与xml数据对应,并最后按xsl标签向款式表中插入数据。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.