Thanx 4 all the help .. unfortunately I can't install Tomcat4 so I'll stick with this soultion
> >>Hello! >> >>SUMMARY: How to use a servlet as a generator in Cocoon, but allowing >>forms data to be passed via POST method (And NOT GET!!) >>---------------------------------------------- >> >> >>I can obtain correct XML output, provided I am happy with the raw XML >>and i don't translate it .. (and a side question could be.. how can I >>make the transformation from DOM to SAX efficiently, using some >>xml.apache.org library.. without serializing the DOM on a Stream and >>parsing it back?? THis brute force approach is the one I use now... but >>this is another question.. i suppose.. ) > > >Cocoon provides helpers to deal with DOM2SAX and SAX2DOM : >org.apache.cocoon.xml.dom.DOMStreamer in your case. Look at Javadocs if >this matches your needs. Il'' see it in a while when I've resolved every other issue.. .. see below.. >Concerning your NPE, I already had the same : my mistake was to have sent >two contentHandler.startDocument(). >And I think you may do so here according to your code : the first is >explicitly written, and the second one may be implicit within the >parser.parse(). Thanx! That was it!!!!!!!!!!.. now i can have the output without errors. (erll.. sometimes).. It is still not parseed correctly by the XSL but I'll manage.. it seem to be a problem with namespace only.. But I have another nasty problem: every other invokation of the servlet I get an exception because th super.contentHandler of my generator is NULL. If i relaod it is not null, if I reload again it is null (i've checked it by logging..) .. Any idea?? I've found a vague refernce to this, stating that "The content handler is NULL when trying to process the SAX Events through the AbstractDOMTransformer." but I can't see why it works every other invokation. THe generator is recreated each time, I gather? Thanks Walter >>THe Problem arises when I add a Trasformer: >> >> <map:match pattern="prova/test.html"> >> <map:generate type="testgen" > >> <map:parameter name="servlet-class" >> value="TestServlet"/> >> </map:generate> >> <map:transform src="stylesheets/prova/TestServlet.xsl"/> >> <map:serialize type="html"/> >> </map:match> >> >>I've made the xsl such that it works fine with our testServlet and the >>requestGenerator: >>... >> <map:generate type="request" /> >> <map:transform src="stylesheets/prova/TestServlet.xsl"/> >> >>With the request generator it works fine and I get neatly formatted HTML, >>with our servlet, that apparently generates the same kind of XMLm it >>breaks down.. >> >>Or, to be correct, it does not match any tags. The XSL is read because in >>the browser the basic HTML tags and title of the page (as specified inthe >>top level XSL "/" template-mathcing rule) are displayed, but any further >>XML tag is ignored, and moreover cocoon complains: >> >>FATAL_E (2002-03-13) 09:54.57:446 [core.xslt-processor] >>(/cocoon/prova/test.html) Thread-20/TraxErrorHandler: Error in >>TraxTransformer: javax.xml.transform.TransformerException: >>java.lang.NullPointerException >>javax.xml.transform.TransformerException: java.lang.NullPointerException >> at >> >org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1230) >> >> at >> org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3139) >> at java.lang.Thread.run(Thread.java:484) >>--------- >>java.lang.NullPointerException >> at >> >org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:1887) > >> >> at >> >org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1175) >> >> at >> org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3139) >> at java.lang.Thread.run(Thread.java:484) >> >> >>THat's it. I enclose the bit of code of the Generator that translated a >>DOM to SAX events.. perhaps there is something here that works with raw >>XML but breaks down when SAX events are sent down the pipeline.. >> >>Any help would be appreciated! >>Thanx >> >>Walter Gamba >> >>----------------------- >>public synchronized void outputXML(String NSURI, Document doc) >>{ >> try{ >> super.contentHandler.startDocument(); >> //super.contentHandler.startPrefixMapping("",NSURI); >> transformDOM2SAX(super.contentHandler,doc); >> //super.contentHandler.endPrefixMapping(""); >> super.contentHandler.endDocument(); >> }catch(SAXException s){ >> log.error("Errore SAX!:"+s); >> } >>} >> >>private static /* synchronized */ void transformDOM2SAX(ContentHandler >>cHandler, Document doc) { >> //brute force way >>try { >> //1) open stream >> CharArrayWriter writer = new CharArrayWriter(); >> >> printDocument(writer, doc); >> >> //2) create SAX parserthat can read from stream >> SAXParserFactory spf = SAXParserFactory.newInstance(); >> SAXParser parser = spf.newSAXParser(); >> >> //3) build a reader and InputSource >> Reader reader = new CharArrayReader(writer.toCharArray()); >> InputSource source = new InputSource(reader); >> >> log.debug("TestGenerator::transformDOM2SAX -> parse"); >> ServletDefaultHandler sdh=new ServletDefaultHandler(cHandler); >> try{ >> parser.parse(source, sdh); >> } >> catch(Exception npe){ >> log.error("Errore in PARSE:"+npe,npe); >> } >> //writer.close(); >> log.debug("TestGenerator::transformDOM2SAX -> end parse"); >> >>} >>catch (IOException ioe) { >> log.error("Errore in creazione reader/writer oppure in source:" >> + ioe, ioe); >>} >>catch (ParserConfigurationException pfe) { >> log.error("Errore parseconfig!:" + pfe, pfe); >>} >>catch (SAXException sax) { >> log.error("Errore sax!:" + sax, sax); >>} >> >> >>Walter Gamba >>[EMAIL PROTECTED] >>E-Gramma srl >>via Palazzo di Citta' 8 - 10122 TORINO >>tel 011-5136583 fax 011-5136582 >>www.e-gramma.it >> >> >>--------------------------------------------------------------------- >>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]> > > > >--------------------------------------------------------------------- >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]> > Walter Gamba [EMAIL PROTECTED] E-Gramma srl via Palazzo di Citta' 8 - 10122 TORINO tel 011-5136583 fax 011-5136582 www.e-gramma.it --------------------------------------------------------------------- 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]>