|
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.w3c.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。
|