Anna,

why don't you use SourceWritingTransformer to write the document, and then transform 
its output (the status message) in an HTML that
automatically loads the written XML document ?

Yes, you'd bounce the browser (not a particularly nice thing to do) and should write a 
separate pipeline to handle the rendering of
the written XML document... but I presume it would be easier than other methods.

You may even check, with the ResourceExists action, whether the XML document has 
already been written to disk... hence deciding
dinamycally which pipeline to use: the one writing the XML document, or the one 
rendering it.

Best regards,

---------------------------------------------
               Luca Morandini
               GIS Consultant
              [EMAIL PROTECTED]
http://utenti.tripod.it/lmorandini/index.html
---------------------------------------------

-----Original Message-----
From: Ludovic de Beaurepaire [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, December 18, 2002 12:30 PM
To: [EMAIL PROTECTED]
Subject: Re: Writing output of pipeline to a file


Sorry Anna, i didn't understand it.

I thought you had to generate data and next save and transfom them, but you have datas 
in a file and want to transform them and next
save and send them to your browser.

A solution could be to write a transformer (in XSL with redirection or in Java), 
localized after your transformer in the pipeline.
This one does not transform XML datas, but copy (not redirect) them in a file.

Ludovic
----- Original Message -----
From: Anna Afonchenko
To: [EMAIL PROTECTED]
Sent: Wednesday, December 18, 2002 11:57 AM
Subject: Re: Writing output of pipeline to a file


Thank you Ludovic.
Just to ensure that I got you right:
You say that I need to write an action that will get the content of the file, will 
write it, and then in the same pipeline there
will be generator that will just read the file that was written and will serialize the 
output to the browser?
But I need to write the file after it was transformed by the xsl. How this is possible 
in sitemap?
I just don't understand the logic of what I need to do in order to both write to the 
file and output file to the browser.
Sorry I'm bothering you, but can you just explain me in little more detail what I need 
to do?

Thank you very very much.
Anna
----- Original Message -----
From: Ludovic de Beaurepaire
To: [EMAIL PROTECTED]
Sent: Wednesday, December 18, 2002 12:44 PM
Subject: Re: Writing output of pipeline to a file


Hi Anna,

When you use  <redirect:write file="testWrite.xml">, your XML datas are redirected, so 
you have to generate other XML datas for your
serializer. In your case in error, no XML datas are passed after the transformation.

So, in your case, you have to transform AND save your XML datas. i think the best 
solution is saving these datas in file in an
Action, and use this file for transformation.

Ludovic

----- Original Message -----
From: Anna Afonchenko
To: [EMAIL PROTECTED]
Sent: Wednesday, December 18, 2002 8:44 AM
Subject: Re: Writing output of pipeline to a file


Thank you all for answering me, but I still can't manage to do it.
Here is my pipeline:
<map:match pattern="test.html">
    <map:generate src="test.html"/>
    <map:transform src="writeToFile.xsl"/>
    <map:serialize type="xml"/>
<map:match>

Here is my writeToFile.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 xmlns:fo=http://www.w3.org/1999/XSL/Format 
xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
 extension-element-prefixes="redirect">
<xsl:output method="xml"/>

 <xsl:template match="/">
 <xsl:copy-of select="*"/>
 <redirect:open file="testWrite.xml"/>
 <redirect:write file="testWrite.xml">
  <xsl:copy-of select="*"/>
 </redirect:write>
 <redirect:close file="testWrite.xml"/>
 </xsl:template>
</xsl:stylesheet>

When I am running this, I get the following error message from the Cocoon:
type fatal
message Exception in HTMLGenerator.generate()
description org.apache.cocoon.ProcessingException: Exception in 
HTMLGenerator.generate(): java.lang.NullPointerException
sender org.apache.cocoon.servlet.CocoonServlet
source Cocoon servlet
request-uri
If I remove all the redirect: lines, then I get the serialized input file, so the 
input is OK, obviously,
I have some problems with this redirect:
Can anybody please tell me what's wrong?
Thank you very much for help.
Anna

----- Original Message -----
From: Ludovic de Beaurepaire
To: [EMAIL PROTECTED]
Sent: Tuesday, December 17, 2002 4:36 PM
Subject: Re: Writing output of pipeline to a file


First, i had just to save it (not to send the result file to the client). I did it in 
a stylesheet like this :

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
 extension-element-prefixes="redirect">
 <xsl:output method="xml" encoding="ISO-8859-1"/>
 <xsl:template match="/">
 <redirect:write file="{$path}">
  <xsl:copy-of select="*"/>
 </redirect:write>
 <TEXTE>output for the client</TEXTE>
 </xsl:template >
</xsl:stylesheet>

But there was problems with some configuration, so finally i did it in my Action who 
had to generate the XML.

If you have to duplicate your XML stream, one for saving, another for the client, i 
think you have to do this in an action. It
generates the XML file and this one is next transformed/serialized.

<map:match pattern="some.html">
    <map:act type="YourAction">
    <map:generate src="youyGeneratedXmlFile.xml"/>
    <map:transform src="some.xsl"/>
    <map:serialize type="html"/>
</map:match>

Ludovic
----- Original Message -----
From: Anna Afonchenko
To: [EMAIL PROTECTED]
Sent: Tuesday, December 17, 2002 3:09 PM
Subject: Re: Writing output of pipeline to a file


Hi Ludovic. Thank you for answering.
Can you say what do you do to save this XML file?
I mean, if I have the following pipeline:
<map:match pattern="some.html">
    <map:generate src="some.html"/>
    <map:transform src="some.xsl"/>
    <map:serialize type="xml"/>
</map:match>
this pipeline produces an xml file. What should I use in order to save this file as 
"some.xml".

Sorry for asking almost exactly the same, I just didn't understood from you answer 
what should I do.
Thank you very much for help.

Anna
----- Original Message -----
From: Ludovic de Beaurepaire
To: [EMAIL PROTECTED]
Sent: Tuesday, December 17, 2002 4:03 PM
Subject: Re: Writing output of pipeline to a file


Hi Anna,

I had this problem and didn't find a solution for caching the output of the pipeline 
to perform an OutputAction as saving in a file.
Finally i chose to save the XML, and to perfom the transformation/serialization when a 
request need the transformed file. It
supposes that the transformers are not modified.

Another solution should be using the CommandLine classes to perform the pipeline in an 
action but i can't say more about it.

Hope a better solution exists...

Ludovic
----- Original Message -----
From: Anna Afonchenko
To: cocoon-users
Sent: Tuesday, December 17, 2002 2:19 PM
Subject: Writing output of pipeline to a file


Hello All!
I know that today I ask too many questions, but since cocoon is new to me,
sometimes I don't even know where to look for the information, so you are my only help.
Thanks for everyone who took time to answer my questions. Here is another one:

At the end of the pipeline the result file is output to the browser.
I need the result file also to be saved in the file on my hard drive.
How can I do this?
I read about the SourceWritingTransformer, but I understood that I can write 
<source:write> tag in xml only, not in xsl.

Or maybe I can use it to do what I need, and I just don't know how?
Please tell me.

Thank you very much for your help.

Anna


---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

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

Reply via email to