![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e521. The Quintessential Program That Transforms an XML File with XSLimport java.io.*; import org.w3c.dom.*; import org.xml.sax.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; public class BasicXsl { // This method applies the xslFilename to inFilename and writes // the output to outFilename. public static void xsl(String inFilename, String outFilename, String xslFilename) { try { // Create transformer factory TransformerFactory factory = TransformerFactory.newInstance(); // Use the factory to create a template containing the xsl file Templates template = factory.newTemplates(new StreamSource( new FileInputStream(xslFilename))); // Use the template to create a transformer Transformer xformer = template.newTransformer(); // Prepare the input and output files Source source = new StreamSource(new FileInputStream(inFilename)); Result result = new StreamResult(new FileOutputStream(outFilename)); // Apply the xsl file to the source file and write the result to the output file xformer.transform(source, result); } catch (FileNotFoundException e) { } catch (TransformerConfigurationException e) { // An error occurred in the XSL file } catch (TransformerException e) { // An error occurred while applying the XSL file // Get location of error in input file SourceLocator locator = e.getLocator(); int col = locator.getColumnNumber(); int line = locator.getLineNumber(); String publicId = locator.getPublicId(); String systemId = locator.getSystemId(); } } }This is the sample input XML for the example: <?xml version="1.0" encoding="UTF-8"?> <map> <entry key="key1" value="value1" /> <entry key="key2" /> </map>This is the sample input XSL for the example. This XSL simply formats the key/value attributes in all entry elements into an HTML file. <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" indent="yes"/> <xsl:template match="map"> <HTML> <HEAD> <TITLE>Map</TITLE> </HEAD> <BODY> <xsl:apply-templates/> </BODY> </HTML> </xsl:template> <xsl:template match="entry"> <xsl:value-of select="@key"/>=<xsl:value-of select="@value"/> <br></br> </xsl:template> </xsl:stylesheet>The resulting HTML from running the example is: <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE>Map</TITLE> </HEAD> <BODY> key1=value1<br> key2=<br> </BODY> </HTML>
© 2002 Addison-Wesley. |