=head1 NAME FormMagick FAQ - Frequently asked questions about FormMagick =head1 HOW DO I... =head2 How do I check that my XML is valid? In theory, you validate it against the DTD provided with the FormMagick distribution, using a suitable XML validation tool. Unfortuneately we haven't found one yet, but when we do we'll write a script and distribute it with FormMagick. =head2 How do I customise the look and feel of my forms? Use cascading style sheets. Take a look at the HTML source output by FormMagick, and you'll see that most things have a "label" attribute to make CSS easier. =head2 How do I make my own validation routines? Simply create a routine in your CGI script which accepts the data to validate as an argument. Have it return "OK" on success or a detailed error message on failure. sub my_validation { my $data = shift; if ($data =~ /$some_pattern/) { return "OK"; } else { return "That looks wrong to me."; } } =head2 How do I add translations into another language? Use the C element in your XML. =head2 How do I do extra processing when a user clicks "Next"? Use a C on the C element. Create a subroutine that does what you want: sub process_credit_card { my $cgi = shift; my $cardnum = $cgi->param("cardnum"); my $response = do_processing($cardnum); print "

$response

"; } =head2 How do I choose which page to go to based on user input? Use a C and set the value of the "wherenext" CGI parameter: sub my_post_page_event { my $cgi = shift; if ($cgi->param("foo") eq "bar") { $cgi->param(-name => "wherenext", -value => "GoToThisPageName") } elsif ($cgi->param("had_enough") eq "Yes") { $cgi->param(-name => "wherenext", -value => "Finish") } } =head1 TROUBLESHOOTING =head2 General troubleshooting tips Try turning on debugging: $f->debug(1); This will print out general debugging messages to the web page. =head2 Why isn't my data preserved from one page to the next? You probably need to make your C directory writable and executable by the web server. Either: chown www session-tokens (assuming your webserver runs as the www user) chmod 700 session-tokens Or... chmod 777 session-tokens Note that the latter allows anyone on the system to write to this directory, and is a greater security risk than the former method.