Hi All, Thanks for the help. I tried Geoff's modified version, and it works with some small corrections. Here is the code (Maybe some of the imports are not used at all):
import java.io.IOException; import java.io.StringReader; import org.xml.sax.XMLReader; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.helpers.XMLReaderFactory; import org.apache.cocoon.ProcessingException; import org.apache.cocoon.generation.AbstractGenerator; import java.lang.String; // for the setup() method import org.apache.cocoon.environment.SourceResolver; import java.util.Map; import org.apache.avalon.framework.parameters.Parameters; // used to get and hold the request parameters. import org.apache.cocoon.environment.ObjectModelHelper; import org.apache.cocoon.environment.Request; import java.util.Enumeration; // SAX helper import org.xml.sax.helpers.AttributesImpl; public class NewAnyName extends AbstractGenerator { // will be initialized in the setup() method and used in generate() Request request = null; Enumeration paramNames = null; String uri = null; /** * Implement the generate() method from AbstractGenerator. * It simply generates SAX events using SAX methods. */ public void generate() throws IOException, SAXException, ProcessingException { // xspAttr will stay empty for this simple implementation // If we had any attributes in our tags, we would add them to this variable // before the call to startElement(), and either create a new AttributesImpl // instance for each element, or reuse one being careful to reset it before // each use. AttributesImpl xspAttr = new AttributesImpl(); // contentHandler is inherited from org.apache.cocoon.xml.AbstractXMLProducer contentHandler.startDocument(); // Do it with SAX: contentHandler.startElement("", "doc", "doc", xspAttr); contentHandler.startElement("", "uri", "uri", xspAttr); contentHandler.characters(uri.toCharArray(),0,uri.length()); contentHandler.endElement("", "uri", "uri"); contentHandler.startElement("", "params", "params", xspAttr); while (paramNames.hasMoreElements()) { contentHandler.startElement("", "param", "param", xspAttr); String param = (String)paramNames.nextElement(); contentHandler.characters(param.toCharArray(),0,param.length()); contentHandler.endElement("","param", "param"); } contentHandler.endElement("","params", "params"); contentHandler.startElement("", "source", "source", xspAttr); if(source != null) contentHandler.characters(source.toCharArray(),0, source.length()); contentHandler.endElement("", "source", "source"); contentHandler.endElement("","doc", "doc"); contentHandler.endDocument(); } public void setup(SourceResolver resolver, Map objectModel, String src, Parameters par) { request = ObjectModelHelper.getRequest(objectModel); paramNames = request.getParameterNames(); uri = request.getRequestURI(); } } The pipeline is the following: <map:pipeline> <map:match pattern="foo/*"> <map:act type="request"> <map:parameter name="parameters" value="true"/> <map:generate type="ist" source="{../1}"/> </map:act> <map:serialize type="xml"/> </map:match> <map:handle-errors> <map:transform src="stylesheets/system/error2html.xsl"/> <map:serialize status-code="500"/> </map:handle-errors> </map:pipeline> A test reqest: http://localhost:8080/cocoon/foo/trial.xml?apple=3 result: <?xml version="1.0" encoding="UTF-8"?> <doc><uri>/cocoon/foo/trial.xml</uri><params><param>apple</param></params><source/></doc> As you can see, the source filed is still null. Anyway, my problem is solved. I can get the request in the generator. I'm just curious what is the solution for this "source" thing. Br, Istvan --------------------------------------------------------------------- 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]>