You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Pe...@gmx.net on 2005/12/07 16:19:48 UTC

How to pass input of xml tranfs. to xslt transf. ?

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

-- 
Telefonieren Sie schon oder sparen Sie noch?
NEU: GMX Phone_Flat http://www.gmx.net/de/go/telefonie

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by "J.Pietschmann" <j3...@yahoo.de>.
Peter.Neu@gmx.net wrote:
> did you mean this example?

Yes.

> Does this work in a webapp?

Yes. You have to use a ByteArrayOutputStream as a buffer
to set the content length HTTP header correctly (there
are many code samples on the net for this detail).

Why do do think it might not work?


J.Pietschmann

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by "J.Pietschmann" <j3...@yahoo.de>.
Peter.Neu@gmx.net wrote:
> OK, the ByteArrayOutputStream solves the NullPointer Exception. The only
> problem left is there is none of my xml data in the pdf. I only get the
> static header of the xsl document :o/

The most likely reason is that you don't generate FO objects
for the real content. If the PDF generation worked before,
using serialization of the intermediate XML, then you've
probably tried to "generate tags".
The easies way to track down the problem is to replace the
FOP Driver by an identity transformation which serializes to
the servlet's output stream so that you can download the
FO document with a browser (or, better, using a command line
client to save it into a file). It the FO looks ok, and
produces the expected output if run through the FOP command
lien application, check whether your transformation uses
disable-output-escaping.

J.Pietschmann

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
Nothing's wrong with the sequence. Now that you've got a complete
processing pipeline there and you have problems, you have to split it up
at defined points to get at the intermediate results so you can identify
the problem. For example:

Instead of...
SAXResult result = new SAXResult(driver.getContentHandler());
...you can use...
StreamResult result = new StreamResult(new File("C:/Temp/temp.xml"));

That will write the output from the XSLT transformation to a file which
you can inspect. If you want to see what the XML you produce looks like,
switch from XSLT transformation to identity transformation (newTransformerHandler())
to skip the XSLT stage.

You've probably got a bug in your XSLT. Now it's your turn.

On 08.12.2005 16:18:51 Peter.Neu wrote:
> OK, the ByteArrayOutputStream solves the NullPointer Exception. The only
> problem left is there is none of my xml data in the pdf. I only get the
> static header of the xsl document :o/
> 
> Do we have to change the sequence somehow?

Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Pe...@gmx.net.
OK, the ByteArrayOutputStream solves the NullPointer Exception. The only
problem left is there is none of my xml data in the pdf. I only get the
static header of the xsl document :o/

Do we have to change the sequence somehow?




> --- Ursprüngliche Nachricht ---
> Von: Jeremias Maerki <de...@jeremias-maerki.ch>
> An: fop-users@xmlgraphics.apache.org
> Betreff: Re: How to pass input of xml tranfs. to xslt transf. ?
> Datum: Thu, 08 Dec 2005 16:04:32 +0100
> 
> I'm not sure why you get an error that "handler is null". The setup
> looks ok now. The only thing that's missing is the ByteArrayOutputStream
> that FOP writes the PDF output to. In order to make PDF displaying work
> you need to know the size of the PDF so there's no way around buffering
> the PDF into a byte array. See some changes inline below.
> 
> On 08.12.2005 15:50:48 Peter.Neu wrote:
> > First of all. Thanks for taking so much time for my problem :o)
> > 
> > I tried to include your code. It's attached below:
> > 
> > 1. the transformer factory with the implementation I use does not
> support
> > this call: this.transformerFactory.newTransformerHandler(xsltSrc); - so
> I
> > modified it a bit.
> > 
> > 2. When I run the code I get the error that the handler is null :o/
> > 
> > 3. I'm still not sure how to output the stuff to the browser.
> > 
> > cheers,
> > Pete
> > 
> > Code:
> > 
> > SAXTransformerFactory tf = (SAXTransformerFactory)
> > SAXTransformerFactory.newInstance();
> > // my static xsl file in here
> > Source xsltSrc = new StreamSource((new
> > File(session.getServletContext().getRealPath("/xml/nbw.xsl"))));
> > TransformerHandler handler = tf.newTransformerHandler(xsltSrc);
> > 
> > //Prepare FOP here
> > Driver driver = new Driver();
> > driver.setLogger(this.log2);
> > driver.setRenderer(Driver.RENDER_PDF);
> > 
> //Setup a buffer to obtain the content length
> //Use the ByteArrayOutputStream from Jakarta Commons IO. It's more
> //memory-efficient
> ByteArrayOutputStream out2 = new ByteArrayOutputStream();
> driver.setOutputStream(out2);
> > 
> > SAXResult result = new SAXResult(driver.getContentHandler());
> > handler.setResult(result);
> > 
> > 
> > XmlTransformer xmlt = new XmlTransformer();
> > xmlt.doXMLTransform(handler);
> > /* this  is nothing but
> > *   handler.startDocument();
> >     handerl.startElement("BLA");
> >     handerl.endElement("BLA");
> >     hd.endDocument();
> > */
> > 
> > //Prepare response
> > response.setContentType("application/pdf");
> > //  response.setContentLength(out2.size());
> > 
> > //Send content to Browser
> 
> response.getOutputStream().write(out2.toByteArray());
> 
> > response.getOutputStream().flush();
> > 
> > 
> > ---------------------------------------------------------------------
> > 
> > > --- Ursprüngliche Nachricht ---
> > > Von: Jeremias Maerki <de...@jeremias-maerki.ch>
> > > An: fop-users@xmlgraphics.apache.org
> > > Betreff: Re: How to pass input of xml tranfs. to xslt transf. ?
> > > Datum: Thu, 08 Dec 2005 14:53:19 +0100
> > > 
> > > It's unclear what this XmlTransformer does exactly. You only
> instantiate
> > > a new instance but you do nothing with it.
> > > 
> > > Anyway, I'll try to rework your code so you can pipe this stuff
> > > together:
> > > 
> > > 1. You don't need the FileOutputStream anymore.
> > > 2. No need to configure the serializer if you just pipe the stuff
> > > through.
> > > 3. Since you do only an identity transform you don't need the first
> > > TransformerHandler. Instead set up the XSLT transformation as a
> > > TransformerHandler.
> > > 
> > > SAXTransformerFactory tf =
> > > (SAXTransformerFactory)SAXTransformerFactory.newInstance();
> > > 
> > > // my static xsl file in here
> > > Source xsltSrc = new StreamSource((new File(("nbw.xsl"))));
> > > TransformerHandler handler =
> > > this.transformerFactory.newTransformerHandler(xsltSrc);
> > > 
> > > //Prepare FOP here
> > > 
> > > SAXResult result = new SAXResult(driver.getContentHandler());
> > > handler.setResult(streamResult);
> > > 
> > > XmlTransformer xmlt = new XmlTransformer(handler);
> > > //Start the XML generation, however you do this (see question above)
> > > xmlt.doSomething();
> > > 
> > > This should send the SAX events generated by your XmlTransformer (not
> an
> > > ideal name IMO) through the TransformerHandler (for the XSLT
> transform)
> > > and its output further on to FOP.
> > > 
> > > On 08.12.2005 14:31:23 Peter.Neu wrote:
> > > >     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();
> > > > 
> > > > 
> > > >     }
> > > 
> > > 
> > > 
> > > Jeremias Maerki
> > > 
> > > 
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> > > For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> > > 
> > 
> > -- 
> > Telefonieren Sie schon oder sparen Sie noch?
> > NEU: GMX Phone_Flat http://www.gmx.net/de/go/telefonie
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> > For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> 
> 
> 
> Jeremias Maerki
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> 

-- 
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: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
I'm not sure why you get an error that "handler is null". The setup
looks ok now. The only thing that's missing is the ByteArrayOutputStream
that FOP writes the PDF output to. In order to make PDF displaying work
you need to know the size of the PDF so there's no way around buffering
the PDF into a byte array. See some changes inline below.

On 08.12.2005 15:50:48 Peter.Neu wrote:
> First of all. Thanks for taking so much time for my problem :o)
> 
> I tried to include your code. It's attached below:
> 
> 1. the transformer factory with the implementation I use does not support
> this call: this.transformerFactory.newTransformerHandler(xsltSrc); - so I
> modified it a bit.
> 
> 2. When I run the code I get the error that the handler is null :o/
> 
> 3. I'm still not sure how to output the stuff to the browser.
> 
> cheers,
> Pete
> 
> Code:
> 
> SAXTransformerFactory tf = (SAXTransformerFactory)
> SAXTransformerFactory.newInstance();
> // my static xsl file in here
> Source xsltSrc = new StreamSource((new
> File(session.getServletContext().getRealPath("/xml/nbw.xsl"))));
> TransformerHandler handler = tf.newTransformerHandler(xsltSrc);
> 
> //Prepare FOP here
> Driver driver = new Driver();
> driver.setLogger(this.log2);
> driver.setRenderer(Driver.RENDER_PDF);
> 
//Setup a buffer to obtain the content length
//Use the ByteArrayOutputStream from Jakarta Commons IO. It's more
//memory-efficient
ByteArrayOutputStream out2 = new ByteArrayOutputStream();
driver.setOutputStream(out2);
> 
> SAXResult result = new SAXResult(driver.getContentHandler());
> handler.setResult(result);
> 
> 
> XmlTransformer xmlt = new XmlTransformer();
> xmlt.doXMLTransform(handler);
> /* this  is nothing but
> *   handler.startDocument();
>     handerl.startElement("BLA");
>     handerl.endElement("BLA");
>     hd.endDocument();
> */
> 
> //Prepare response
> response.setContentType("application/pdf");
> //  response.setContentLength(out2.size());
> 
> //Send content to Browser

response.getOutputStream().write(out2.toByteArray());

> response.getOutputStream().flush();
> 
> 
> ---------------------------------------------------------------------
> 
> > --- Ursprüngliche Nachricht ---
> > Von: Jeremias Maerki <de...@jeremias-maerki.ch>
> > An: fop-users@xmlgraphics.apache.org
> > Betreff: Re: How to pass input of xml tranfs. to xslt transf. ?
> > Datum: Thu, 08 Dec 2005 14:53:19 +0100
> > 
> > It's unclear what this XmlTransformer does exactly. You only instantiate
> > a new instance but you do nothing with it.
> > 
> > Anyway, I'll try to rework your code so you can pipe this stuff
> > together:
> > 
> > 1. You don't need the FileOutputStream anymore.
> > 2. No need to configure the serializer if you just pipe the stuff
> > through.
> > 3. Since you do only an identity transform you don't need the first
> > TransformerHandler. Instead set up the XSLT transformation as a
> > TransformerHandler.
> > 
> > SAXTransformerFactory tf =
> > (SAXTransformerFactory)SAXTransformerFactory.newInstance();
> > 
> > // my static xsl file in here
> > Source xsltSrc = new StreamSource((new File(("nbw.xsl"))));
> > TransformerHandler handler =
> > this.transformerFactory.newTransformerHandler(xsltSrc);
> > 
> > //Prepare FOP here
> > 
> > SAXResult result = new SAXResult(driver.getContentHandler());
> > handler.setResult(streamResult);
> > 
> > XmlTransformer xmlt = new XmlTransformer(handler);
> > //Start the XML generation, however you do this (see question above)
> > xmlt.doSomething();
> > 
> > This should send the SAX events generated by your XmlTransformer (not an
> > ideal name IMO) through the TransformerHandler (for the XSLT transform)
> > and its output further on to FOP.
> > 
> > On 08.12.2005 14:31:23 Peter.Neu wrote:
> > >     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();
> > > 
> > > 
> > >     }
> > 
> > 
> > 
> > Jeremias Maerki
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> > For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> > 
> 
> -- 
> Telefonieren Sie schon oder sparen Sie noch?
> NEU: GMX Phone_Flat http://www.gmx.net/de/go/telefonie
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org



Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Pe...@gmx.net.
First of all. Thanks for taking so much time for my problem :o)

I tried to include your code. It's attached below:

1. the transformer factory with the implementation I use does not support
this call: this.transformerFactory.newTransformerHandler(xsltSrc); - so I
modified it a bit.

2. When I run the code I get the error that the handler is null :o/

3. I'm still not sure how to output the stuff to the browser.

cheers,
Pete

Code:

SAXTransformerFactory tf = (SAXTransformerFactory)
SAXTransformerFactory.newInstance();
// my static xsl file in here
Source xsltSrc = new StreamSource((new
File(session.getServletContext().getRealPath("/xml/nbw.xsl"))));
TransformerHandler handler = tf.newTransformerHandler(xsltSrc);

//Prepare FOP here
Driver driver = new Driver();
driver.setLogger(this.log2);
driver.setRenderer(Driver.RENDER_PDF);


SAXResult result = new SAXResult(driver.getContentHandler());
handler.setResult(result);


XmlTransformer xmlt = new XmlTransformer();
xmlt.doXMLTransform(handler);
/* this  is nothing but
*   handler.startDocument();
    handerl.startElement("BLA");
    handerl.endElement("BLA");
    hd.endDocument();
*/

//Prepare response
response.setContentType("application/pdf");
//  response.setContentLength(out2.size());

//Send content to Browser
//response.getOutputStream().write(out2.toByteArray());
response.getOutputStream().flush();


---------------------------------------------------------------------

> --- Ursprüngliche Nachricht ---
> Von: Jeremias Maerki <de...@jeremias-maerki.ch>
> An: fop-users@xmlgraphics.apache.org
> Betreff: Re: How to pass input of xml tranfs. to xslt transf. ?
> Datum: Thu, 08 Dec 2005 14:53:19 +0100
> 
> It's unclear what this XmlTransformer does exactly. You only instantiate
> a new instance but you do nothing with it.
> 
> Anyway, I'll try to rework your code so you can pipe this stuff
> together:
> 
> 1. You don't need the FileOutputStream anymore.
> 2. No need to configure the serializer if you just pipe the stuff
> through.
> 3. Since you do only an identity transform you don't need the first
> TransformerHandler. Instead set up the XSLT transformation as a
> TransformerHandler.
> 
> SAXTransformerFactory tf =
> (SAXTransformerFactory)SAXTransformerFactory.newInstance();
> 
> // my static xsl file in here
> Source xsltSrc = new StreamSource((new File(("nbw.xsl"))));
> TransformerHandler handler =
> this.transformerFactory.newTransformerHandler(xsltSrc);
> 
> //Prepare FOP here
> 
> SAXResult result = new SAXResult(driver.getContentHandler());
> handler.setResult(streamResult);
> 
> XmlTransformer xmlt = new XmlTransformer(handler);
> //Start the XML generation, however you do this (see question above)
> xmlt.doSomething();
> 
> This should send the SAX events generated by your XmlTransformer (not an
> ideal name IMO) through the TransformerHandler (for the XSLT transform)
> and its output further on to FOP.
> 
> On 08.12.2005 14:31:23 Peter.Neu wrote:
> >     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();
> > 
> > 
> >     }
> 
> 
> 
> Jeremias Maerki
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> 

-- 
Telefonieren Sie schon oder sparen Sie noch?
NEU: GMX Phone_Flat http://www.gmx.net/de/go/telefonie

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
It's unclear what this XmlTransformer does exactly. You only instantiate
a new instance but you do nothing with it.

Anyway, I'll try to rework your code so you can pipe this stuff
together:

1. You don't need the FileOutputStream anymore.
2. No need to configure the serializer if you just pipe the stuff
through.
3. Since you do only an identity transform you don't need the first
TransformerHandler. Instead set up the XSLT transformation as a
TransformerHandler.

SAXTransformerFactory tf = (SAXTransformerFactory)SAXTransformerFactory.newInstance();

// my static xsl file in here
Source xsltSrc = new StreamSource((new File(("nbw.xsl"))));
TransformerHandler handler = this.transformerFactory.newTransformerHandler(xsltSrc);

//Prepare FOP here

SAXResult result = new SAXResult(driver.getContentHandler());
handler.setResult(streamResult);

XmlTransformer xmlt = new XmlTransformer(handler);
//Start the XML generation, however you do this (see question above)
xmlt.doSomething();

This should send the SAX events generated by your XmlTransformer (not an
ideal name IMO) through the TransformerHandler (for the XSLT transform)
and its output further on to FOP.

On 08.12.2005 14:31:23 Peter.Neu wrote:
>     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();
> 
> 
>     }



Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
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: Peter.Neu@gmx.net
> > 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 <de...@jeremias-maerki.ch>
> > > 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 <de...@jeremias-maerki.ch>
> > > > > 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 <gm...@apache.org>
> > > > > > > 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
> > > > > > > 
> > > > > > > Peter.Neu@gmx.net 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: fop-users-unsubscribe@xmlgraphics.apache.org
> > > For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> > > 
> > 
> > -- 
> > 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: fop-users-unsubscribe@xmlgraphics.apache.org
> > For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> > 
> 
> -- 
> 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: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org



Jeremias Maerki


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Pe...@gmx.net.
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: Peter.Neu@gmx.net
> 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 <de...@jeremias-maerki.ch>
> > 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 <de...@jeremias-maerki.ch>
> > > > 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 <gm...@apache.org>
> > > > > > 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
> > > > > > 
> > > > > > Peter.Neu@gmx.net 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: fop-users-unsubscribe@xmlgraphics.apache.org
> > For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> > 
> 
> -- 
> 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: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> 

-- 
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: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Pe...@gmx.net.
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 <de...@jeremias-maerki.ch>
> 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 <de...@jeremias-maerki.ch>
> > > 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 <gm...@apache.org>
> > > > > 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
> > > > > 
> > > > > Peter.Neu@gmx.net 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: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> 

-- 
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: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
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 <de...@jeremias-maerki.ch>
> > 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 <gm...@apache.org>
> > > > 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
> > > > 
> > > > Peter.Neu@gmx.net 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: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Pe...@gmx.net.
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 <de...@jeremias-maerki.ch>
> 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 <gm...@apache.org>
> > > 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
> > > 
> > > Peter.Neu@gmx.net 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
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> 

-- 
GMX DSL-Flatrate 1 Jahr kostenlos* + WLAN-Router ab 0,- Euro*
Bis 31.12.2005 einsteigen! Infos unter: http://www.gmx.net/de/go/dsl

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
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 <gm...@apache.org>
> > 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
> > 
> > Peter.Neu@gmx.net 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


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Pe...@gmx.net.
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 <gm...@apache.org>
> 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
> 
> Peter.Neu@gmx.net 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
> >
> >  
> >
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
> 

-- 
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: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: How to pass input of xml tranfs. to xslt transf. ?

Posted by Glen Mazza <gm...@apache.org>.
Don't use XSLTInputHandler.  Use JAXP[1] instead.

Glen

[1] http://xmlgraphics.apache.org/fop/0.20.5/embedding.html#examples

Peter.Neu@gmx.net 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
>
>  
>



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org