Hi,
sorry maybe I created a little misunderstanding here. I attached some source
code as a .txt file to clear up things.
cheers,
Pete
> --- Ursprüngliche Nachricht ---
> Von: Jeremias Maerki <[EMAIL PROTECTED]>
> An: fop-users@xmlgraphics.apache.org
> Betreff: Re: How to pass input of xml tranfs. to xslt transf. ?
> Datum: Thu, 08 Dec 2005 14:13:03 +0100
>
> Can you please give a little more context (i.e. more code)? I don't
> understand what exactly you want to do. I thought you had a SAX XML
> source, not an XML file source.
>
> On 08.12.2005 13:56:27 Peter.Neu wrote:
> > Hello,
> >
> > I have a hard time getting the Obj2Pdf Example to work with my
> application.
> > I was browsing through the FAQ and found another example
> >
> > http://xmlgraphics.apache.org/fop/0.20.5/servlets.html#xslt
> >
> > But also here is the problem I don't know how to pass the generated xml
> file
> > to a File object.
> >
> > The critical line is this one:
> > Source src = new StreamSource(new File("foo.xml")); <- Streaming?
> >
> > How can I stream my xml document in this object? My transformation is a
> > simple SAX transformation.
> >
> > cheers,
> > Pete
> >
> >
> > > --- Ursprüngliche Nachricht ---
> > > Von: [EMAIL PROTECTED]
> > > An: fop-users@xmlgraphics.apache.org
> > > Betreff: Re: How to pass input of xml tranfs. to xslt transf. ?
> > > Datum: Thu, 8 Dec 2005 08:54:10 +0100 (MET)
> > >
> > > Hello Jeremias,
> > >
> > > good your are in the cet time zone,too ;o).
> > > My code also uses sax so the refactoring process will not be that
> long.
> > > Anyway it's always good to have a working example so I'll adapt to
> that.
> > > I'll be back with details when I'm done refactoring.
> > >
> > > cheers,
> > > Pete
> > >
> > >
> > >
> > >
> > > > --- Ursprüngliche Nachricht ---
> > > > Von: Jeremias Maerki <[EMAIL PROTECTED]>
> > > > An: fop-users@xmlgraphics.apache.org
> > > > Betreff: Re: How to pass input of xml tranfs. to xslt transf. ?
> > > > Datum: Thu, 08 Dec 2005 08:32:55 +0100
> > > >
> > > > Pete,
> > > >
> > > > I see. No, in this case you're not missing anything although you may
> not
> > > > need to rewrite your whole code just to accomodate the new pattern.
> > > > Generating XML using SAX events is one way to generate XML, a good
> way
> > > > but not necessarily the only one. Remember that JAXP is quite
> flexible
> > > > and that you could use a DOMSource, for example, if you've already
> got
> > > > code that generates a DOM from your data. The purpose of the
> examples in
> > > > the examples/embedding directory are to show a gradual approach to
> the
> > > > patterns that we suggest people use. The benefit out of this is a
> > > > flexible and quick solution.
> > > >
> > > > On 08.12.2005 08:20:49 Peter.Neu wrote:
> > > > > Hi Jeremias,
> > > > >
> > > > > I was refering to Obj2PDF because this is the only example which
> shows
> > > > how
> > > > > to generate XML and then pass it to the FOP Transformation.
> XML2PDF
> > > > works
> > > > > with a static and already existing xml file. So the whole point
> was
> > > how
> > > > to
> > > > > pass a generated xml file to fop without writing it to the file
> > > system.
> > > > > Using the Obj2PDF requires a lot of refactoring in my code but
> that is
> > > > the
> > > > > only option I got I suppose, or am I missing something?
> > > > >
> > > > > cheers,
> > > > > Pete
> > > > >
> > > > > > --- Ursprüngliche Nachricht ---
> > > > > > Von: Jeremias Maerki <[EMAIL PROTECTED]>
> > > > > > An: fop-users@xmlgraphics.apache.org
> > > > > > Betreff: Re: How to pass input of xml tranfs. to xslt transf. ?
> > > > > > Datum: Wed, 07 Dec 2005 21:44:38 +0100
> > > > > >
> > > > > > Yes, that's basically it, though ExampleObj2PDF is a bit
> special.
> > > > > > ExampleXML2PDF is the more generic example. And yes, it works in
> a
> > > > > > webapp.
> > > > > >
> > > > > > On 07.12.2005 21:39:58 Peter.Neu wrote:
> > > > > > > Hi Glenn
> > > > > > >
> > > > > > > did you mean this example? Taken from [1]. Does this work in a
> > > > webapp?
> > > > > > >
> > > > > > >
> > > > > > > //Setup output
> > > > > > > OutputStream out = new java.io.FileOutputStream(pdf);
> > > > > > > try {
> > > > > > > driver.setOutputStream(out);
> > > > > > > //Setup XSLT
> > > > > > > TransformerFactory factory =
> > > TransformerFactory.newInstance();
> > > > > > > Transformer transformer = factory.newTransformer(new
>
> > >
> > > >
> > > > > > > StreamSource(xslt));
> > > > > > > //Setup input for XSLT transformation
> > > > > > > Source src = team.getSourceForProjectTeam();
> > > > > > > //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);
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
[1]http://svn.apache.org/viewcvs.cgi/xmlgraphics/fop/tags/fop-0_20_5/examples/embedding/java/embedding/ExampleObj2PDF.java?view=markup
> > > > > > >
> > > > > > >
> > > > > > > cheers,
> > > > > > > Pete
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > > --- Ursprüngliche Nachricht ---
> > > > > > > > Von: Glen Mazza <[EMAIL PROTECTED]>
> > > > > > > > An: fop-users@xmlgraphics.apache.org
> > > > > > > > Betreff: Re: How to pass input of xml tranfs. to xslt
> transf. ?
> > > > > > > > Datum: Wed, 07 Dec 2005 12:41:24 -0500
> > > > > > > >
> > > > > > > > Don't use XSLTInputHandler. Use JAXP[1] instead.
> > > > > > > >
> > > > > > > > Glen
> > > > > > > >
> > > > > > > > [1]
> > > > http://xmlgraphics.apache.org/fop/0.20.5/embedding.html#examples
> > > > > > > >
> > > > > > > > [EMAIL PROTECTED] wrote:
> > > > > > > >
> > > > > > > > >Hello,
> > > > > > > > >
> > > > > > > > >I struggling to create a webapps that creates pdf's for xml
> > > > > > documents.
> > > > > > > > The
> > > > > > > > >problem is: I can't pipe the output of my SAX
> transformation to
> > > > the
> > > > > > > > >XSLTInputHandler.
> > > > > > > > >
> > > > > > > > >My code uses a static xsl document and dynamic xml
> documents.
> > > For
> > > > > > > > >demonstration purposes I create the xml file on the local
> > > > filesystem
> > > > > > but
> > > > > > > > >that'S not very good for my webapplication :o/
> > > > > > > > >
> > > > > > > > >Here the code:
> > > > > > > > >
> > > > > > > > >File xmlfile = new
> > > > > > File(session.getServletContext().getRealPath("/xml/"),
> > > > > > > > >"nbw.xml");
> > > > > > > > >OutputStream out = new java.io.FileOutputStream(xmlfile);
> > > > > > > > >StreamResult streamResult = new StreamResult(out);
> > > > > > > > >SAXTransformerFactory tf = (SAXTransformerFactory)
> > > > > > > > >SAXTransformerFactory.newInstance();
> > > > > > > > >TransformerHandler hd = tf.newTransformerHandler();
> > > > > > > > >Transformer serializer = hd.getTransformer();
> > > > > > > > >serializer.setOutputProperty(OutputKeys.ENCODING,
> > > "ISO-8859-1");
> > > > > > > > >serializer.setOutputProperty(OutputKeys.INDENT, "yes");
> > > > > > > > >hd.setResult(streamResult);
> > > > > > > > >
> > > > > > > > >//Custom transformation with SAX
> > > > > > > > >XmlTransformer xmlt = new XmlTransformer(hd);
> > > > > > > > >String xslParam =
> > > > > > > > session.getServletContext().getRealPath("/xml/nbw.xsl");
> > > > > > > > >String xmlParam =
> > > > > > > > session.getServletContext().getRealPath("/xml/nbw.xml");
> > > > > > > > >
> > > > > > > > >File xmlFile = new File(xmlParam);
> > > > > > > > >
> > > > > > > > >//XSLT Transformation
> > > > > > > > >XSLTInputHandler input =
> > > > > > > > >new XSLTInputHandler(xmlFile, new File((xslParam)));
> > > > > > > > >
> > > > > > > > >renderXML(input, response);
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >cheers,
> > > > > > > > >Pete
> > > > > > > > >
> > > > > >
> > > > > >
> > > > > > Jeremias Maerki
> > > >
> > > >
> > > > Jeremias Maerki
> > > >
> > > >
> > > >
> ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail:
> [EMAIL PROTECTED]
> > > >
> > >
> > > --
> > > 10 GB Mailbox, 100 FreeSMS/Monat http://www.gmx.net/de/go/topmail
> > > +++ GMX - die erste Adresse für Mail, Message, More +++
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> >
> > --
> > Lust, ein paar Euro nebenbei zu verdienen? Ohne Kosten, ohne Risiko!
> > Satte Provisionen für GMX Partner: http://www.gmx.net/de/go/partner
> >
> > ---------------------------------------------------------------------
> > 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]
>
--
Lust, ein paar Euro nebenbei zu verdienen? Ohne Kosten, ohne Risiko!
Satte Provisionen für GMX Partner: http://www.gmx.net/de/go/partner
protected void JAXPTransform(HttpSession session, HttpServletResponse
response, HttpServletRequest req) throws Exception {
// Here I provide a file output stream for the result of the sax
transformation -> what I need is some kind of stream
File xmlfile = new
File(session.getServletContext().getRealPath("/xml/"), "nbw.xml");
OutputStream out = new java.io.FileOutputStream(xmlfile);
// set the stream result for the transformation
StreamResult streamResult = new StreamResult((out));
SAXTransformerFactory tf = (SAXTransformerFactory)
SAXTransformerFactory.newInstance();
TransformerHandler hd = tf.newTransformerHandler();
Transformer serializer = hd.getTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
hd.setResult(streamResult);
// the whole creation of the xml is done in the XmlTransformer which
writes to the output file but should write it to some kind of stream
XmlTransformer xmlt = new XmlTransformer(hd);
//from here on just the basic servlet example from here :
// http://xmlgraphics.apache.org/fop/0.20.5/servlets.html#xslt
Driver driver = new Driver();
driver.setLogger(this.log2);
driver.setRenderer(Driver.RENDER_PDF);
//Setup a buffer to obtain the content length
ByteArrayOutputStream out2 = new ByteArrayOutputStream();
driver.setOutputStream(out2);
//Setup Transformer
BufferedReader r = req.getReader();
this.transformerFactory = TransformerFactory.newInstance();
// my static xsl file in here
Source xsltSrc = new StreamSource((new File(("nbw.xsl"))));
Transformer transformer =
this.transformerFactory.newTransformer(xsltSrc);
//Make sure the XSL transformation's result is piped through to FOP
Result res = new SAXResult(driver.getContentHandler());
//Setup input
// This is the point where im stuck -> I don't know how to insert a
stream in here
Source src = new StreamSource(new File("foo.xml"));
//Start the transformation and rendering process
transformer.transform(src, res);
//Prepare response
response.setContentType("application/pdf");
response.setContentLength(out2.size());
//Send content to Browser
response.getOutputStream().write(out2.toByteArray());
response.getOutputStream().flush();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]