转自:http://blog.csdn.net/crystalbruce/article/details/7401602

XSLT分为两类:

1:客户端转换:需要浏览器的支持。

2:服务器转换:需要使用编程将XML根据XSLT文档转换成相应的HTML,在输出到客户端。

服务器转换分为两类:

1:实时转换:当服务器接收客户端请求后,借助于JSP、PHP等动态脚本语言临时根据XSLT转换XML,然后在将转换后的HTML发送给客户端。

2:批量转换:服务器定期转换XML,当服务器接收到请求后直接将已有的HTML发送给客户端,适用于XML变化频率较低的情况。

常用的XSLT转换处理器:

1:Xalan:Apache的子项目。网站http://xalan.apache.org

2:Saxon:SourceForge的子项目。网站http://saxon.sourceforge.net

Xalan处理器

所需包:

xalan.jar:Xalan的核心类库,需要依赖于serializer.jar。

xercesImpl.jar、xml-apis.jar:Java API for XML Processing(JAXP)的核心类库。

使用方法:

xalan.jar本身就是一个可执行的程序。

一:在DOS中使用

输入

java -classpath serializer.jar -jar xalan.jar

命令会输出xalan.jar的各种选项,以下是常用选项:

-IN:指定需要转换的XML;

-XSL:指定使用的XSLT样式单,如果在XML文档中已经引入了XSLT,则可省略此项;

-OUT:指定转换后输出的目标文档。

示例:

java -classpath serializer.jar -jar xalan.jar -IN name.xml -OUT.name.html

二:使用在Web应用中编程方式

主要使用的类和接口如下:

1:TransformerFactory:转换器工厂,负责生产转换器;

2:Transformer:XSLT转换器,负责加载XSLT样式单文档,并执行转换;

3:Source:代表源XML文档的接口,其常用实现类有DOMSource、StreamSource、SAXSource;

4:Result:代表转换结果的文档接口,其常用实现类有DOMResult、StreamResult、SAXResult。

步骤:

1:使用TransformerFactory的newInstance()方法创建一个转换器工厂;

2:调用转换器工厂的newTransformer(Source xmlSource)方法创建一个转换器;

3:调用转换器的transform(Source xmlSource, Result OutputTarget)方法执行转换。

程序示例:

  1. <%@ page contentType="text/html; charset="UTF-8" language="java" errorPage="" %>
  2. <%@ page import="javax.xml.transform.*, javax.xml.transform.stream.*" %>
  3. <%
  4. //创建一个转换工厂
  5. TransformerFactory tFactory = TransformerFactory.newInstance();
  6. //用指定的XSLT样式单文件创建一个转换器
  7. Transformer transformer = tFactory.newTransformer(new StreamSource(application.getRealPath("WEB-INF/") + "/name.xslt"));
  8. //执行转换,并将转换后的目标文档作为响应输出
  9. transformer.transform(new StreamSource(application.getRealPath("WEB-INF/") + "/name.xml"), new StreamResult(response.getOutputStream()));
  10. %>
<%@ page contentType="text/html; charset="UTF-8" language="java" errorPage="" %>
<%@ page import="javax.xml.transform.*, javax.xml.transform.stream.*" %>
<%
//创建一个转换工厂
TransformerFactory tFactory = TransformerFactory.newInstance();
//用指定的XSLT样式单文件创建一个转换器
Transformer transformer = tFactory.newTransformer(new StreamSource(application.getRealPath("WEB-INF/") + "/name.xslt"));
//执行转换,并将转换后的目标文档作为响应输出
transformer.transform(new StreamSource(application.getRealPath("WEB-INF/") + "/name.xml"), new StreamResult(response.getOutputStream()));
%>

Saxon处理器

Saxon的功能很强大,其实现了XSLT3.0、XQuery3.0和XPath3.0等规范。

saxon9.jar与此名相似的为核心类库。

其使用方法与Xalan类似。

使用命令:

java -jar saxon9.jar -s:xmlSource.xml -o:outputTarget.html xsl:name.xslt

编程方法与Xalan的编程方法一样,因为都是面向JAXP规范编程

学习笔记——XSLT转换器的使用(Xalan和Saxon) .(转)的更多相关文章

  1. Office365学习笔记—Xslt自定义列表视图

    1,在Office365中需要添加自定义的视图!用Spd添加视图,这儿我添加一个testView! (1)打开testView.aspx将</ZoneTemplate>节点中的内容全部删除 ...

  2. SpringMVC:学习笔记(6)——转换器和格式化

    转换器和格式化 说明 SpringMVC的数据绑定并非没有限制,有案例表明,在SpringMVC如何正确绑定数据方面是杂乱无章的,比如在处理日期映射到Date对象上. 为了能够让SpringMVC进行 ...

  3. [原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  5. Java学习笔记(一)

    纯属个人学习笔记,有什么不足之处大家留言,谢谢 Java程序打包与JAR运行方法 在Eclipse的"包资源管理器"视图中找到要打包成JAR文件的项目.在项目名称上单击鼠标右键,在 ...

  6. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. [原创]java WEB学习笔记68:Struts2 学习之路-- 类型转换与复杂属性配合使用

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. Android学习笔记之JSON数据解析

    转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...

随机推荐

  1. lintcode :Segmemt Tree Build II

    题目 Segmemt Tree Build II The structure of Segment Tree is a binary tree which each node has two attr ...

  2. 两个List合并,过滤重复记录

    import java.util.ArrayList; import java.util.HashSet; import java.util.Hashtable; import java.util.I ...

  3. java:类集框架

    类集框架:jdk提供的一系列类和接口,位于java.util包当中,主要用于存储和管理对象,主要分为三大类:集合.列表和映射. 集合Set:用于存储一系列对象的集合.无序.不允许重复元素. 列表Lis ...

  4. URAL 1957 Wrong Answer 暴力

    Wrong Answer 思路: 1.先枚举4的全排列,即球赛的所有可能结果,一共4!=24种情况 2.对于每种情况,DFS 未确定的比赛 的结果,判断这种情况是否可达. 剪枝: 1.对于每种全排列, ...

  5. 【转载】String、StringBuffer与StringBuilder之间区别

    文章来源:http://www.cnblogs.com/A_ming/archive/2010/04/13/1711395.html 这两天在看Java编程的书,看到String的时候将之前没有弄懂的 ...

  6. ios ableviewcell的动态加载数据,模仿喜马拉雅动态数据加载

    iphone(UITableViewCell)动态加载图片http://developer.apple.com/library/ios/#samplecode/LazyTableImages/Intr ...

  7. NuGet学习笔记

    NuGet学习笔记(1)——初识NuGet及快速安装使用 NuGet学习笔记(2)——使用图形化界面打包自己的类库 NuGet学习笔记(3)——搭建属于自己的NuGet服务器

  8. TeeChart显示三维的图形,使用Surface

    绘制一个球 根据公式x^2+y^2+z^2=R^2; 令x=RsinAcosB  y=RcosAcosB z=RsinB using System; using System.Collections. ...

  9. poj 1699 Best Sequence (搜索技巧 剪枝 dfs)

    题目链接 题意:给出几个基因片段,要求你将它们排列成一个最短的序列,序列中使用了所有的基因片段,而且不能翻转基因. 分析:先计算出add数组,再dfs枚举. 空间复杂度O(n*n),  最坏时间复杂度 ...

  10. sdut 2840 Best string Orz~ (dp)

    题目 题意:有n1个o, n2个r, n3个z, n4个~, 求有多少种组合使 组合出来的字符串的任意前缀都满足 o的个数>=r的个数, r的个数>=z的个数 …………………… 思路:递推 ...