Hi,

I have written an action and compiled it successfully. I put it in the
cocoon/WEB-INF/lib folder as a jar:

package test.acting;

import java.util.Map;
import java.util.HashMap;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.acting.AbstractAction;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.xml.sax.EntityResolver;


public class XslSelection extends AbstractAction {

  public Map act(Redirector redirector, SourceResolver resolver, Map
objectModel,
  String source, Parameters parameters){

    Map results = new HashMap();
    Request request = ObjectModelHelper.getRequest(objectModel);

    String report_id = request.getParameter("report_id");
    String service_id = request.getParameter("service_id");

    // Now choose the suitable XSL for the output
    if(report_id.equals("16"))
      results.put("report_16","report_16");
    else if(report_id.equals("17") && service_id.equals("GSM"))
      results.put("report_17GSM","report_17GSM");
    else if(report_id.equals("17") && !service_id.equals("GSM"))
      results.put("report_17","report_17");
    else if(report_id.equals("19"))
      results.put("report_19","report_19");
    else if(report_id.equals("18"))
      results.put("report_18","report_18");
    else
      results.put("error","error");

    return results;
  }
}


In the sitemap I "import" it as follows.
 ...
<map:actions>
      <!-- here is the class defined that is used for choosing the right
xsl for the output -->
      <map:action name="xslSelect" src="test.acting.XslSelection"/>
                ...
</map:actions>


Thats how I use it in the sitemap:
...
<map:match pattern="blabla">
            <map:generate src="sampleoutput.xml"/>
            <map:act type="xslSelect">
                   <map:transform src="stylesheets/{results}.xsl"/>
                   <map:serialize type="fo2pdf"/>
            </map:act>
 </map:match>
...

But I only get the error that cocoon can't find the page (Resource not
found). Invoking the different stylesheets "manually" is no problem, but
using the action.
Since it is my first action, I don't know where to look for the error.

Another question. Can't I just give back a String? My XSLs are called
report_16.xsl, report_17.xsl, report_18.xsl, report_19.xsl, error.xsl

Jonny

----------------------------------------------------------------------------------------------------

This electronic message contains information from the mmo2 plc Group which
may be
privileged or confidential. The information is intended to be for the use
of the
individual(s) or entity named above. If you are not the intended recipient
be aware
that any disclosure, copying, distribution or use of the contents of this
information
is prohibited. If you have received this electronic message in error,
please notify
us by telephone or email (to the numbers or address above) immediately.




---------------------------------------------------------------------
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