当前位置:  编程技术>java/j2ee

Jsp结合XML+XSLT将输出转换为Html格式

    来源: 互联网  发布时间:2014-10-14

    本文导语:   我们知道 XML+XSLT就可以直接输出到支持XML的浏览器上,如IE 5.0以上,但是,我们还要考虑到有不少浏览器不直接支持XML,在这种情况下,我们需要在服务器上进行转换成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="/tech-java/catalog.xsl"?> 

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


 


    
 
 

您可能感兴趣的文章:

  • 我已经在输出前包含了<jsp:include page="2.jsp"/>,
  • ******"Servlet根据JSP视图的需求生成JavaBeans的实例并输出给JSP环境"如何实现上面这句话的效果??*******
  • 在jsp页面上输出图形的问题,高分酬谢。
  • 请问如何在jsp页面中用class在网页上输出信息?100分
  • 在jsp页面加载时自动调用某个特定的servlet,由servlet查询数据库输出WEB页面返回给jsp显示?
  • jsp的线程中如何向客户端输出?
  • JSP页面中能定义文件输出流变量吗?
  • jsp怎样能使从sql server数据库读出来的数据正常输出到显示的页面呢?怎样使后添的内容输出到查看留言最前面呢?
  • 使用JSP扩展标签,可否从标签内得到一个输出参数?
  • 需要从数据库中动态生成的页面是该在SERVLET输出生成,还是应该在JSP编码实现?
  • 请问:如何实现jsp的汉字输出?
  • 如何中断jsp的执行,输出呢?
  • JSP中调用Java Bean,为什么Bean中不能输出?
  • 请问在JSP页面中如何打印该页面中<body>标记符中的内容?还有如何获得一个到打印机的输出流?谢谢先
  • 在jsp中打印用pdf输出,谁能给个材料,网址,最好是例子,分不是问题?
  • 请问jsp中有没转意字符,如想输出"——急!急!急!(online wait)
  • jsp源码实例1(输出)
  • jsp 页面上图片分行输出小技巧
  • 在jsp中定义的方法里面,是不是只能用system.out.print输出,而不能用out.print输出?代码如下:
  • jsp中线程输出。
  • [求助]如何将用jsp写成的动态页面(*.jsp), 转换成静态页面(*.html)???
  • JSP中日期类型转换的问题
  • 50分求教,在JSP里如何将String转换成Double
  • JSP中的类型转换?
  • asp转换成jsp
  • 不好意思,JSP中String大小写转换函数是什么?
  • 在 JSP 中怎么进行各种数据类型的转换?
  • jsp中怎样转换半角和全角,能控制吗?
  • 急救:如何在jsp中将阿拉伯数字转换成中文大写,如:'1228008.98' 转换为 '壹佰贰拾贰万扒仟零扒圆玖角扒分'各位大虾给看看,一定给分!!
  • 如何在JSP中转换函数类型
  • 在JSP中我如何将“4/5/2001”串转换为“2001-04-05”?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 大家谈谈javascript和jsp,servelt的结合!分不够可以追加!!!
  • jsp如何和xml结合使用??
  • servlet和jsp结合的问题
  • 100分求能收发附件的jsp与java mail结合的源码~~~~
  • jsp与servlet如何结合?java高手请进
  • jquery easyui 结合jsp简单展现table数据示例
  • 谁能给我一个Java读取XML的例子,最好有注释和说明,小弟想了解JSP和XML结合编程的一些东西,找不下资料?
  • 请问怎样用JSP结合数据库生成在HTML中显示的树目录,如同“资源管理器”一样!
  • JSP中清空cookie代码参考
  • 现有1.jsp、2.jsp、3.jsp三个文件,我怎么在3.jsp文件中得到1.jsp中输入的值?
  • 一个框界网爷包含上下两个网页a1.jsp和a2.jsp,怎么实现a1.jsp自身不变且提交数据到下面的a2.jsp呢?不胜感激,急..
  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • response.sendRedirect("index.jsp") 和 <jsp:forward page="index.jsp"/>的区别?
  • 想把一个jsp转到另一个jsp页面,要穿参数,中文的(jsp变量)。谁教教我?!
  • aaa.jsp有如下链接,当单击该链接时将id值传递给bbb.jsp,怎样在bbb.jsp中引用这个id值?
  • jsp+bean还是jsp+ejb还是jsp+servlet还是asp+activex好?
  • 谁能告诉我,怎么调试jsp程序呀!我在jsp中调用java,但是Tomcat这家伙只会给我报jsp文件出错。这可怎么办呀?
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 初学jsp,一个html调用一个jsp,这个jsp调用一个javaBean,已编译成类,最后如何部署(用j2sdkee)?
  • 我要学jsp,已经下载了j2ee1.4,需要一个支持jsp引擎的WEB服务器或jsp引擎!!(急,马上给分)
  • jsp中相对路径怎么表示?例如当前目录下的jsp目录里的文件。
  • 欲学JSP,请教JSP资料,最好电子版。
  • jsp中文乱码 jsp mysql 乱码的解决方法
  • jsp+JavaBean vs jsp+Servlet+JavaBean
  • JSP/html 编辑器 Bravo JSP editor
  • JSP开发入门(五)--JSP其他相关资源
  • <jsp:include page="SystemLeft.jsp?TypeId=<%= itTypeId.toString() %>" flush="true" />
  • 用JBUILDER如何调试一个JSP工程,一次只运行一个JSP页面?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3