Does the problem persist if you serialize the SAX events generated by
the Incident with an identity transformer to a file and run the XSL
transformation stand-alone from the command-line?

I don't think it's a problem but did you realize that you have two FOP
processing runs in your testGeneratePDF() method, the first started by
Transformer.transform() and the other by input.run()? Since I can't do
anything with the line numbers in the stack trace, this is something you
have to do.

On 10.03.2005 11:12:07 Ben Gill wrote:
> 
> 
> -----Original Message-----
> From: Jeremias Maerki [mailto:[EMAIL PROTECTED]
> Sent: 10 March 2005 09:37
> To: [EMAIL PROTECTED]
> Subject: Re: FopServlet
> 
> 
> 
> On 10.03.2005 08:49:26 Ben Gill wrote:
> > Hi,
> > 
> > ok I tried it again and get the same exception!!
> > 
> > Here is my code (well I have given you the equiv with project team!):
> 
> <snip/>
> 
> Hmm, you are still using the InputHandler approach which I personally
> don't consider ideal. I'd integrate the renderXML() method into the main
> execute method and use the pattern from ExampleObj2PDF 1:1. But I can't
> tell if your problem has something to do with that. Probably not.
> 
> Ok, I tried this and still get the same error... I have created a Junit test
> for this and here is my code, based upon the ExampleObj2PDF example:
> 
>  public void testGeneratePDF() throws Exception {
>               try {
>                       Incident incident = incidentsDAO.loadIncident(new
> Long(121));
>                       
>                       
>               File baseDir = new File(".");
>               File outDir = new File(baseDir, "out");
>               outDir.mkdirs();
>       
>               File xslFile = new File(baseDir,
> "../source/src/com/ocado/tracker/incidents/fop/incident2FO.xsl");
>               
>               Driver driver = new Driver();
>               Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
>               driver.setLogger(logger);
>               MessageHandler.setScreenLogger(logger);
>               driver.setRenderer(Driver.RENDER_PDF);
>               ByteArrayOutputStream out = new ByteArrayOutputStream();
>               
>               try {
>               
>               driver.setOutputStream(out);
>               
>             //Setup XSLT
>             TransformerFactory factory = TransformerFactory.newInstance();
>             Transformer transformer = factory.newTransformer(new
> StreamSource(xslFile));
>         
>             //Setup input for XSLT transformation
>             Source src = incident.getSource();
>         
>             //Resulting SAX events (the generated FO) must be piped through
> to FOP
>             Result res = new SAXResult(driver.getContentHandler());
> 
>             //Start XSLT transformation and FOP processing
>             transformer.transform(src, res);
>               } finally {
>                       if (out!=null) {
>                               out.close();
>                       }
>               }
>               
>               SAXSource xmlSource = new SAXSource(new
> IncidentsXMLReader(), new IncidentsInputSource(incident));
>               
>               SAXSource xslSource = new SAXSource(
>                               new InputSource(new
> FileInputStream(xslFile)));
>               
>               TraxInputHandler input =
>                   new TraxInputHandler(xmlSource.getInputSource(),
>                                        xslSource.getInputSource());
>       
>               input.run(driver);
> 
>               byte[] content = out.toByteArray();
>               log.debug("Got content [" + content + "]");
> 
>           }
>           catch (Exception e) {
>               log.error("Error [" + e.getMessage() + "]", e);
>           }
>       }
> 
> obviously,my Incident is your ProjectTeam!!!
> 
> > 
> > and here is the stack trace:
> > 
> > 2005-03-10 07:40:21 StandardContext[/tracker]:  Mapped to servlet 'fop'
> with
> > servlet path '/fop' and path info 'null' and update=true
> > 2005-03-10 07:40:23 StandardWrapperValve[fop]: Servlet.service() for
> servlet
> > fop threw exception
> > javax.servlet.ServletException: java.net.MalformedURLException
> >     at
> > com.ocado.tracker.common.FopServlet.renderXML(FopServlet.java:150)
> >     at com.ocado.tracker.common.FopServlet.execute(FopServlet.java:116)
> 
> Ok, this doesn't say much other than there's an URL somewhere that's
> making problems.
> 
> Yes, and it could be the way this:
> 
> "../source/src/com/ocado/tracker/incidents/fop/incident2FO.xsl");
> 
> (but the it finds the xsl file and says it exists and this is the string I
> use for my working version...)
> 
> or in the XSL:
> 
> <xsl:stylesheet version="1.1" 
>       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
>       xmlns:fo="http://www.w3.org/1999/XSL/Format"; 
>       exclude-result-prefixes="fo">
> 
> and/or
> 
> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";> 
> 
> As you noted, the error is coming from the DTD:
> 
> Caused by: java.net.MalformedURLException
>       at java.net.URL.<init>(URL.java:571)
>       at java.net.URL.<init>(URL.java:434)
>       at java.net.URL.<init>(URL.java:383)
>       at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown
> Source)
>       at
> org.apache.xerces.impl.XMLEntityManager.startDocumentEntity(Unknown Source)
>       at
> org.apache.xerces.impl.XMLDocumentScannerImpl.setInputSource(Unknown Source)
>       at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
>       at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
>       at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>       at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
>       at
> org.apache.xml.dtm.ref.DTMManagerDefault.getDTM(DTMManagerDefault.java:495)
>       at
> org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:
> 658)
> 
> and there is no DTD reference in the XML I pass in, so it looks like it is
> having a problem with one of the 
> two URL's in the XSL stylesheet... 
> 
> I always wonder why these core Java classes dont throw out what the URL it
> thinks is malformed!!  
> 
> Regards
> 
> 
> This message has been checked for all known viruses by the MessageLabs Virus 
> Control Centre.
> 
>       
> *********************************************************************
> 
> Notice:  This email is confidential and may contain copyright material of 
> Ocado Limited (the "Company"). Opinions and views expressed in this message 
> may not necessarily reflect the opinions and views of the Company.
> If you are not the intended recipient, please notify us immediately and 
> delete all copies of this message. Please note that it is your responsibility 
> to scan this message for viruses.
> 
> Company reg. no. 3875000.
> Ocado Limited
> Titan Court
> 3 Bishops Square
> Hatfield Business Park
> Hatfield
> Herts
> AL10 9NE
> 
> 
> *********************************************************************
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]



Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to