转自: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)方法执行转换。

程序示例:

[html] view plaincopyprint?
  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规范编程

转载于:https://www.cnblogs.com/qingzhou/p/4205674.html

学习笔记——XSLT转换器的使用(Xalan和Saxon) .(转)相关推荐

  1. 学习笔记——XSLT转换器的使用(Xalan和Saxon)

    XSLT分为两类: 1:客户端转换:需要浏览器的支持. 2:服务器转换:需要使用编程将XML根据XSLT文档转换成相应的HTML,在输出到客户端. 服务器转换分为两类: 1:实时转换:当服务器接收客户 ...

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

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

  3. XSL学习笔记6 XSLT内置模板规则

    XSL学习笔记6 XSLT内置模板规则 定义正确的模板规则来匹配XML树中的节点是XSLT应用的关键.为了让源文档树的节点在没有明确匹配规则的情况下,能够被递归处理,XSLT定义了几个内置的模板规则, ...

  4. XSLT转换器的使用(Xalan和Saxon)

    原文:http://blog.csdn.net/crystalbruce/article/details/7401602 XSLT分为两类: 1:客户端转换:需要浏览器的支持. 2:服务器转换:需要使 ...

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

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

  6. 竹笋炒肉的cocoon学习笔记

    http://hedong.3322.org/ cocoon读[ke'ku:n],茧的意思. 接连看到几篇文章谈cocoon,因其中牵扯术语太多,看后一头雾水,遂起学习之心. 网上找到很多谈cocoo ...

  7. Json.Net学习笔记

    Json.Net学习笔记 摘自:  http://www.verydemo.com/demo_c360_i45119.html 分类: 编程语言/ ASP.NET/ 文章 导读:string goog ...

  8. CCNP学习笔记(6)

    一.交换机 1.二层交换 特性: ①基于MAC地址转发数据帧 ②硬件工作 ③处理数据效率高,数据传输延时低 ④转发广播 2.三层交换 特性: ①提供路由功能 ②提高安全性 ③流量管理 3.网络方案中交 ...

  9. Programming Computer Vision with Python (学习笔记一)

    转载自:http://segmentfault.com/a/1190000003941588 介绍 <Programming Computer Vision with Python>是一本 ...

最新文章

  1. C++编程进阶7(何时使用成员函数模板,模板类的实参推断与类型转换、继承与数组)
  2. android RecycleView padding 和高度一样会出现什么情况?
  3. Android Studio 三种添加插件的方式,androidstudio
  4. 百度地图infowindow
  5. VS2008部分使用技巧
  6. 【转载】指导教师的局域网聊天
  7. Java 面试题全梳理
  8. CUDA bank 及bank conflict
  9. 多线程—— Lock(线程锁)
  10. 为什么要网页模块化?
  11. IIS的URL重写(url地址映射)
  12. 12款热门Java小游戏项目的源码和教程
  13. Qt图像处理技术二:对QImage图片简单滤镜(暖色,冷色,反色,老照片,灰度)
  14. Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization
  15. window7系统的电脑如何调节亮度?
  16. GIC/ITS代码分析(1)MADT表
  17. Python搭建代理池爬取拉勾网招聘信息
  18. matlab绘制磁场图,基于Matlab的电磁场图示化教学
  19. PL/SQL Developer设置日期格式
  20. 人生的意义是什么,活着的意义是什么?

热门文章

  1. 09-事务原理和自动提交设置
  2. 大div套多个小div,怎样设置外div的高度自适应?
  3. mvc在页面上显示PDF
  4. Verilog_Day2
  5. HTML 5常用的交互元素————内容交互元素(2)
  6. FreeBSD Top States
  7. 心得14-hibernate的优化2-抓取(fetch)
  8. PHP获取 当前页面名称、主机名、URL完整地址、URL参数、获取IP
  9. linux arpwatch 命令详解
  10. 阿里云HBase全新发布X-Pack NoSQL数据库再上新台阶 1