[EMAIL PROTECTED] wrote:
>Andrew,
>
>I don't know what's wrong, but here's a few things to try:
>
>
Thanks! Actually, I didn't mean to send, this and thought I hit stop.
I discovered my
problem was actually some invisible character had snuck its way into the
<?xml version="1.0"?>
processing instruction.
But I'm glad I did send it!
>1) <map:actions>
> <map:action name="HelloAction"
> src="HelloAction"
> logger="webapp.xmlform"/>
> <map:action name="HelloAction" src="HelloAction"
> logger="webapp.xmlform"/>
> </map:actions>
>
>I don't get this. Why are you declaring two identical actions? Can't see why
>it would hurt, but can't see how it helps either... I would do something like
>this:
>
Yes, I must have added it twice..
><map:actions>
> <map:action name="HelloAction" src
>="org.apache.cocoon.samples.xmlform.HelloAction" logger="webapp.xmlform"/>
></map:actions>
>(you will need to change the src so as to match where you compile your
>HelloAction.java)
>
>2) <!-- A trivial example - Hello XMLForm -->
> <map:match pattern="hello.html">
> <map:act type="HelloAction">
>
> <!-- XMLForm parameters for the HowtoWizardAction -->
> <map:parameter name="xmlform-id" value="hello-form"/>
> <map:parameter name="xmlform-scope" value="session"/>
> <map:parameter name="xmlform-model" value="HelloBean"/>
>
> <!-- Content transformation logic -->
> <map:generate src="content/form/{page}.xml"/>
> <map:transform type="xmlform" label="xml"/>
> <map:transform src="stylesheets/form2html.xsl"/> <!-- ripped
>off from
>the wizard sample, did try commenting out -->
> <map:transform type="xmlform" label="xml"/>
> <map:transform src="stylesheets/form2html.xsl"/>
> <map:transform
>src="context://stylesheets/xmlform/xmlform2html.xsl"/>
> <map:serialize type="html"/>
> </map:act>
> </map:match>
>
>Don't understand this, either. Why are you repeating the "xmlform"
>transformation? This transformation "expects" to be invoked right after the
>generation step and before either of the xslt transformations. Invoking it
>after an xslt transformation can't be good. But again, I can't say for sure
>this is your problem.
>
>
I'm not I just renamed the wizard stylesheet.
>3) I would do this:
> <map:match pattern="hello.html">
> <map:act type="HelloAction">
>
> <!-- XMLForm parameters for the HowtoWizardAction -->
> <map:parameter name="xmlform-id" value="hello-form"/>
> <map:parameter name="xmlform-scope" value="session"/>
> <map:parameter name="xmlform-model" value="HelloBean"/>
>
> <!-- Content transformation logic -->
> <map:generate src="content/form/{page}.xml"/>
> <map:transform type="xmlform" label="xml"/>
> <map:transform scr=="stylesheets/wizard2html.xsl"/>
> <map:transform src="stylesheets/form2html.xsl"/>
> <map:serialize type="html"/>
> </map:act>
> </map:match>
>
>If this doesn't work, comment out the three transformers, change <map:serialize
>type="html"> to <map:serialize type="xml"/>, and look at the results in MSIE 5.x
>(where you can see the raw XML that is produced). Check logs. If no errors,
>uncomment the next transformer and repeat. This should pinpoint the error to
>the action, generator, or transformer. It will also let you see exactly what is
>happening in each step.
>
You can also look at it in mozilla 1.0 and just right-click and view
source. ;-)
>
>
>I skimmed your code; nothing jumped out at me. Do these things and post another
>message to dev group, and I'll try to be more helpful.
>
>
I appreciate your help! Thanks!
-Andy
>--Michael
>
>
>
>
>
> "Andrew C.
>
> Oliver" To: [EMAIL PROTECTED]
>
> <acoliver@apache. cc:
>
> org> Subject: XMLForm hello world in the
>works
>
>
> 06/12/02 04:03 PM
>
> Please respond to
>
> cocoon-dev
>
>
>
>
>
>
>
>
>
>Hi All,
>
>I'm trying to create a HelloXMLForm example and I'm getting this:
>
>/The processing instruction target matching "[xX][mM][lL]" is not allowed./
>
>More precisely:
>
>/org.apache.cocoon.ProcessingException: Failed to execute pipeline.:
>org.xml.sax.SAXParseException: The processing instruction target
>matching "[xX][mM][lL]" is not allowed./
>
>(to see the full error you can go to
>http://www.superlinksoftware.com/cocoon/samples/bringmethis/hello.html)
>
>any thoughts on what this means?
>
>relevent sitemap entries:
>
> <map:components>
> <map:actions>
> <map:action name="HelloAction"
> src="HelloAction"
> logger="webapp.xmlform"/>
> <map:action name="HelloAction" src="HelloAction"
> logger="webapp.xmlform"/>
> </map:actions>
> <map:generators default="file">
> <map:generator label="content,data"
>logger="sitemap.generator.serverpages" n
>ame="serverpages" pool-grow="2" pool-max="32" pool-min="4"
>src="org.apache.cocoo
>n.generation.ServerPagesGenerator"/>
>
> </map:generators>
> <map:transformers default="xslt">
> <map:transformer logger="sitemap.transformer.sql" name="sql"
>src="org.apache.
>cocoon.transformation.SQLTransformer"/>
> <map:transformer name="xmlform"
>src="org.apache.cocoon.transformation.XMLForm
>Transformer" logger="webapp.xmlform"/>
> </map:transformers>
> <map:readers default="resource"/>
> </map:transformers>
> <map:readers default="resource"/>
> <map:serializers default="html"/>
> <map:matchers default="wildcard"/>
> <map:selectors default="browser"/>
> </map:components>
>
>....
>
> <!-- A trivial example - Hello XMLForm -->
> <map:match pattern="hello.html">
> <map:act type="HelloAction">
>
> <!-- XMLForm parameters for the HowtoWizardAction -->
> <map:parameter name="xmlform-id" value="hello-form"/>
> <map:parameter name="xmlform-scope" value="session"/>
> <map:parameter name="xmlform-model" value="HelloBean"/>
>
> <!-- Content transformation logic -->
> <map:generate src="content/form/{page}.xml"/>
> <map:transform type="xmlform" label="xml"/>
> <map:transform src="stylesheets/form2html.xsl"/> <!-- ripped
>off from
>the wizard sample, did try commenting out -->
> <map:transform type="xmlform" label="xml"/>
> <map:transform src="stylesheets/form2html.xsl"/>
> <map:transform
>src="context://stylesheets/xmlform/xmlform2html.xsl"/>
> <map:serialize type="html"/>
> </map:act>
> </map:match>
>
>...
>
>here is my xml form
>
> <?xml version="1.0" ?>
>
> <document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002">
>
>
> <xf:form id="hello-form" view="hello" action="hello.html">
>
> <xf:caption>Hello</xf:caption>
>
> <error>
> <xf:violations class="error"/>
> </error>
>
> <xf:textbox ref="/lastName">
> <xf:caption>Last Name</xf:caption>
> <xf:violations class="error"/>
> </xf:textbox>
>
> <xf:textbox ref="/firstName">
> <xf:caption>First Name</xf:caption>
> <xf:violations class="error"/>
> </xf:textbox>
>
> <xf:submit id="next" class="button">
> <xf:caption>Next</xf:caption>
> </xf:submit>
>
> </xf:form>
>
> </document>
>
>here is my action
>
>// Java classes
>import java.util.Map;
>import java.util.HashMap;
>import java.util.SortedSet;
>import java.util.Iterator;
>import java.util.Properties;
>import java.io.InputStream;
>import java.io.FileInputStream;
>import java.io.File;
>
>// XML classes
>// import javax.xml.transform.stream.StreamSource;
>// import javax.xml.transform.TransformerException;
>// import org.xml.sax.InputSource;
>// import org.w3c.dom.Node;
>// import org.w3c.dom.NodeList;
>
>// Framework classes
>import org.apache.avalon.framework.parameters.Parameters;
>import org.apache.avalon.excalibur.pool.Poolable;
>import org.apache.avalon.framework.configuration.Configuration;
>import org.apache.avalon.framework.configuration.ConfigurationException;
>
>// Cocoon classes
>import org.apache.cocoon.environment.Redirector;
>import org.apache.cocoon.environment.SourceResolver;
>import org.apache.cocoon.acting.*;
>import org.apache.cocoon.environment.Request;
>import org.apache.cocoon.environment.ObjectModelHelper;
>import org.apache.cocoon.environment.Session;
>import org.apache.cocoon.environment.Context;
>
>// Schematron classes
>//import org.apache.cocoon.validation.SchemaFactory;
>//import org.apache.cocoon.validation.Schema;
>//import org.apache.cocoon.validation.Validator;
>//import org.apache.cocoon.validation.Violation;
>
>// Cocoon XMLForm
>import org.apache.cocoon.acting.AbstractXMLFormAction;
>import org.apache.cocoon.components.xmlform.Form;
>import org.apache.cocoon.components.xmlform.FormListener;
>
>
>/**
> * This action demonstrates
> * a relatively complex form handling scenario.
> *
> * @author Heidi Brannan, [EMAIL PROTECTED]
> */
>public class HelloAction
> extends AbstractXMLFormAction
> implements FormListener
>
>{
>
>
> // different form views
> // participating in the wizard
> final String VIEW_HELLO = "hello";
> final String VIEW_SAYHELLO = "sayhello";
>
> // action commands used in the wizard
> final String CMD_START = "start";
> final String CMD_NEXT = "next";
> final String CMD_PREV = "prev";
>
>
> /**
> * The first callback method which is called
> * when an action is invoked.
> *
> * It is called before population.
> *
> *
> * @return null if the Action is prepared to continue.
> * an objectModel map which will be immediately returned by the action.
> *
> * This method is a good place to handle buttons with Cancel
> * kind of semantics. For example
> * <pre>if getCommand().equals("Cancel") return page("input");</pre>
> *
> */
> protected Map prepare()
> {
>
> if ( getCommand() == null )
> {
> return page( VIEW_HELLO );
> }
> else if ( getCommand().equals( CMD_START ) )
> {
> // reset state by removing old form
> // if one exists
> Form.remove( getObjectModel(), getFormId() );
> getForm().addFormListener( this );
>
> return page( VIEW_HELLO );
> }
>
>
> // get ready for action
> // if not ready return page("whereNext");
> return null;
> }
>
>
> /**
> * Invoked after form population
> *
> * Semanticly similar to Struts Action.perform()
> *
> * Take appropriate action based on the command
> *
> */
> public Map perform ()
> {
>
> // get the actual model which this Form encapsulates
> // and apply additional buziness logic to the model
> HelloBean jBean = (HelloBean) getForm().getModel();
> //jBean.incrementCount();
>
> // set the page control flow parameter
> // according to the validation result
> if ( getCommand().equals( CMD_NEXT ) &&
> getForm().getViolations () != null )
> {
> // errors, back to the same page
> return page( getFormView() );
> }
> else
> {
> // validation passed
> // continue with control flow
>
> // clear validation left overs in case the user
> // did not press the Next button
> getForm().clearViolations();
>
> // get the user submitted command (through a submit button)
> String command = getCommand();
> // get the form view which was submitted
> String formView = getFormView();
>
> // apply control flow rules
> if ( formView.equals ( VIEW_HELLO ) ) {
> if ( command.equals( CMD_NEXT ) ) {
> return page( VIEW_SAYHELLO );
> }
> } else if ( formView.equals ( VIEW_SAYHELLO ) ) {
> if ( command.equals( CMD_NEXT ) ) {
> return page( VIEW_HELLO );
> } if ( command.equals( CMD_PREV ) ) {
> return page( VIEW_HELLO );
> }
> }
> }
>
> // should never reach this statement
> return page( VIEW_HELLO );
>
> }
>
> /**
> *
> * FormListener callback
> * called in the beginning Form.populate()
> * before population starts.
> *
> * This is the place to handle unchecked checkboxes.
> *
> */
> public void reset( Form form )
> {
>
> }
>
>
> /**
> * FormListener callback
> *
> * Invoked during Form.populate();
> *
> * It is invoked before a request parameter is mapped to
> * an attribute of the form model.
> *
> * It is appropriate to use this method for filtering
> * custom request parameters which do not reference
> * the model.
> *
> * Another appropriate use of this method is for graceful filtering of
>invalid
>
> * values, in case that knowledge of the system state or
> * other circumstainces make the standard validation
> * insufficient. For example if a registering user choses a username which
> * is already taken - the check requires database transaction, which is
> * beyond the scope of document validating schemas.
> * Of course customized Validators can be implemented to do
> * this kind of domain specific validation
> * instead of using this method.
> *
> *
> * @return false if the request parameter should not be filtered.
> * true otherwise.
> */
> public boolean filterRequestParameter (Form form, String parameterName)
> {
> // TBD
> return false;
> }
>
>
> public String getFile( String FileName ) {
> try
> {
> final String FILE_PREFIX = "file:";
> String path = getSourceResolver().resolve(FileName).getSystemId();
> if(path.startsWith(FILE_PREFIX))
> path = path.substring(FILE_PREFIX.length());
> return path;
> }
> catch(Exception e)
> {
> getLogger().error("could not read mapping file",e);
> return null;
> }
> }
>
> //private Validator validator_ = null;
> private boolean initialized_ = false;
>
>}
>
>And here is my bean:
>
>import java.util.Set;
>import java.util.HashSet;
>import java.util.List;
>import java.util.ArrayList;
>
>/**
> *
> * A sample JavaBean used as a Form model.
> *
> */
>
>public class HelloBean
>{
> private String firstname = "John";
> private String lastname = "Doe";
>
> public HelloBean ()
> {
>
> }
>
> public String getFirstName() {
> return firstname;
> }
>
> public void setFirstName(String newFirstName) {
> firstname = newFirstName;
> }
>
> public String getLastName() {
> return lastname;
> }
>
> public void setLastName(String newLastName) {
> lastname = newLastName;
> }
>
>}
>
>-Andy
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, email: [EMAIL PROTECTED]
>
>
>
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, email: [EMAIL PROTECTED]
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]