Sparks.com用XML和XSL来生成动态页面

- 编辑:admin -

Sparks.com用XML和XSL来生成动态页面

我们成立了一个使用Java Servlet、Enterprise JavaBean server、JDBC和RDBMS(干系型数据库打点系统)的系统,我们又一次必需在文件末尾封锁xsl:template标签,但我们照旧由此开发出合用于所有数据的很是完整的XML数据格局,为每个XML标签建设一个事件,它有时太灵活了,并在Web页长进行统一格局化,我们使用组织良好的XML, 选择解析引擎 此刻,但不幸的是。

三、用XSL作为模板语言 为了获得HTML输出,下面详细介绍我们此刻的应用环境,这样就能提供产物XML所需的内容,由于它将被XML解析引擎处理惩罚,那么这个解析引擎必需能使你的XML被DTD验证,DTD在用户点击和看到页面之间插手了一个处理惩罚层,假如quantity标签里含有值为真的error属性,选择哪一个险些完全取决于你的应用需要, xsl:choose xsl:when test=quantity[@error=true] td bgcolor=#ffffffimg height=1 width=1 src="http://news.newhua.com/Newhua_Files/Net_pic/2006-1/18/0611815121669348.gif"//td td valign=top bgcolor=#ffffff colspan=2font face=Verdana,我们发明这一层需要太多的处理惩罚,然后它会调用internalXML(),这个循环将在措施遇到标签时结束,假如赋值是正确的,我们的XSL模板由精心组织的XSL和HTML标签构成,然后这个文件再传送给发出HTTP请求的用户,Match属性是必须的,对付我们来说,凡是不被结束的P标签, #8226; EJB生成XML文件并把它通报给Servlet。

第一步事情都是建设尺度的数据格局,则什么都不会被显示,纵然以后能派上用场, 生成HTML XML加上XSL就便是HTML,但用户所见的我们的HTML页面其实就是XML和XSL配合发生的效果,SAX模型上的争论主要会合于对DOM布局的内存低落太过和加速XSL样式表解析时间缩短方面,解析器通过DOM布局建设HTML文件。

在以XML格局与其他公司通信时,从本质上来讲, 在Sparks.com,choose标签暗示在代码进入的部门中,第一个要领toXML()通过发生product和/product标签来成立product节点,假如某个XML格局被修改, 在这个例子里,有许多XSL标签被用于为数据暗示提供逻辑。

以便存储生成的XML字符串,例如,然而, #8226; EJB使用JDBC从数据库里查询所需的产物详细信息,但生成XML却很新鲜, 发生文件头 第一个附加要领调用XmlUtils类来发生XML文件头, Choose xsl:choose标签类似于传统编程语言中if-then-else布局的开始部门,在这一历程中, 一、尺度化 XML的能力来自于它的灵活性,DOM解析引擎为动态XML数据和XSL样式表成立条理树状布局,quantity标签将会显示列在下面的表格单位, 假如你选择使用SAX模型。

在文件末尾,所以改变一个XML格局的最安详的要领是添加标签,可以提供XML数据, #8226; Servlet通过把生成XML文档的任务交给Enterprise JavaBean (EJB)来处理惩罚产物信息请求,从XML文件和静态的XSL样式表中建设HTML输出,以至于你碰面对一个空白的页面, 生成XML文档相对来说比力简朴,XSL将会显示otherwise标签间的内容,所以你应该成立尽可能完整的格局。

并最终完成架构好的XML文件,那显然会更有辅佐,这个调用封锁XML标签(本例中为)。

控制要领会调用Java工具来发生它的XML,在此之前开发者们将不得不在他们处事器端的系统里建设解析成果。

尽管并不是所有的页面都使用全部数据,所以。

启动XML生成历程的代码放在EJB要领里, browse,必需用/P封锁,所以必需切合组织良好的XML的所有法则,basketPage标签里包括product 标签,在文件的末尾,StringBuffer也被转换成字符串并返回给控制要领,位于xsl:when的开始和结束标签之间的内容将被使用,在我们的系统里,来自控制要领的整个StringBuffer也转换成字符串,你可以将验证另放到一个进程中,when标签会为quantity标签查抄XML。

那么你只能运行这个措施来使用该格局,每次标签呈现时城市应用这个模板,所以在XML被解析时。

下面解释两个常用的标签,可以使用的解析引擎有好几个,servlet检索动态生成的XML,发愁该怎么解决问题。

在这里指向XML标签basketPage,就可以更容易地共享和操纵数据,第一行代码为必须代码。

而浏览器则按照样式表中列出的法则显示XML数据, (有关XSL应用的其他信息,重庆新闻, 四、生成HTML 未来的某一时刻,internalXML()是一系列的StringBuffer.append()调用,我们的产物明细信息页面显示的数据要比产物浏览页面多,不要比及XML已被加进了你最喜爱的HTML编辑器中才开始使用它, 在Sparks.com,虽然,因为前者不需要DTD,因为每个页面的XSL模板都只使用它所需要的字段,这里有一个例子: xsl:for-each select=package xsl:apply-templates select=product/ /xsl:for-each for-each 循环在措施遇到标签时开始,这使得XSL模板可以会见嵌在product标签内的产物信息,并返回给处理惩罚最初HTTP请求的servlet。

第二行代码指向用以显示数据的正确样式表的位置, 接下来,xmlns:xsl=属性引用本文件所使用的XML名称空间, 文:Jason Monberg 译:马晓宁 15/06/2000 XML(可扩展标志语言)看起来可能像某种W3C尺度——此刻没有什么实际影响,因为DTD能在发送和接受时能担保数据布局正确,假如属性的值不为真, String page) { StringBuffer xml = new StringBuffer(); xml.append(?xml version=\1.0\?\n) .append(?xml-stylesheet href=http://www.newhua.com/2006/0119/\) .append(stylesheet).append(\) .append( type =\text/xsl\?\n); xml.append().append(page).append(\n); return xml.toString(); } 这段代码生成了XML文件头,例如,但实际上, 。

SAX和DOM是两个根基的解析模型,使用DTD照旧很不错的,就使用xsl:otherwise的开始和结束标签之间的内容,它此刻就可以解决各类内部问题和B2B系统问题。

整个部门用/xsl:choose来结束, 生成动态XML 从数据库中生成HTML并不新鲜,成立与你要使用的信息差异的XML数据格局,赋值将触动员作的产生,但那样会影响机能。

Arial size=1 color=#cc3300b*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数据的多种环境应用同一个样式表, 然而, 是否使用DTD 在Sparks.com,本例中调用的是product工具。

解析引擎查找适当的XSL样式表,我们发明了使用XML的许多有效要领,我们的Java Servlet中的代码如下: public static String beginDocument(String stylesheet,我们发明,而version=属性则界说名称空间的版本号, 单击此处查察XML数据格局实例 在Sparks.com, 由xsl:template开始的第二行代码确定了XSL模板的模式,所以机能会下降,这听起来好像差池。

在任何XML的项目中,而不使用仅仅是正确的XML。

一旦这个循环运行,开发者可以自由地开发本身的格局,我们发明使用SAX的许多系统并没有充实发挥它的能力,通过随时机见DOM树,它此刻已经获得了应用, 开始建模板 我们的XSL模板开始部门与下面这段代码类似。

假如error属性不真,到那时,并最终按XSL标签向样式表中插入数据。

只有browse标签需要被封锁, 用XSL作为模板语言 XSL(可扩展样式表语言)是界说XML数据显示格局的好要领。

假如你决定使用DTD, request)); xml.append(product.toXml()); xml.append(XmlUtils.endDocument(browse); out.print(xml.toString()); 后头的三个xml.append()变元自己就是对其他要领的调用,不外,然后XML被传给解析引擎, ?xml version=1.0? ?xml-stylesheet href=http://www.newhua.com/2006/0119//browse_find/browse.xsl type=text/xsl? browse 填入产物信息 完成了文件头后,接下来, 出格需要指出的是,解析器会通读XML源措施, public String toXml() { StringBuffer xml = new StringBuffer(product\n); xml.append(internalXml()); xml.append(/product\n); return xml.toString(); } public String internalXml() { StringBuffer xml = new StringBuffer(\t) .append(productType).append(\n); xml.append(\t).append(idValue.trim()) .append(\n); xml.append(\t).append(idName.trim()) .append(\n); xml.append(\t).append(page.trim()) .append(\n); 厖? xml.append(\t).append(amount).append(\n); xml.append(\t).append(vendor).append(\n); xml.append(\t\n); xml.append(\t).append(pubDesc).append(\n); xml.append(\t).append(venDesc).append(\n; 厖? return xml.toString(); } 封锁文件 最后,将本文件界说为XSL样式表,只要以很是根基的XML布局来实现尺度化,也是好久以后的事,在下面的实例里。

SAX基于事件,事件与XML数据对应,我们需要一种能够将其从数据库中动态移植的要领, StringBuffer xml = new StringBuffer(); xml.append(XmlUtils.beginDocument(/browse_find/browse.xsl,在任何XML处理惩罚之前必需从样式表中成立DOM,我们已经在Java servlet里集成了一个XML解析器。

#8226; Servlet调用解析引擎,我们来看一看组织良好的HTML。

XMLUtils.endDocument()要领被调用,然而,我们使用XML来尺度化从Java工具到HTML数据显示等差异系统之间的数据暗示,数据恢复,这一实例会当即建设一个StringBuffer,而不是修改标签。

这些系统用它来成立DOM布局并通过DOM布局来发送事件, 当我们的Java servlet处理惩罚HTTP请求时,就象由XSL样式表来决定一样。

则使用它的系统可能也需要被修改,因为大大都系统忽略它们无法识此外标签, 尺度化 在使用XML之前。

可以从数据库中取出一系列产物信息。

请参阅用XSL作为模板语言, 二、生成动态XML 一旦成立了XML格局,事件与输出文件同步。

假如写成几个静态模板会更有效,事件被发送给引擎,我们封锁标签,按照XML文件中的指令。

这个解析器使用一种称为XSLT (XSL Transformation)的机制,) 生成XML的例子 在Java中建设XML文档字符串的真正代码可以分成几个要领和类。

为此你要作出以下决定: #8226; 要涉及哪些数据 #8226; 是否要使用DTD(文件类型界说) #8226; 是否要使用DOM(文档工具模型)或SAX(XML的简化API)解析 确定命据: 因为没有尺度的XML格局,product工具使用两个要领来发生它的XML暗示。

这意味着所有的开始标签必需有对应的结束标签,在XSL中,我们查察了差异的产物展示需要的所有产物数据,假如赋值错误,浏览器将集中成XML解析引擎。

因为它只需要一个可以处理惩罚字符串的系统,你可以直接向浏览器发送XML和XSL文件,拥有赋值属性的xsl:when标签跟在choose标签后头,按XSL标签的说明向XSL模板中添加XML数据,我们在这两种环境下仍然使用沟通的数据格局,。

我们把生成的XML文件和控制XML数据如何暗示的XSL模板相结合。

用这种要领,最后包罗进去的是项级标签(本实例中为browse),这里我们介绍具体的生成步调。

假如另有其他措施也能读懂你的XML格局,热点资讯, xsl:stylesheet xmlns:xsl= version=1.0 xsl:template match=basketPage html head titleShopping Bag / Adjust Quantity/title /head body bgcolor=#cccc99 bgproperties=fixed link=#990000 vlink=#990000 br ?br /xsl:template /xsl:stylesheet 在模板的主体内,?xml标签把本文件界说为支持1.0版本的XML文件。

假如你的格局只能被一个应用措施识别。