选择显示字体大小

jsp结合xml+xslt将输出转换为html格式

我们知道 xml+xslt就可以直接输出到支持xml的浏览器上,如ie 5.0以上,但是,我们还要考虑到有不少浏览器不直接支持xml,在这种情况下,我们需要在服务器上进行转换成html输出到浏览器,这种临时过渡办法恐怕要在一段时间内一直要使用.   使用jsp 加上tablib标识库,我们可以完成这种转换 著名open source项目组jakarta.apache.org推出的系列标识库中,就有这个功能的tanglib:http://jakarta.apache.org/taglibs/doc/xsl-doc/intro.html

  按照jakarta配置方法,有点繁琐,需要修改或定义web.xml,本人经过摸索,使用下列相当简单的办法,就可以使jsp能成功运行xsl这个标识库了。

  xsl标识库有三个关键包:
   xerces.jar 可以在http://xml.apache.org/中得到
   xalan.jar 可以在http://xml.apache.org/中得到
   xsl.jar 从http://jakarta.apache.org/taglibs/doc/xsl-doc/intro.html得到

  1.将这三个包放置到tomcat的common/lib目录下,或者直接放入classpath环境中。

  2.在jsp中调用标识库:

  原来jakarta推荐方法是:


<%@taglib uri="http://jakarta.apache.org/taglibs/xsl-1.0" prefix="xsl" %>

  这就需要在/web-inf/web.xml下定义一下http://jakarta.apache.org/taglibs/xsl-1.0指向。如:


<taglib>
<taglib-uri>http://jakarta.apache.org/taglibs/xsl-1.0</taglib-uri>
<taglib-location>/web-inf/xsl.tld</taglib-location>
</taglib>

  这种做法虽然很标准,但是,如果你的容器一直使用tomcat,就完全不必了。

  我们的做法是:


<%@taglib uri="xsl.jar" prefix="xsl" %> 

  我们以jakarta的xsl taglib附带的apply.jsp为例,正好了解一下jsp xml xslt三者之间的关系:

  apply.jsp


<%@taglib uri="xsl.jar" prefix="xsl" %>
html
<head>
<title>employee list</title>
</head>
<body bgcolor="white">

<p>下面展示了jsp的四种组合xml xslt的方法:
<p>下面使用apply方法,将已经存在的employees.xml和employeelist.xsl结合在一起

<xsl:apply xml="/xml/employees.xml" xsl="/xml/employeelist.xsl"/>
<hr>


<p>下面是使用已经存在employeelist.xsl 然后在jsp中自己直接写入xml数据.


<xsl:apply xsl="/xml/employeelist.xsl">
<?xml version="1.0" encoding="iso-8859-1"?>
<employees>
<employee id="123">
<first-name>john</first-name>
<last-name>doe</last-name>
<telephone>800-555-1212</telephone>
</employee>
<employee id="456">
<first-name>jane</first-name>
<last-name>smith</last-name>
<telephone>888-555-1212</telephone>
</employee>
<employee id="789">
<first-name>george</first-name>
<last-name>taylor</last-name>
<telephone>555-555-1212</telephone>
</employee>
</employees>
</xsl:apply>
<hr>

<p>下面使使用include调用的办法,这样一个xslt样式可以适应不同的xml文件。

<xsl:apply xsl="/xml/employeelist.xsl">
<xsl:include page="/xml/employees.xml"/>
</xsl:apply>
<hr>

<p>下面是使用import方法,在page-scope(类似scope="page")中导入xml文件</p>

<xsl:import id="data" page="/xml/employees.xml"/>
<xsl:apply namexml="data" xsl="/xml/employeelist.xsl"/>

</body>
 

  在上面程序中,展示了四种jsp组合xml xslt的方法,基本可以满足我们的需要。注意上面的xml文件路径是"/xml/",这是相对tomcat容器的绝对路径。

  我们简单看一下employeelist.xsl和employees.xml内容:

  employeelist.xsl类似html中的css,主要是对xml中数据显示方式进行定义:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">
<xsl:template match="employees">
<table border="1" width="100%">
<tr>
<th>id</th>
<th>employee name</th>
<th>phone number</th>
</tr>
<xsl:for-each select="employee">
<tr>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="last-name"/>,
<xsl:value-of select="first-name"/>
</td>
<td>
<xsl:value-of select="telephone"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>

</xsl:stylesheet>

 

employees.xml

<?xml version="1.0" encoding="iso-8859-1"?>


<employees>
 <employee id="123">
  <first-name>john</first-name>
  <last-name>doe</last-name>
  <telephone>800-555-1212</telephone>
 </employee>

 <employee id="456">
  <first-name>jane</first-name>
  <last-name>smith</last-name>
  <telephone>888-555-1212</telephone>
 </employee>

  <employee id="789">
  <first-name>george</first-name>
  <last-name>taylor</last-name>
  <telephone>555-555-1212</telephone>
 </employee>
</employees>
 

  如果我们在employees.xml顶部加入:


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

  用支持xml的ie 5.0以上浏览器调用,其显示页面就和apply.jsp显示页面是一样的。


 


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons