xsl生成html文档1

最近需要将xml的数据提取出来转化为xml,因此上网找资料搜索了一番,也学到了很多。现将学习时写的代码和文件发上来,记录记录,以备忘。

首先贴一下xml文件的代码。

 

<?xml version="1.0"?>
<students>
 <student id="1001">
  <name>张三</name>
  <score>85</score>
  <email>zhangsan@126.com</email>
  <age>20</age>
  <address>
   <province>广东</province>
   <city>广州</city>
  </address>
 </student>
 <student id="1002">
  <name>李四</name>
  <score>79</score>
  <email>lisi@126.com</email>
  <age>24</age>
  <address>
   <province>广东</province>
   <city>深圳</city>
  </address>
 </student>
 <student id="1003">
  <name>王五</name>
  <score>92</score>
  <email>wangwu@126.com</email>
  <age>24</age>
  <address>
   <province>广东</province>
   <city>汕头</city>
  </address>
 </student>
</students>

 接写来贴将xsl文件转化为html的java类。

package com.suntek.ivr.pushserver.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;

import org.jdom.Document;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.transform.JDOMResult;
import org.jdom.transform.JDOMSource;

public class Xslt2html {
 private Document outputDoc;
 private String stylesheetPath;
 private Document doc = null;

 public Xslt2html() {
 }

 public void setoutputDoc(Document s) {
  this.outputDoc = s;
 }

 public void setStylePath(String s) {
  this.stylesheetPath = s;
 }

 public void startFilter() {
  try {
   TransformerFactory myFactory = TransformerFactory.newInstance();
   Transformer myTransformer = myFactory.newTransformer(new StreamSource(stylesheetPath));
   JDOMResult result = new JDOMResult();
   JDOMSource source = new JDOMSource(outputDoc);
   myTransformer.transform(source, result);
   doc = result.getDocument();

  } catch (Exception e) {
   System.out.println("Error was:" + e.getMessage());
  }
 }

 public void destroy() {
 }

 public Document getXmlDoc(){
  return doc;
 }

 /**
  * @param args
  */
 public static void main(String[] args) throws Exception {
  SAXBuilder builder = new SAXBuilder();
  Document doc = builder.build(new File("d:/student.xml"));
  Xslt2html xslt2html = new Xslt2html();
  xslt2html.setoutputDoc(doc);
  xslt2html.setStylePath("d:/student.xsl");
  xslt2html.startFilter();
  doc=xslt2html.getXmlDoc();
  OutputStream out = null;
  out = new FileOutputStream("d:/result.html");
  //out = System.out;
  XMLOutputter XMLOut = new XMLOutputter();
  try {
   XMLOut.output(doc, out);
  } catch(Exception e) {
   e.printStackTrace();
  }

 }

}

 一个简单的xsl模版文件,生成html。

 

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/students">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>学生列表</title>
 </head>
 <body>
   <table border="1">
     <tr>
      <th>姓名</th>
      <th>分数</th>
      <th>年龄</th>
      <th>邮箱</th>
      <th>省份城市</th>
     </tr>
     <tr>
      <th><xsl:value-of select="student/name"/></th>
      <th><xsl:value-of select="student/score"/></th>
      <th><xsl:value-of select="student/age"/></th>
      <th><xsl:value-of select="student/email"/></th>
      <th><xsl:value-of select="student/address/province"/><xsl:value-of select="student/address/city"/></th>
     </tr>
   </table>
 </body>
 </html>
</xsl:template>
</xsl:stylesheet>

 

这里转换得到的结果为:

姓名分数年龄邮箱省份城市
张三8520zhangsan@126.com广东广州

<xsl:value-of>如果不是在<xsl:for-each>里面,它只会匹配并且输出第一个符合select要求的元素。因而这里输出的是张三。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值