The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > javax.xml.transform  [5 examples] > XSL  [2 examples]

e521. The Quintessential Program That Transforms an XML File with XSL

    import 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>

 Related Examples
e522. Transforming an XML File with XSL into a DOM Document


© 2002 Addison-Wesley.