现在有一个cdcatalog.xml文件,
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
  <cd>
    <title>Fmpire Burlesque</title>
    <artist>FBob Dylan</artist>
    <country>FUSA</country>
    <company>FColumbia</company>
    <price>20.90</price>
    <year>2005</year>
  </cd>
</catalog>
和一个cdcatalog.xsl文件,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">
    <tr bgcolor="#9acd32">
      <th align="left">Title</th>
      <th align="left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template></xsl:stylesheet>想把转换后的结果输出到result.xml文件中,
请问java代码应该怎么写?

解决方案 »

  1.   


    public static void main(String[] args) {
            String xmlFileName = "d:/cdcatalog.xml";
            String xslFileName = "d:/cdcatalog.xsl";
            String htmlFileName = "d:/out.xml";
            transform(xmlFileName, xslFileName, htmlFileName);
        }    public static void transform(String xmlFileName, String xslFileName,
                String htmlFileName) {
            try {
                TransformerFactory tFac = TransformerFactory.newInstance();
                Source xslSource = new StreamSource(xslFileName);
                Transformer t = tFac.newTransformer(xslSource);
                File xmlFile = new File(xmlFileName);
                File htmlFile = new File(htmlFileName);
                Source source = new StreamSource(xmlFile);
                Result result = new StreamResult(htmlFile);            
                t.transform(source, result);
            } catch (TransformerConfigurationException e) {
                e.printStackTrace();
            } catch (TransformerException e) {
                e.printStackTrace();
            }
        }
    这样可以。