CODEFETCH™
            Examples
Cache of jcb_package/src/jcb/util/TransformUtil.java from
http://www.apress.com/ApressCorporate/supplement/1/460/1590595203-2919.zip
Source code below from:
JDBC Recipes: A Problem-Solution Approach (Problem-Solution Approach)
By Mahmoud Parsian
Published 15 September, 2005
Average rating

      Powells     Alibris


package jcb.util;


import java.io.*;

import javax.xml.parsers.*;
import org.xml.sax.*;
import org.w3c.dom.*;

import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

/**
 * This class provides helper methods to invoke XSLT
 * transformations, and manipulate their output.
 */
public class TransformUtil {

    // Global value so it can be ref'd by the tree-adapter
    static Document document;

    static String transform(StreamSource stylesource,Document doc)
    {
        String transformResult = "";
        try {
          // Use a Transformer for output
            TransformerFactory tFactory =  TransformerFactory.newInstance();
            Transformer transformer = tFactory.newTransformer(stylesource);
            StringWriter out = new StringWriter();

            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(out);

            transformer.transform(source, result);

            out.flush();
            transformResult = out.toString();

            out.close();
                    }
        catch (TransformerConfigurationException tce) {
            // Error generated by the parser
            System.out.println ("\n** Transformer Factory error");
            System.out.println("   " + tce.getMessage() );

            // Use the contained exception, if any
            Throwable x = tce;

            if (tce.getException() != null)
                x = tce.getException();
        //  x.printStackTrace();

        }
        catch (TransformerException te) {
            // Error generated by the parser
            System.out.println ("\n** Transformation error");
            System.out.println("   " + te.getMessage() );

            // Use the contained exception, if any
            Throwable x = te;

            if (te.getException() != null)
                x = te.getException();
            //x.printStackTrace();

        }
        catch (IOException ioe) {
            // I/O error
            ioe.printStackTrace();
        }

        return transformResult;


    }

    /**
     Carry out a transformation and return the result in string form.
     @param xslstr XSL string
     @param doc Document to be transformed
     */
    public static String transformFromString(String xslstr,Document doc)
    {
        StringReader xslread = new StringReader(xslstr);
        StreamSource stylesource = new StreamSource(xslread);
        return transform(stylesource,doc);
    }

    /**
     Carry out a transformation and return the result in string form.
     @param xslstr Name of XSL file
     @param doc Document to be transformed
     */
    public static String transform(String xslFilename, Document doc)
    {
        File stylesheet = new File(xslFilename);
        StreamSource stylesource = new StreamSource(stylesheet);
        return transform(stylesource,doc);
    }

    /**
     Carry out a transformation and return the result in string form.
     @param xslFilename Name of XSL file
     @param xmlFilename Name of XML file to be transformed
     @validate Whether or not to validate the XML file first
     */
    public static String transform(String xslFilename, String xmlFilename, boolean validate) {

        String transformResult = "";

        try {
            XMLValidator validator = new XMLValidator(xmlFilename, true, validate);

            document = validator.getDocument();
            transformResult =  transform(xslFilename,document);
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return transformResult;

    } // main

    /**
     Carry out a transformation and return the result in string form.
     @param xslFilename Name of XSL file
     @param xmlFilename Name of XML file to be transformed
     */
    public static String transform(String xslFilename, String xmlFilename) {
        return transform(xslFilename, xmlFilename, true);
    } // main



    /**
     When run from the command line, this method uses the stylesheet
     passed in as the first argument to transform the xmlfile passed in
     as the second argument.
     */
    public static void main(String args[]) {
        File xsl = null, xml = null, dtd = null;

        try {
            if (args.length != 2) {
                System.err.println ("Usage: java TransformUtil stylesheet xmlfile");
                System.exit (1);
            }

            xsl = new File(args[0]);
            xml = new File(args[1]);

        }
        catch (Exception e) {
            e.printStackTrace(System.err);
        }

        if (!(xsl.exists()))  {
            System.err.println("stylesheet is not accessible");
        }

        if (!(xml.exists())) {
            System.err.println("xmlfile is not accessible");
        }

        System.out.println(transform(args[0], args[1]));
    }


}