zoukankan      html  css  js  c++  java
  • 学习笔记——XSLT转换器的使用(Xalan和Saxon) .(转)

    转自: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规范编程

  • 相关阅读:
    好用的抓取dump的工具-ProcDump
    好用的抓取dump的工具-ProcDump
    使用Windbg调试系统弹出的内存不可读错误
    使用Windbg调试系统弹出的内存不可读错误
    驱动层hook系统函数的时,如何屏蔽掉只读属性?
    Rootkit之SSDT hook(通过CR0)
    Rootkit之SSDT hook(通过CR0)
    #define SYSTEMSERVICE(_func) KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_func+1) 这
    华南理工大学“三七互娱杯”程序设计竞赛(重现赛)B HRY and fibonacci
    华南理工大学“三七互娱杯”程序设计竞赛(重现赛)A HRY and codefire
  • 原文地址:https://www.cnblogs.com/qingzhou/p/4205674.html
Copyright © 2011-2022 走看看