当前位置: 主页 > 编程知识 > xml编程 > XML应用:如何用XML和XSL生成动态页面

XML应用:如何用XML和XSL生成动态页面

时间:2009-12-10来源:站长资讯网 点击:

二、生成动态xml

一旦建立了xml格式,我们需要一种能够将其从数据库中动态移植的方法。

生成xml文档相对来说比较简单,因为它只需要一个可以处理字符串的系统。我们建立了一个使用java servlet、enterprise javabean server、jdbc和rdbms(关系型数据库管理系统)的系统。


• servlet通过把生成xml文档的任务交给enterprise javabean (ejb)来处理产品信息请求。
• ejb使用jdbc从数据库里查询所需的产品详细信息。
• ejb生成xml文件并把它传递给servlet。
• servlet调用解析引擎,从xml文件和静态的xsl样式表中创建html输出。

(有关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\"?>\n")
    .append("<?xml-stylesheet href=http://www.knowsky.com/\"")
    .append(stylesheet).append("\"")
    .append(" type =\"text/xsl\"?>\n");
  xml.append("<").append(page).append(">\n");
  return xml.tostring();
}

这段代码生成了xml文件头。<?xml>标签把本文件定义为支持1.0版本的xml文件。第二行代码指向用以显示数据的正确样式表的位置。最后包括进去的是项级标签(本实例中为<browse>)。在文件末尾,只有<browse>标签需要被关闭。


<?xml version="1.0"?> <?xml-stylesheet href="http://www.chinaz.com/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>\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();
}

关闭文件

最后,xmlutils.enddocument()方法被调用。这个调用关闭xml标签(本例中为),并最终完成架构好的xml文件。来自控制方法的整个stringbuffer也转换成字符串,并返回给处理最初http请求的servlet。

站长资讯网
.
分页: [1] [2] [3] [4]
TAG: XML XSL 动态页面
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言