熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Jsp結合XML+XSLT將輸出轉換為Html格式

2013-11-15 12:11:24  來源: JSP教程 

  我們知道 xml+XSLT就可以直接輸出到支持XML的浏覽器上如IE 以上但是我們還要考慮到有不少浏覽器不直接支持XML在這種情況下我們需要在服務器上進行轉換成html輸出到浏覽器這種臨時過渡辦法恐怕要在一段時間內一直要使用   使用jsp 加上tablib標識庫我們可以完成這種轉換

  著名open source項目組jakartaapacheorg推出的系列標識庫中就有這個功能的tanglib:

  按照jakarta配置方法有點繁瑣需要修改或定義Webxml本人經過摸索使用下列相當簡單的辦法就可以使Jsp能成功運行XSL這個標識庫了

  xsl標識庫有三個關鍵包:
xercesjar 可以在中得到
xalanjar 可以在中得到
xsljar 從得到

  將這三個包放置到Tomcat的common/lib目錄下或者直接放入Classpath環境中

  在JSP中調用標識庫

  原來Jakarta推薦方法是

  
<%@taglib uri="%>

  這就需要在/WEBINF/webxml下定義一下指向

  
<taglib>
<tagliburi></tagliburi>
<tagliblocation>/WEBINF/xsltld</tagliblocation>
</taglib>

  這種做法雖然很標准但是如果你的容器一直使用tomcat就完全不必了

  我們的做法是

  
<%@taglib uri="xsljar" prefix="xsl" %> 

  我們以Jakarta的XSL taglib附帶的Applyjsp為例正好了解一下Jsp XML XSLT三者之間的關系

  Applyjsp

  
<%@taglib uri="xsljar" prefix="xsl" %>
<html>
<head>
<title>Employee List</title>
</head>
<body bgcolor="white">

  <p>下面展示了Jsp的四種組合XML XSLT的方法
<p>下面使用apply方法將已經存在的employeesxml和employeeListxsl結合在一起

  <xsl:apply xml="/xml/employeesxml" xsl="/xml/employeeListxsl"/>
<hr>

  
<p>下面是使用已經存在employeeListxsl 然後在Jsp中自己直接寫入XML數據

  
<xsl:apply xsl="/xml/employeeListxsl">
<?xml version="" encoding="ISO"?>
<employees>
<employee id="">
<firstname>John</firstname>
<lastname>Doe</lastname>
<telephone></telephone>
</employee>
<employee id="">
<firstname>Jane</firstname>
<lastname>Smith</lastname>
<telephone></telephone>
</employee>
<employee id="">
<firstname>George</firstname>
<lastname>Taylor</lastname>
<telephone></telephone>
</employee>
</employees>
</xsl:apply>
<hr>

  <p>下面使使用include調用的辦法這樣一個XSLT樣式可以適應不同的XML文件

  <xsl:apply xsl="/xml/employeeListxsl">
<xsl:include page="/xml/employeesxml"/>
</xsl:apply>
<hr>

  <p>下面是使用import方法在pagescope(類似scope="page")中導入XML文件</p>

  <xsl:import id="data" page="/xml/employeesxml"/>
<xsl:apply nameXml="data" xsl="/xml/employeeListxsl"/>

  </body>
 

  在上面程序中展示了四種Jsp組合XML XSLT的方法基本可以滿足我們的需要注意上面的XML文件路徑是"/xml/"這是相對Tomcat容器的絕對路徑

  我們簡單看一下employeeListxsl和employeesxml內容

  employeeListxsl類似html中的CSS主要是對XML中數據顯示方式進行定義

  <?xml version=""?>
<xsl:stylesheet version="" xmlns:xsl=">
<xsl:template match="employees">
<table border="" width="%">
<tr>
<th>ID</th>
<th>Employee Name</th>
<th>Phone Number</th>
</tr>
<xsl:foreach select="employee">
<tr>
<td>
<xsl:valueof select="@id"/>
</td>
<td>
<xsl:valueof select="lastname"/>
<xsl:valueof select="firstname"/>
</td>
<td>
<xsl:valueof select="telephone"/>
</td>
</tr>
</xsl:foreach>
</table>
</xsl:template>

  </xsl:stylesheet>

  employeesxml

  <?xml version="" encoding="ISO"?>

  
<employees>
<employee id="">
<firstname>John</firstname>
<lastname>Doe</lastname>
<telephone></telephone>
</employee>

  <employee id="">
<firstname>Jane</firstname>
<lastname>Smith</lastname>
<telephone></telephone>
</employee>

  <employee id="">
<firstname>George</firstname>
<lastname>Taylor</lastname>
<telephone></telephone>
</employee>
</employees>
 

  如果我們在employeesxml頂部加入

  
<?xml:stylesheet type="text/xsl" href="catalogxsl"?> 

  用支持XML的IE 以上浏覽器調用其顯示頁面就和Applyjsp顯示頁面是一樣的


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20458.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.