xslt将word转换成html,xslt将xml转换成html

(一)后台转换,不需要jsp页面(word模板,xml模板)

1.需要下载xalan.jar(在博客资源内,免分)

 

2.需要xslt文件(该文件对相应格式的xml,语法参考http://www.w3school.com.cn/xsl/

例如

<?xml version="1.0" encoding="UTF-8"?>


<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


 <xsl:template match="/"><!-- 路径为XPath语言 -->


  <html>


   <body style="padding-top:10px;padding-left:50px;padding-right:50px;padding-bottom:15px;">


    <div style="border-style:solid;border-width:1pt; border-color:red;padding-top:20px;padding-bottom:15px;padding-left:10px;padding-right:10px;">


     <form name="frm" method="post" action="">


      <xsl:apply-templates/>


     </form>


    </div>


   </body>


  </html>


 </xsl:template>
 
 <xsl:template match="CONTENT">


  <xsl:apply-templates/>


 </xsl:template>
 
</xsl:stylesheet>

 

3.后台将word转换为xml(如果直接另存为word xml 有时格式不完整,还是需要后台处理)。

 

对xml进行解析生成org.dom4j.Document对象例如sourceXMLDocument。

 

4.Action中

  xsltPageAddress为上述xstl文件全路径,sourceXMLDocument为上述后台生成Document

 

 SAXReader reader=new SAXReader();


  TransformerFactory factory=TransformerFactory.newInstance();


  StreamSource xsl=new StreamSource(xsltPageAddress);


  Transformer transformer=factory.newTransformer(xsl);


  Properties properties=transformer.getOutputProperties();


  properties.setProperty(OutputKeys.ENCODING,"GBK");


  properties.setProperty(OutputKeys.METHOD, "html");


  properties.setProperty(OutputKeys.VERSION, "4.0");


  transformer.setOutputProperties(properties);


  DocumentSource documentSource=new DocumentSource(sourceXMLDocument);


  StringWriter strWriter=new StringWriter();


  StreamResult streamResult=new StreamResult(strWriter);


  transformer.transform(documentSource, streamResult);


  System.out.println("strWriter:"+strWriter);

 

  OutputStream outputStream=ServletActionContext.getResponse().getOutputStream();


  outputStream.write(strWriter.toString().getBytes());


  outputStream.close();

 

5.struts2配置

 

<action name="XXX" class="XXXAction" method="XXX">


       <result type="stream">


       </result>


 </action>

 

这样后台会报inputName错误,但是不影响生成Html

 

(二)前台页面转换

 

1,2,步骤如上

 

3.后台根据word生成一个新的xml(比较麻烦,因为需要删除)

 

4.struts2正常配置,并配置物理结果视图JSP

 

5.jsp页面代码

 <%@page import="javax.xml.transform.*,javax.xml.transform.stream.*" %>

<%

    String xmlAddress=(String)request.getAttribute("xmlAddress");   //需要转换的XML地址


    String xsltAddress=(String)request.getAttribute("xsltAddress");   //xslt样式文件地址


    TransformerFactory tFactory=TransformerFactory.newInstance();


    System.out.println(xsltAddress);


    Transformer transformer=tFactory.newTransformer(new StreamSource(application.getRealPath(“")+"\\"+xsltAddress));


    System.out.println(xsltAddress);


    transformer.transform(new StreamSource(application.getRealPath("")+"\\"+xmlAddress),new StreamResult(response.getOutputStream()));


    out.println();


    out.clear();


    out=pageContext.pushBody();

%>

欢迎加入我的QQ交流群425783133

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值