Dear Wiki user, You have subscribed to a wiki page or wiki category on "Xmlgraphics-fop Wiki" for change notification.
The following page has been changed by iknopf: http://wiki.apache.org/xmlgraphics-fop/HowTo/OracleXSQLServlet New page: = Use Apache Fop with the Oracle XSQL servlet = == Motivation == The Oracle XSQL-Servlet is an easy-to-use tool for simple sql queries and statements within servlet containers. To render the XML output of the servlet with Apache FOP a serializer is required. Unfortunately the Oracle documentation describes only, who to write such a serializer with FOP 0.20.x. As of the vanished "Driver" class this description is not usefull for current FOP versions. == Solution == I myself wrote a new serializer, wich is now tested with Oracle XDK 10.0 and FOP 0.94. Compile this code using {{{fop.jar}}} and the jars came with Oracle XDK and install it in the classpath of your application. {{{ package oracle.xml.xsql.serializers; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.sax.SAXResult; import oracle.xml.xsql.XSQLDocumentSerializer; import oracle.xml.xsql.XSQLPageRequest; import org.apache.fop.apps.FOPException; import org.apache.fop.apps.Fop; import org.apache.fop.apps.FopFactory; import org.apache.fop.apps.MimeConstants; import org.w3c.dom.Document; // ---------------------------------- // Tested with the FOP 0.94.4 Release // ---------------------------------- public class XSQLFOPSerializer implements XSQLDocumentSerializer { public void serialize(Document doc, XSQLPageRequest env) { try { // Step 3: Construct fop with desired output format Fop fop = C_FOP_FACTORY.newFop( MimeConstants.MIME_PDF, env.getOutputStream() ); // Step 4: Setup JAXP using identity transformer TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(); // Step 5: Setup input and output for XSLT transformation Source src = new DOMSource( doc ); // Resulting SAX events (the generated FO) must be piped // through to FOP Result res = new SAXResult( fop.getDefaultHandler() ); // Step 6: Start XSLT transformation and FOP processing transformer.transform( src, res ); } catch ( FOPException ex ) { ex.printStackTrace( System.err ); } catch ( TransformerConfigurationException ex ) { ex.printStackTrace( System.err ); } catch ( TransformerException ex ) { ex.printStackTrace( System.err ); } catch ( RuntimeException ex ) { ex.printStackTrace( System.err ); } } private static final FopFactory C_FOP_FACTORY = FopFactory.newInstance(); } }}} Good luck. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
