David,
    Thanks for your thoughts.  I am going to digest what you suggest
further.  I think another approach that is clean, albeit no Cocoon, is to
leave it as a servlet, and use xalan directly - something like:

      // instantiate a TransformerFactory
      javax.xml.transform.TransformerFactory tFactory =
                javax.xml.transform.TransformerFactory.newInstance();

      // ?? somehow attach a StringBuffer to the source instead of a file
      javax.xml.transform.Source xmlSource =
                new javax.xml.transform.stream.StreamSource
                             (new
java.net.URL("file:foo.xml").openStream());

      // write all the XML to a/the StringBuffe here ........

      // set the style sheet source
      javax.xml.transform.Source xslSource =
                new javax.xml.transform.stream.StreamSource
                             (new
java.net.URL("file:foo.xsl").openStream());

      // Generate (instantiate) the transformer.
      javax.xml.transform.Transformer transformer =
                             tFactory.newTransformer(xslSource);

      // Perform the transformation, sending the output to the response.
      transformer.transform(xmlSource,
                           new
javax.xml.transform.stream.StreamResult(out));

Bob Garvey



----- Original Message -----
From: "David Rosenstrauch" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, January 23, 2002 11:44 AM
Subject: Re: Servlet to XSL possible?


> OK.  I think I get it now.
>
> Yes, Tomcat will always handle the servlets, and since your servlet is not
a Cocoon generator things won't work properly.  Servlets are designed to
write directly to the http response stream (which is what you are seeing).
>
> Cocoon on the other hand is designed for you to process xml elements via
pipeline transformations and (eventually) serialize the output to the http
response stream.
>
> So ... how to do what you want?
>
> Some ideas:
>
> 1) Kludgey:
>
> Make your servlet act as a Cocoon generator as well.  Have it implement
the appropriate interface and generate the appropriate XML when called.
>
> 2) less kludgey:
>
> Avoid calling a servlet completely.
>
> Refactor your servlet into 2 pieces:  one that does the actual servlet
call/response stuff ("doGet", etc.) and a separate component of stand-alone
code that really does the meat of what you're trying to do (generate XML it
sounds like).
>
> (Or alternatively, just add a new method to the servlet that you can call
to retrieve the XML without going through all the HTTP stuff.)
>
> Then use a custom written Generator (or maybe even an Action or XSP) to
call the new component directly and feed the results into the pipeline.
>
>
> Haven't thought this all through too carefully so maybe this is tougher
than it sounds, but in theory I would think this should work.
>
> Any help?
>
>
> DR
>
>



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

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

Reply via email to