package dbxml.xtint; import java.io.*; import org.xml.sax.*; import com.jclark.xsl.sax.*; import dbxml.sax.*; /** * Integration of JDBCSAXParser with XT. * * This class is based on com.jclark.xsl.sax.Driver. */ public class JDBCXSLProcessor { private static XSLProcessor _xslProcessor; public static void main(String[] argv) { if (argv.length != 3) { System.out.println("Usage: JDBCXSLProcessor dbPropFile xslFile " + "outFile"); System.exit(-1); } String dbPropFile = argv[0]; String xslFile = argv[1]; String outFile = argv[2]; String xmlParserClassName = "dbxml.sax.JDBCSAXParser"; String xslParserClassName = "com.jclark.xml.sax.CommentDriver"; _xslProcessor = createXSLProcessor(xmlParserClassName, xslParserClassName); OutputMethodHandlerImpl outputMethodHandler = new OutputMethodHandlerImpl(_xslProcessor); _xslProcessor.setOutputMethodHandler(outputMethodHandler); outputMethodHandler.setDestination(new FileDestination(outFile)); try { InputSource dbis = JDBCSAXUtil.setupSourceFromProperties(dbPropFile); transform(_xslProcessor, Driver.fileInputSource(new File(xslFile)), dbis); } catch (IOException ex1) { System.out.println(ex1); } catch (ClassNotFoundException ex3) { System.out.println(ex3); } } static private XSLProcessor createXSLProcessor(String xmlParserClassName, String xslParserClassName) { XSLProcessor xslProcessor = null; try { Parser xmlParser = (Parser)Class.forName(xmlParserClassName).newInstance(); Parser xslParser = (Parser)Class.forName(xslParserClassName).newInstance(); if ((xmlParser == null) || (xslParser == null)) { return null; } xslProcessor = new XSLProcessorImpl(); xslProcessor.setParser(xmlParser, xslParser); } catch (ClassNotFoundException ex1) { System.out.println(ex1); } catch (InstantiationException ex2) { System.out.println(ex2); } catch (IllegalAccessException ex3) { System.out.println(ex3); } return xslProcessor; } //===================================================================== // Following method copied from com.jclark.xsl.sax.Driver becuase they // have package access there. static boolean transform(XSLProcessor xsl, InputSource stylesheetSource, InputSource inputSource) { try { xsl.loadStylesheet(stylesheetSource); xsl.parse(inputSource); return true; } catch (SAXParseException e) { printSAXParseException(e); } catch (SAXException e) { System.err.println(e.getMessage()); } catch (IOException e) { System.err.println(e.toString()); } return false; } static void printSAXParseException(SAXParseException e) { String systemId = e.getSystemId(); int lineNumber = e.getLineNumber(); if (systemId != null) System.err.print(systemId + ":"); if (lineNumber >= 0) System.err.print(lineNumber + ":"); if (systemId != null || lineNumber >= 0) System.err.print(" "); System.err.println(e.getMessage()); } }