|
用XML和XSL来生成动态页面(3) }
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(); }
关闭文件 最后,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>
|