Sorry bout the formating on this one. I guess pasting into an email is not a great idea. :-P And sorry bout the lack of documentations. I got lazy.
If it doesnt copy and paste correctly or if you want some javadoc comments included to help you understand what is happening, send me an email and I'll send you a copy of the .java file after I put in some comments. -Tim -----Original Message----- From: Chen, Gin [mailto:[EMAIL PROTECTED]] Sent: Friday, November 09, 2001 3:44 PM To: [EMAIL PROTECTED] Subject: XML and Java Hi everyone, I posted a question asking about dynamically generating XSL definitions for XML (versus having a physical XSL file). I recieved a few emails from people asking me to let them know if I find a solution. I'm happy to say that I have. Thanks to Steve Maring who works with me (dont look too far from home for answers huh? :) Excuse the long code fragment that is to follow: Note to run this. 1) Just give it a name of an output file (something.html) 2) Make sure that you have j2ee.jar, xerces.jar, and xalan.jar in ur classpath. I hardcoded the XML and XSL definitions inside the code but you can see how these can be dynamically generated as Strings from a java class. Hope this helps :) package com.nielsenmedia.gmh; import org.w3c.dom.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import java.io.*; public class DynamicXSL { public static void main( String[] args ) { try { System.setProperty( "javax.xml.parsers.DocumentBuilderFactory", "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl" ); System.setProperty( "javax.xml.transformer.TransformerFactory", "org.apache.xalan.xsltc.trax.TransformerFactoryImpl" ); FileOutputStream fos = new FileOutputStream( args[0] ); DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); String xml = "<?xml version=\"1.0\"?>"+ "<page>"+ " <title>Hello World!</title>"+ " <content>"+ " <paragraph>This was generated with dynamic XML and dynamic XSL!!</paragraph>"+ " </content>"+ "</page>"; Document document = docBuilder.parse( new ByteArrayInputStream( xml.getBytes() ) ); TransformerFactory transFactory = TransformerFactory.newInstance(); String xsl = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ "<xsl:stylesheet version=\"1.0\""+ " xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\""+ " xmlns:fo=\"http://www.w3.org/1999/XSL/Format\">"+ "<xsl:output method=\"html\"/>"+ "<xsl:template match=\"page\">"+ " <html>"+ " <head>"+ " <title><xsl:value-of select=\"title\"/></title>"+ " </head>"+ " <body bgcolor=\"#ffffff\">"+ " <center>"+ " <font color=\"red\"><xsl:apply-templates/></font>"+ " </center>"+ " </body>"+ " </html>"+ "</xsl:template>"+ "</xsl:stylesheet>"; Transformer transformer = transFactory.newTransformer( new StreamSource( new ByteArrayInputStream( xsl.getBytes() ) ) ); transformer.setOutputProperty( "method", "html" ); transformer.setOutputProperty( "media-type", "text/plain" ); transformer.setOutputProperty( "version", "1.0" ); transformer.setOutputProperty( "indent", "yes" ); transformer.setOutputProperty( "encoding", "UTF-8" ); transformer.setOutputProperty( "{http://xml.apache.org/xslt}indent-amount", "4" ); transformer.transform( new DOMSource( document ), new StreamResult( fos ) ); } catch( Exception e ) { e.printStackTrace(); } } } [EMAIL PROTECTED] 727-738-3000 x6549 =========================================================================== To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST". For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST". Some relevant FAQs on JSP/Servlets can be found at: http://archives.java.sun.com/jsp-interest.html http://java.sun.com/products/jsp/faq.html http://www.esperanto.org.nz/jsp/jspfaq.jsp http://www.jguru.com/faq/index.jsp http://www.jspinsider.com =========================================================================== To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST". For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST". Some relevant FAQs on JSP/Servlets can be found at: http://archives.java.sun.com/jsp-interest.html http://java.sun.com/products/jsp/faq.html http://www.esperanto.org.nz/jsp/jspfaq.jsp http://www.jguru.com/faq/index.jsp http://www.jspinsider.com