`

Jsp结合XML+XSLT将动态页面输出为Html静态格式

    博客分类:
  • jsp
阅读更多
我们知道 XML+XSLT就可以直接输出到支持XML的浏览器上,如IE 5.0以上,但是,我们还要考虑到有不少浏览器不直接支持XML,在这种情况下,我们需要在<nobr>服务器</nobr>上进行转换成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数据.


java 代码
  1. <xsl:apply xsl="/xml/employeeList.xsl">   
  2. <?xml version="1.0" encoding="ISO-8859-1"?>   
  3. <employees>   
  4. <employee id="123">   
  5. <first-name>John</first-name>   
  6. <last-name>Doe</last-name>   
  7. <telephone>800-555-1212</telephone>   
  8. </employee>   
  9. <employee id="456">   
  10. <first-name>Jane</first-name>   
  11. <last-name>Smith</last-name>   
  12. <telephone>888-555-1212</telephone>   
  13. </employee>   
  14. <employee id="789">   
  15. <first-name>George</first-name>   
  16. <last-name>Taylor</last-name>   
  17. <telephone>555-555-1212</telephone>   
  18. </employee>   
  19. </employees>   
  20. </xsl:apply>   
  21. <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 代码
  1. <?xml version="1.0"?>   
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   
  3. <xsl:template match="employees">   
  4. <table border="1" width="100%">   
  5. <tr>   
  6. <th>ID</th>   
  7. <th>Employee Name</th>   
  8. <th>Phone Number</th>   
  9. </tr>   
  10. <xsl:for-each select="employee">   
  11. <tr>   
  12. <td>   
  13. <xsl:value-of select="@id"/>   
  14. </td>   
  15. <td>   
  16. <xsl:value-of select="last-name"/>,   
  17. <xsl:value-of select="first-name"/>   
  18. </td>   
  19. <td>   
  20. <xsl:value-of select="telephone"/>   
  21. </td>   
  22. </tr>   
  23. </xsl:for-each>   
  24. </table>   
  25. </xsl:template>   
  26.   
  27. </xsl:stylesheet>   
  28.   
  29.     
  30.   
  31. employees.xml   
  32.   
  33. <?xml version="1.0" encoding="ISO-8859-1"?>   
  34.   
  35.   
  36. <employees>   
  37.  <employee id="123">   
  38.   <first-name>John</first-name>   
  39.   <last-name>Doe</last-name>   
  40.   <telephone>800-555-1212</telephone>   
  41.  </employee>   
  42.   
  43.  <employee id="456">   
  44.   <first-name>Jane</first-name>   
  45.   <last-name>Smith</last-name>   
  46.   <telephone>888-555-1212</telephone>   
  47.  </employee>   
  48.   
  49.   <employee id="789">   
  50.   <first-name>George</first-name>   
  51.   <last-name>Taylor</last-name>   
  52.   <telephone>555-555-1212</telephone>   
  53.  </employee>   
  54. </employees>   
  55.     
  56.   

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


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

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

分享到:
评论

相关推荐

    JAVA WEB 开发详解

    - XSLT(Extensible Stylesheet Language Transformations)用于转换XML文档,可以将一个XML文档转换为另一个结构不同的XML文档,或转换为HTML等其他格式。 #### 二、Servlet详解 **Servlet**是Java EE的一个关键...

    高级WEB编程技术(JSP与XML)教学网页

    1. **数据绑定**:JSP可以通过JSTL的XML标签或者DOM/SAX解析XML,将XML数据绑定到JSP页面,实现动态展示。 2. **Web服务**:JSP可以调用基于XML的Web服务接口,获取并处理返回的数据,提供丰富的用户界面。 3. **...

    css-html-jsp-xml学习笔记

    4. XSLT转换:XSLT用于将XML转换为其他格式,如HTML或PDF,通过匹配模式和模板规则来定义转换逻辑。 5. XPath:XPath是XML路径语言,用于选取XML文档中的节点,可以用来导航、查找和操作XML数据。 6. DOM和SAX解析:...

    JSP and XML

    此外,JSP和XML还可以结合Java服务器端技术如Spring框架,通过XPath或XSLT进行数据转换,实现更复杂的Web应用程序。 总之,JSP和XML都是Web开发中的关键组件,它们各自承担着不同的职责,JSP负责动态内容的生成,而...

    一些ASP JSP XML的入门资料

    JSP(JavaServer Pages)是Java平台上的Web开发技术,它允许开发者将静态HTML和动态Java代码结合在一起。学习JSP,你需要掌握: 1. JSP基本结构:JSP页面由HTML标记和JSP元素组成,如脚本元素、指令元素和动作元素...

    JSP 技术大全

    JSP(JavaServer Pages)是Java平台上的动态网页技术,它允许开发者将静态HTML页面与动态Java代码相结合,以创建交互式的Web应用。在本教程中,我们将深入探讨JSP的核心概念、操作环境以及它与其他关键Java技术如...

    XML学习资料,设计网页制作

    3. **数据与显示分离**:XML与显示样式分离,可以结合CSS定义样式,通过XSLT转换数据结构,或者用XSL-FO进行更复杂的格式化输出。 4. **灵活的WEB应用**:XML可以作为数据存储和交换的通用格式,适用于各种Web应用...

    基于ServletJSP和XML技术的远程教学系统的研究与实现

    ### 基于Servlet/JSP和XML技术的远程教学系统的研究与实现 #### 概述 随着信息技术的快速发展,特别是互联网技术的日新月异,网络教学已成为教育领域中不可或缺的一部分。传统的教学方式受到时间和空间的限制,而...

    基于XML的自动化信息发布方案

    新闻数据以XML文件存储,利用ASP(或其他类似JSP、PHP的开发工具)与XML结合,自动创建静态HTML页面。静态页面以时间戳命名,确保唯一性,并方便用户浏览。 此外,XML技术还支持XPath用于文档搜索,XSLT和SOAP用于...

    JSPLesson

    XML文件可能被解析为DOM(Document Object Model)树,然后由Java代码处理,或者通过XSLT(XSL Transformations)转换为HTML或其他格式,最后在JSP中呈现。此外,Spring框架等高级技术也允许使用XML配置来管理依赖...

    基于XML的自动化信息发布方案.doc

    基于XML的自动化信息发布方案结合两者优点,无需数据库管理系统,而是利用XML文件存储信息,通过程序自动生成静态HTML页面,简化发布流程,尤其适合中小型网站。 XML的特性包括: 1. **通用性**:XML是国际标准,...

    jsp学习常用标签!!!!!

    - **jsp:include**:此动作用于将一个JSP页面或静态文件嵌入到当前页面中。这有助于保持代码的一致性和可维护性。 - **page**:指定要包含的资源路径。 - **flush**:当值为“true”时,在包含资源之前会先清空...

    基于J2EE 与XML 的网站自动生成技术研究

    - **样式表**:使用XSLT(Extensible Stylesheet Language Transformations)可以将XML文档转换为其他格式,如HTML或PDF,从而实现内容与表现的分离。 - **配置文件**:XML常被用作配置文件的格式,用于存储系统的...

    EL+JSTL的相关笔记

    JSP 提供了一种简洁的方法,在 HTML 页面中嵌入 Java 代码片段,使得开发者能够轻松地将动态内容集成到网页中。 #### JSP 的基本用法 - **指令写法** (`指令名字%&gt;`) - **page 指令** - `language`: 表明可以...

    w3school_Java&JSP;教程

    - **JSPXML数据处理** - JSP 可以使用多种技术处理 XML 数据,如 DOM、SAX、XSLT 等。 - **JSPJavaBean** - JavaBean 是一种 Java 类,通常用于封装数据和业务逻辑。 - **JSP自定义标签** - 自定义标签允许开发者...

    JavaWeb帮助文档Api

    - **HTML和CSS的结合**:学习如何将静态HTML内容与CSS样式结合起来,创建具有吸引力的用户界面。 - **JavaScript与DOM操作**:掌握如何使用JavaScript动态修改HTML元素,提升用户体验。 - **JSP与Java后端**:理解...

    Java Web 技术手册-大集合

    JSP结合了HTML的静态内容和Java的动态功能,支持MVC模式,可以与Servlet、JavaBeans、EJB等Java技术协同工作,构建企业级Web应用。 五、XML(eXtensible Markup Language) XML是一种标记语言,用于存储和传输结构...

    AJAX基础概念、核心技术与典型案例(内涵动态实例)

    13.1.xsl 使用XSLT将XML转换为HTML 13.2.xml 一个雇员列表xml文件 13.2.xsl 一个XSL样式表的例子 13.3.htm Internet Explorer 浏览器中XML的应用 13.4.htm 直接对XML文档...

    java web开发基础知识整理

    例如,Java处理服务器端逻辑,HTML提供静态页面结构,JavaScript负责前端交互,Ajax则使前后端通信更加流畅,而XPath帮助解析和操作XML数据。熟悉这些技术并掌握它们的结合使用,将使你能够构建功能丰富的、交互性强...

    jstl standard urlrewritefilter

    然后,在JSP页面中通过`&lt;%@ taglib %&gt;`指令引入JSTL库,并在web.xml中配置URLRewriteFilter。接着,创建一个`urlrewrite.xml`配置文件,定义URL重写规则。最后,在JSP页面中,可以使用JSTL标签配合URLRewriteFilter...

Global site tag (gtag.js) - Google Analytics