Xml转换是个必要而且常见的工作。这里将给出xml转换成html的例子:
myxml.xml:
<?xml version="1.0" ?>
<WorkShop>
<layer>
<Title>a</Title>
<Content>aa</Content>
</layer>
<layer>
<Title>a1</Title>
<Content>aa1</Content>
</layer>
</WorkShop>
myxsl.xsl:
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<Title>This is a xsl2xml test</Title>
<meta http-equiv="Content-Type" content="text/html" />
<style>
.table2{border:#000000 solid;border-width:1 0 0 1;background:#ffffff}
.td2{border:#000000 solid;border-width:0 1 1 0;word-break:break-all;}
textarea {
font-family: "宋体";
font-size: 12px;
font-style: normal;
line-height: normal;
font-weight: normal;
font-variant: normal;
border: none #000000;
}
td {
font-family: "宋体";
font-size: 12px;
font-style: normal;
line-height: normal;
font-weight: normal;
font-variant: normal;
border: none #000000;
}
</style>
</head>
<body>
<xsl:for-each select="WorkShop/layer">
<table width="100%" border="0" cellspacing="0" cellpadding="0" style="border:#000000 1 solid">
<tr>
<td>
<table width="98%" height="98%" cellspacing="0" cellpadding="0" border="0" class="table2" align="center">
<tr>
<td class="td2">
<b>标题:</b>
<xsl:value-of select="Title"/>
</td>
</tr>
<br/>
<tr>
<td class="td2">
<b>内容:</b>
<br/>
<textarea readonly="readonly" name="textarea1" style="width:99%;overflow:visible;readonly" wrap="VIRTUAL">
<xsl:value-of select="Content"/>
</textarea>
</td>
</tr>
</table>
</td>
</tr>
</table>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
注意上面这两个文件,在保存时要用Unicode编码,不然java程序有可能报错,而你却找不到到底是哪里出了问题。
转换程序xsl2xml.java:
package src;
import java.io.*;
import org.w
3c
.dom.Document;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.parsers.*;
public class xsl2xml {
private String xmlfile,xslfile,outputfile;
public xsl2xml(String xmlfile,String xslfile,String outputfile){
this.xmlfile=xmlfile;
this.xslfile=xslfile;
this.outputfile=outputfile;
}
public void translate(){
try{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(xmlfile);
TransformerFactory factory=TransformerFactory.newInstance();
Transformer transformer=factory.newTransformer(new StreamSource(xslfile));
transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312");
PrintWriter pw=new PrintWriter(new FileOutputStream(outputfile));
StreamResult result=new StreamResult(pw);
transformer.transform(new DOMSource(doc),result);
}catch(Exception exp){
exp.printStackTrace();
}
}
public static void main(String[] args) {
xsl2xml myto=new xsl2xml(
"f://tomcat5//webapps//myxml//xmldata//myxml.xml",
"f://tomcat5//webapps//myxml//xmldata//myxsl.xsl",
"f://tomcat5//webapps//myxml//xmldata//xsl2xml.html"
);
myto.translate();
}
}
这个转换颇具实验性,而实际意义并不大。因为,如果在myxml.xml中和myxsl.xsl关联,用浏览器打开myxml.xml时自动就实现了转换。
但浏览器并不能转换xml文件成其他的格式。因此,我们可以以此为契,学会xml的转换。我将在(五)中继续转换这个题目――xml2pdf。