Hi Mary:
You are Missing the code that sets the namespace feature.
After making a call to the create Parser, you need to set features. I have
included it below.
Vallikun
> try{
> XMLReader xmlreader =createParser();
------------------------------------------------
// set the parser features
try
{
parser.setFeature("http://xml.org/sax/features/namespace-prefixes",true);
}
catch (SAXException e)
{
// note: fix exceptions to print stack trace of original exception
// see ServletUtils.getStackTraceAsString()
//*****
throw new Exception("Error in setting up parser feature " +
"namespace-prefixes.\n You need a parser " +
"which support SAX version 2");
}
--------------------------------------------------------------
On Thu, 9 Aug 2001, Thomas, Mary wrote:
> Hi
> I am able to run the fo from command line and get the printed output.
> Now the next is to embed in servlet.
> I tried running this servlet from jbuilder.
> with the library pointing to fop.jar,xalan.jar xcerces.jar , batik.jar,
> buildtools.jar
> I run into following error.
>
> javax.xml.transform.TransformerConfigurationException: Namespace not
> supported by SAXParser
>
>
> import javax.servlet.*;
> import javax.servlet.http.*;
> import java.io.*;
> import java.util.*;
> import org.apache.fop.apps.*;
> import org.xml.sax.*;
> import javax.xml.transform.*;
> import javax.xml.transform.Source;
> import javax.xml.transform.stream.StreamSource;
> import javax.xml.transform.stream.StreamResult;
>
>
> public class fotest extends HttpServlet {
>
> /**Initialize global variables*/
> public void init() throws ServletException {
> }
> /**Process the HTTP Get request*/
> public void doGet(HttpServletRequest request, HttpServletResponse
> response) throws ServletException, IOException {
>
> try{
> XMLReader xmlreader =createParser();
>
> Writer writer = new StringWriter();
>
> // Get an xslt processor factory
> TransformerFactory tFactory = TransformerFactory.newInstance();
>
> File xmlfile = new File("d:\\temp\\Footnotes.xml");
> Source xmlSource = new StreamSource(xmlfile);
> File xslfile = new File("d:\\temp\\Footnotes.xsl");
> Source xslSheet = new StreamSource(xslfile);
> StreamResult xmlResult = new StreamResult(writer);
>
> Transformer transformer = tFactory.newTransformer(xslSheet);
>
> // Perform the transformation.
> transformer.transform(xmlSource, xmlResult);
>
>
> // send output from xsl transformation to a string reader
> // create a input source containing the xsl:fo file which can be fed to
> //Fop
> Reader reader = new StringReader(writer.toString());
> writer.flush();
> writer.close();
>
> //set Driver methods to start Fop processing
> Driver driver = new Driver();
>
> driver.setRenderer("org.apache.fop.render.pdf.PDFRenderer",".14");
> driver.addElementMapping("org.apache.fop.fo.StandardElementMapping");
> driver.addElementMapping("org.apache.fop.svg.SVGElementMapping");
> driver.addPropertyList("org.apache.fop.fo.StandardPropertyListMapping");
> driver.addPropertyList("org.apache.fop.svg.SVGPropertyListMapping");
>
> // send pdf writer output to a byte array stream
> ByteArrayOutputStream baos = new ByteArrayOutputStream();
> PrintWriter printWriter = new PrintWriter(baos);
> //driver.setWriter(printWriter);
> driver.setOutputStream(baos);
> driver.buildFOTree(xmlreader, new InputSource(reader));
> driver.format();
> driver.render();
>
> // send the bytes out to the servlet output stream
> response.setContentType("application/pdf");
> response.setContentLength(baos.size());
>
> long sixty = System.currentTimeMillis() + 60*1000;
> response.setDateHeader("Expires", sixty);
> baos.writeTo(response.getOutputStream());
> response.getOutputStream().flush();
> }
> catch (Exception e) {
> System.out.println(e);
> }
>
>
> }
>
> /**
> * creates a SAX parser, using the value of org.xml.sax.parser
> * defaulting to org.apache.xerces.parsers.SAXParser
> *
> * @return the created SAX parser
> */
> static XMLReader createParser()
> {
> XMLReader xmlreader = null;
> try {
> String parserClassName = System.getProperty("org.xml.sax.parser");
> if (parserClassName == null) {
> parserClassName = "org.apache.xerces.parsers.SAXParser";
> }
> xmlreader= (XMLReader) Class.forName(parserClassName).newInstance();
>
> } catch (Exception e) {
> System.out.println(e);
> }
> return xmlreader;
> }
>
> /**Clean up resources*/
> public void destroy() {
> }
> }
> -------------
> Do let me know what the problem is .
> Thanks in advance.
> Mary
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, email: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]