You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-dev@xmlgraphics.apache.org by "Zhou, Wufeng" <wz...@nsf.gov> on 2001/04/20 22:32:04 UTC

Help -- TraxTransfrom problem

Hi,

I am having some problem to use the TraxTransform class.  

If my xsl style sheet does not import any other style sheet, then using the
following would be OK:

        DocumentBuilder builder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document foDoc = builder.newDocument(); // FO document
        FileInputStream fis = new FileInputStream(xslURL.getFile());
        TraxTransform.transform(document, fis, foDoc);
        fis.close();

However, when I import another xsl, which is in the same directory, above
code would complain 
that the imported file cannot found because it uses web root as search base.
However, If I
use the following way, then it's OK:
        TraxTransform.transform(document, xslURL.toString(),
tmpFile.getAbsolutePath());

To avoid to create the tmp file and later reparse it to feed into
buildFOTree(), I thought I can
use TraxTransform.transform(Source, Source, Result) to save the effort of
creating tmp file, as
in the following:

       TraxTransform.transform(new
javax.xml.transform.dom.DOMSource(document),
            new javax.xml.transform.stream.StreamSource(xslURL.toString()),
            new javax.xml.transform.dom.DOMResult(foDoc));

The I will get the following NullPointerException, as if foDoc is not
created properly.
Any ideas?

using renderer org.apache.fop.render.pdf.PDFRenderer
using element mapping org.apache.fop.fo.StandardElementMapping
using element mapping org.apache.fop.svg.SVGElementMapping
using property list mapping org.apache.fop.fo.StandardPropertyListMapping
using property list mapping org.apache.fop.svg.SVGPropertyListMapping
building formatting object tree
java.lang.NullPointerException 	
      at java.util.Hashtable.get(Hashtable.java:320) 	
      at
org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:253) 	
      at org.apache.fop.apps.Driver.buildFOTree(Driver.java:364) 



The more complete code snippit is as following for reference.

        // using InputStream in transform will not be able to find
xsl:import files
        DocumentBuilder builder =
DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document foDoc = builder.newDocument(); // FO document
        //FileInputStream fis = new FileInputStream(xslURL.getFile());
        //TraxTransform.transform(document, fis, foDoc);
        //fis.close();
        // however, use this transform will cause NullPointerException
inside FOP
        TraxTransform.transform(new
javax.xml.transform.dom.DOMSource(document),
            new javax.xml.transform.stream.StreamSource(xslURL.toString()),
            new javax.xml.transform.dom.DOMResult(foDoc));
        org.apache.fop.apps.Driver driver = new
org.apache.fop.apps.Driver();
        driver.setRenderer("org.apache.fop.render.pdf.PDFRenderer",
"Proposal PDF Utility");
 
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");
        driver.setOutputStream(new FileOutputStream(pdfFile));
        driver.buildFOTree(foDoc);
        driver.format();
        driver.render();


Thanks in advance for any reponse.

Wufeng

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-dev-unsubscribe@xml.apache.org
For additional commands, email: fop-dev-help@xml.apache.org