cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ray Martin" <raymar...@aci-hq.com>
Subject RE: Writing output of pipeline to a file
Date Wed, 18 Dec 2002 12:12:15 GMT
I agree.  Writing to a file is best done in an action.  Allow the XSL to do
styling of presentation.  Allow actions to perform - well, actions - like
writing to a file - JAVA is a beautiful thing - has great file streams.

Ray
  -----Original Message-----
  From: Ludovic de Beaurepaire [mailto:ludovic.debeaurepaire@axonie.com]
  Sent: Wednesday, December 18, 2002 5:44 AM
  To: cocoon-users@xml.apache.org
  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: cocoon-users@xml.apache.org
    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: cocoon-users@xml.apache.org
      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: cocoon-users@xml.apache.org
        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: cocoon-users@xml.apache.org
          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

Mime
View raw message