xml-general-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stev...@apache.org
Subject cvs commit: xml-site/targets/forrest/community/howto/xmlform howto-xmlform.html revision-howto-xmlform-2002-05-20.html revision-howto-xmlform-2002-05-25.html revision-step1-2002-05-20.html step1.html step2.html step3.html step4.html step5.html
Date Fri, 12 Jul 2002 10:33:08 GMT
stevenn     2002/07/12 03:33:08

  Added:       targets/forrest/community/howto index.html
               targets/forrest/community/howto/bugzilla-patch
                        howto-bugzilla-patch.html
               targets/forrest/community/howto/bugzilla-patch/images
                        group-logo.gif project-logo.gif
               targets/forrest/community/howto/bugzilla-patch/my-images
                        bugzilla-screen.gif
               targets/forrest/community/howto/bugzilla-patch/skin/images
                        chapter.gif chapter_open.gif current.gif label.gif
                        menu-left.gif menu-right.gif page.gif
                        search-left.gif search-right.gif spacer.gif
                        tab-left.gif tab-right.gif tabSel-left.gif
                        tabSel-right.gif
               targets/forrest/community/howto/cvs-ssh howto-cvs-ssh.html
               targets/forrest/community/howto/xmlform howto-xmlform.html
                        revision-howto-xmlform-2002-05-20.html
                        revision-howto-xmlform-2002-05-25.html
                        revision-step1-2002-05-20.html step1.html
                        step2.html step3.html step4.html step5.html
  Log:
  update forrest website - more to come
  
  Revision  Changes    Path
  1.1                  xml-site/targets/forrest/community/howto/index.html
  
  Index: index.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>How-To Samples overview</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-To Samples</font>
  <ul>
      
  <li>
  <a href="v10/howto-v10.html">Single Page</a>
  </li>
      
  <li>
  <a href="xmlform/howto-xmlform.html">Multi-Page</a>
  </li>
      
  <li>
  <a href="bugzilla-patch/howto-bugzilla-patch.html">With Images</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">Committers</font>
  <ul>
      
  <li>
  <a href="cvs-ssh/howto-cvs-ssh.html">CVS through SSH</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>How-To Samples overview</h1>
  <p>
  <font size="-2">by&nbsp;Diana Shannon</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10013">Status of DTD and stylesheet development</a>
  </li>
  <li>
  <a href="#N10022">Sample How-Tos</a>
  </li>
  <li>
  <a href="#N1003D">Real How-Tos</a>
  </li>
  </ul>
      
  <a name="N10013"></a>
  <h3>Status of DTD and stylesheet development</h3>
  <p>
         The structure and presentation of the How-To documents are under
         development. The following documents and the associated DTDs,
         stylesheets, and sitemap matches, are under constant change.
         The content of these documents is just sample content and may not
         even apply to Forrest. Over time, these samples will change so that
         they are applicable to any project.
        </p>
  <p>
         We are also conducting an experiment with feedback integration.
         Go to the bottom of the Multi-page sample to see the revisions which
         are automatically appended by the sitemap during 'build docs'.
         Any snippet document with the filename
         <code>revision-howto-xmlform-YYYY-MM-DD.xml</code> is appended to the
         main page.
        </p>
  
      
  <a name="N10022"></a>
  <h3>Sample How-Tos</h3>
  <p>
  These are demonstration documents to help with the current development work
  on the howto-v10 DTD and stylesheets. Please help to correct any deficiency.
  </p>
  <ul>
  
  <li>
  <a href="v10/howto-v10.html">Single Page How-To</a>
  </li>
  
  <li>
  <a href="xmlform/howto-xmlform.html">Multi-Page How-To with Revisions</a>
  </li>
  
  <li>
  <a href="bugzilla-patch/howto-bugzilla-patch.html">How-To with Images</a>
  </li>
    
  </ul>
  
      
  <a name="N1003D"></a>
  <h3>Real How-Tos</h3>
  <p>
  Even though the howto-v10 DTD is not yet stable, some important How-To
  documents are being developed now. Over time this community/howto/ area will
  grow and the samples will go away.
  </p>
  <ul>
  
  <li>
  <a href="cvs-ssh/howto-cvs-ssh.html">CVS through SSH</a>
  </li>
    
  </ul>
    
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/howto-bugzilla-patch.html
  
  Index: howto-bugzilla-patch.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>How to Contribute a Patch via Bugzilla</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>How to Contribute a Patch via Bugzilla</h1>
  <p>
  <font size="-2">by&nbsp;David Crossley</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10016">Overview</a>
  </li>
  <li>
  <a href="#N1001A">Intended Audience</a>
  </li>
  <li>
  <a href="#N10024">Prerequisites</a>
  </li>
  <li>
  <a href="#N10037">Steps</a>
  <ul class="minitoc">
  <li>
  <a href="#N10042">1. Create your Bugzilla Account</a>
  </li>
  <li>
  <a href="#N1004E">2. Enter a new bug report</a>
  </li>
  <li>
  <a href="#N100E8">3. Send the patch report</a>
  </li>
  <li>
  <a href="#N100FA">4. Create an attachment of the actual patch</a>
  </li>
  <li>
  <a href="#N10133">5. Submit the attachment</a>
  </li>
  <li>
  <a href="#N10142">6. Be patient</a>
  </li>
  <li>
  <a href="#N1014B">7. Add more description or attachments if necessary</a>
  </li>
  <li>
  <a href="#N10154">8. Adding subsequent patches to the same document or program</a>
  </li>
  </ul>
  </li>
  <li>
  <a href="#N1015D">Real World Extension</a>
  </li>
  <li>
  <a href="#N10164">Tips</a>
  <ul class="minitoc">
  <li>
  <a href="#N10168">Setting user preferences</a>
  </li>
  <li>
  <a href="#N10171">Review the bugzilla documentation</a>
  </li>
  <li>
  <a href="#N1017A">Search Bugzilla</a>
  </li>
  </ul>
  </li>
  <li>
  <a href="#N10183">References</a>
  </li>
  <li>
  <a href="#N10194">Revisions</a>
  </li>
  </ul>
  <a name="N10016"></a>
  <h3>Overview</h3>
  <a name="N1001A"></a>
  <h3>Intended Audience</h3>
  <p>
  This document is meant for first-time users of Bugzilla.
  The web interface can be daunting, so this concise explanation will help
  you to start. After your first patch submission, you can proceed to make more
  substantial contributions.
  </p>
  <p> 
  As our example we use the contribution of a simple documentation patch for
  the Apache Cocoon project. The principles apply to any project.
  </p>
  <a name="N10024"></a>
  <h3>Prerequisites</h3>
  <p>
  Bugzilla contributors should:
  </p>
  <ul>
  
  <li>Understand what a Patch is and how to make one.
  
  Note that a new complete document is still just a "patch",
  though it does need separate treatment to a normal "diff".
  </li>
  
  <li>Understand that Bugzilla is the Apache Bug Database. Bugzilla does not
  distinguish between a Bug report, a Patch submission, and an Enhancement suggestion. They are all <em>"Bugs"</em> as far as Bugzilla is concerned.
  </li>
  
  </ul>
  <a name="N10037"></a>
  <h3>Steps</h3>
  <p>
  Here is how to proceed. Go to
  <a target="_blank" href="http://nagoya.apache.org/bugzilla/">Bugzilla</a>
  in another browser window.
  </p>
  <a name="N10042"></a>
  <h4>1. Create your Bugzilla Account</h4>
  <p>
  Follow the link the home page to "Open a new Bugzilla account".
  Do not worry, you will not be sent spam email nor bombarded with advertisements
  by setting up this account. It is purely a workgroup tool.
  </p>
  <p>
  Note that you can conduct queries in Bugzilla and review submissions without
  having an account. However, to make a contribution you must have an account.
  This ensures legitimacy. It also enables the system to send you
  email automatically when your patch is applied by a Cocoon committer.
  </p>
  <a name="N1004E"></a>
  <h4>2. Enter a new bug report</h4>
  <p>
  Follow the "Enter a new bug report" link from the Bugzilla home page. First,
  you will be asked to select the relevant project ... choose Cocoon 2 of course.
  Next, you will be asked to provide your account details. Following that, you
  will be presented an input form for the various details ...
  </p>
  <p>
  <img src="my-images/bugzilla-screen.gif" alt="Bugzilla Screen" height="342" width="479"></p>
  <a name="N1005D"></a>
  <h4>Specify Version</h4>
  <p>
  This is the version of Cocoon that you prepared your patch against. Choose
  <code>Current CVS</code> if you have an up-to-date local working copy
  of HEAD branch or a very recent nightly build. Otherwise choose the relevant
  release version. This is a very important step, as you will confuse the
  committer if your changes do not match the repository. If you are unsure, then
  please say so in the description at step 12.
  </p>
  <a name="N10069"></a>
  <h4>Specify Component</h4>
  <p>
  Follow the "Component" link for description of the available
  components. If you do not know which component is relevant, then just use
  <code>core</code>.
  </p>
  <a name="N10075"></a>
  <h4>Specify Platform</h4>
  <p>
  This is really meant for bug reporting. Perhaps it could be relevant for a
  patch. You would usually specify the <code>All</code> option.
  </p>
  <a name="N10081"></a>
  <h4>Specify Operating System (OS)</h4>
  <p>
  Really meant for bug reporting. Perhaps it could be relevant for a patch.
  You would usually specify the <code>All</code> option.
  </p>
  <a name="N1008D"></a>
  <h4>Specify Severity</h4>
  <p>
  The impact that would arise if your patch is not applied. For a documentation
  patch, the severity would usually be the default <code>Normal</code>.
  However, if it addressed some serious lack or fixed a misguided configuration
  statement, then the impact could be <code>major</code>.
  </p>
  <p>
  
  
  (The <code>enhancement</code> option would not be used for a patch, as it is
  intended for suggesting something that should be done. Use this option wisely.
  It would be better to discuss it on the mailing list first.)
  </p>
  <a name="N100A2"></a>
  <h4>Specify Initial State</h4>
  <p>
  Use the <code>New</code> option.
  </p>
  <a name="N100AE"></a>
  <h4>Specify Assigned To</h4>
  <p>
  Leave it blank. Your patch will be automatically assigned to the
  <code>cocoon-dev</code> mailing list. When a committer takes on your patch,
  that committer will assign the bug to their own email address. This pevents
  duplication of effort by other committers.
  </p>
  <p>
  The Cc field can be used if you need the bug reports, and any follow-up, to be
  copied to some other person. Remember that your report will be sent
  automatically to the <code>cocoon-dev</code> mailing list, so you do not need
  to Cc anyone there.
  </p>
  <a name="N100C0"></a>
  <h4>Specify URL</h4>
  <p>
  If the patch refers to a particular document, then provide the website URL.
  If it refers to an issue with one of the local Cocoon Samples, then provide
  the localhost URL.
  </p>
  <a name="N100C9"></a>
  <h4>Carefully choose the Summary</h4>
  <p>
  The summary will become the all-important title of the bug. Use it wisely. You want
  to draw attention to your patch. Just as with posting email to the listervers,
  choosing a poor title may cause your posting to be easily overlooked.
  Use up all the characters available ... about 60 maximum.
  </p>
  <p>
  Start the Summary with the <code>[PATCH]</code> tag. This will ensure that it
  is included in the Cocoon automated patch queue summary posted to the mailing
  lists. The patch queue summary reminds people what patches are pending. If you
  omit this tag, then your patch may easily be overlooked.
  </p>
  <a name="N100D8"></a>
  <h4>Description</h4>
  <p>
  Provide a brief explanation of what your patch does. Supply any instructions
  to help the committer apply your patch efficiently. Note any issues that may
  remain. It may help to list each file that you are submitting and briefly
  describe what it is. A committer will need to provide a descriptive log message
  when committing your work. Providing a clear description here will help them.
  </p>
  <p>
  Consider writing the Description and Summary text before you start entering
  your patch report. You could save it in a local text file beforehand and
  then copy-and-paste it when the time comes.
  </p>
  <p>
  
  If this were a bug report, then it would need extensive description.
  </p>
  <a name="N100E8"></a>
  <h4>3. Send the patch report</h4>
  <p>
  Review your options, then press the <strong>Commit</strong> button. This will
  add an entry to the bug database and email a report to the 
  <code>cocoon-dev</code> mailing list and a copy to you. Your submission will be
  assigned a unique Bug Number which you can use to review its progress.
  </p>
  <p>
  The next steps will show you how to attach your patch to the report that you
  have just created ...
  </p>
  <a name="N100FA"></a>
  <h4>4. Create an attachment of the actual patch</h4>
  <p>
  You will be presented with a status screen saying that your bug report
  was accepted and that email was sent to <code>cocoon-dev</code> mailing list.
  </p>
  <p>
  Now you have a choice ... proceed to review your bug report by selecting the
  link "Back to Bug #XXXXX". If you forgot to mention something,
  then you can add more comments. From that screen, follow the link
  "Create a new attachment".
  Otherwise follow the link from this status screen to "Attach a file to
  this bug".
  </p>
  <a name="N10108"></a>
  <h4>Specify the file to be uploaded</h4>
  <p>
  Provide the local pathname to your patchfile, e.g.
  <code>/home/me/work/cocoon/patch/howto-bugzilla.tar.gz</code>
  
  </p>
  <a name="N10114"></a>
  <h4>Describe the attachment</h4>
  <p>
  Provide a concise one line description, e.g.
  <code>Gzipped TAR archive with new docs and diffs</code>
  
  </p>
  <a name="N10120"></a>
  <h4>Specify the contentType of the attachment</h4>
  <p>
  If it is a Gzipped TAR archive (*.tar.gz) or a .zip archive, then select
  "<code>Binary file (application/octet-stream)</code>".
  If it is just a single xml document, then select
  "<code>Plain text (text/plain)</code>".
  If the patch is just a single diff file, then select
  "<code>Patch file (text/plain, diffs)</code>".
  </p>
  <a name="N10133"></a>
  <h4>5. Submit the attachment</h4>
  <p>
  When you are ready, press the <strong>Submit</strong> button. As for Step 3,
  you will be presented with a status screen saying that your attachment
  was accepted and that email was sent to <code>cocoon-dev</code> mailing list.
  </p>
  <a name="N10142"></a>
  <h4>6. Be patient</h4>
  <p>
  Now your patch will wait inside Bugzilla until one of the Cocoon committers
  assigns the patch to their own email address and starts to process it to apply
  it to the master CVS repository. As the registered owner of the Bug, you will
  be sent an automatic email at each of these stages.
  </p>
  <a name="N1014B"></a>
  <h4>7. Add more description or attachments if necessary</h4>
  <p>
  Until the patch is applied by the committer and the Bug report is closed, you
  can still add more to your bug report. However, only do this when
  absolutely necessary because the patch should not be
  changing while the committer is trying to commit it. If you just want to make
  further changes, then it would be better to wait until your patch is
  applied. Then you can make a new patch. Remember that the committer has full
  veto and may decide to make some slight modifications to your patch. So it
  is far better to wait.
  </p>
  <a name="N10154"></a>
  <h4>8. Adding subsequent patches to the same document or program</h4>
  <p>
  If you want to make more patches to the same file, then please open a new Bug
  rather than re-open the old one. After all, once the original patch is
  applied by the committer, its corresponding Bug report is closed.
  </p>
  <a name="N1015D"></a>
  <h3>Real World Extension</h3>
  <p>Contributing patches, in the form of documentation or code, is a vital way to give back to the Cocoon community. For example, you might consider contributing a timely patch in the form of a new FAQ, how-to, or tutorial. Or, you may also consider submitting a patch which updates Cocoon's existing user and developer guides. </p>
  <a name="N10164"></a>
  <h3>Tips</h3>
  <a name="N10168"></a>
  <h4>Setting user preferences</h4>
  <p>
  You can configure certain preferences, though the Bugzilla defaults work just
  fine.
  </p>
  <a name="N10171"></a>
  <h4>Review the bugzilla documentation</h4>
  <p>
  There are various explanations of terminology and procedures ... follow the
  links should you need to know more.
  </p>
  <a name="N1017A"></a>
  <h4>Search Bugzilla</h4>
  <p>
  Bugzilla has a very powerful search interface. Now that you have a login
  account, Bugzilla can remember customized queries which you can run with a
  single click.
  </p>
  <a name="N10183"></a>
  <h3>References</h3>
  <ul>
  
  <li>
  Bugzilla is at 
  <a href="http://nagoya.apache.org/bugzilla/">http://nagoya.apache.org/bugzilla/</a>
  
  </li>
  
  <li>
  Helpful Bug Writing Guidelines are available directly from the
  Bug entry interface.
  </li>
    
  </ul>
  <a name="N10194"></a>
  <h3>Revisions</h3>
  <p>Find a problem with this document? Consider contacting the author or submitting your own revision. For instructions, read the How To Submit a Revision.</p>
  <ul></ul>
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/images/group-logo.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/images/project-logo.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/my-images/bugzilla-screen.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/chapter.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/chapter_open.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/current.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/label.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/menu-left.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/menu-right.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/page.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/search-left.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/search-right.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/spacer.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/tab-left.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/tab-right.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/tabSel-left.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/bugzilla-patch/skin/images/tabSel-right.gif
  
  	<<Binary file>>
  
  
  1.1                  xml-site/targets/forrest/community/howto/cvs-ssh/howto-cvs-ssh.html
  
  Index: howto-cvs-ssh.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>CVS through SSH</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>CVS through SSH</h1>
  <p>
  <font size="-2">by&nbsp;John Morrison,&nbsp;Konstantin Piroumian</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N1001D">Overview</a>
  </li>
  <li>
  <a href="#N10021">Intended audience</a>
  </li>
  <li>
  <a href="#N10028">Purpose</a>
  </li>
  <li>
  <a href="#N1002F">Prerequisites</a>
  </li>
  <li>
  <a href="#N1004F">Steps</a>
  <ul class="minitoc">
  <li>
  <a href="#N10056">Terms</a>
  </li>
  <li>
  <a href="#N10079">Setting up domain users</a>
  </li>
  <li>
  <a href="#N100A3">Setting up SSH access</a>
  </li>
  <li>
  <a href="#N100BA">Setting up passphrase access</a>
  </li>
  <li>
  <a href="#N100DD">Getting the project from CVS</a>
  </li>
  <li>
  <a href="#N100ED">How to setup WinCVS</a>
  </li>
  <li>
  <a href="#N10120">References</a>
  </li>
  </ul>
  </li>
  <li>
  <a href="#N10140">Revisions</a>
  </li>
  </ul>
  <a name="N1001D"></a>
  <h3>Overview</h3>
  <a name="N10021"></a>
  <h3>Intended audience</h3>
  <p>This How-to is aimed at developers who have been granted committer access to CVS repositories for particular projects.</p>
  <a name="N10028"></a>
  <h3>Purpose</h3>
  <p> 
                Using SSH to access CVS repositories is recommended for security reasons. By configuring CVS to work with remote repository using private/public SSH keys you'll be able to run CVS commands without a need to enter your password every time you need access to CVS through SSH.
          </p>
  <a name="N1002F"></a>
  <h3>Prerequisites</h3>
  <ul>
              
  <li>Account on the local machine.</li>
              
  <li>Commiter access to the project(s). <em>This also imply having account on the CVS host machine.</em>
  </li>        
              
  <li>Cygwin - a Unix environment for Windows systems. You can get it <a href="http://www.redhat.com/software/tools/cygwin/">here</a>. <em>Not required for Linux/*nix users.</em>
  </li>
              
  <li>A CVS GUI application (for Windows users only), e.g. WinCVS. <em>It is not required, but can be very useful.</em>
  </li>
          
  </ul>
  <div class="frame note">
  <div class="label">Note</div>
  <div class="content">If you are behind a firewall check that you can communicate through the 22 port. For anonymous access you will need 2401 one.</div>
  </div>
  <a name="N1004F"></a>
  <h3>Steps</h3>
  <p>How to proceed.</p>
  <a name="N10056"></a>
  <h4>Terms</h4>
  <dl>
          
  <dt>SSH</dt>
          
  <dd>Secure Shell. See <a href="http://www.openssh.org">OpenSSH</a>
  </dd>
          
  <dt>CVS</dt>
          
  <dd>Concurrent Version System See <a href="http://www.cvshome.org">CVS Home Page</a>
  </dd>
           
  </dl>
  <div class="frame note">
  <div class="label">Note</div>
  <div class="content">
  <strong>$</strong> represents local, <strong>%</strong> remote machine.</div>
  </div>
  <a name="N10079"></a>
  <h4>Setting up domain users</h4>
  <div class="frame note">
  <div class="label">Note</div>
  <div class="content">This step is necessary only for Windows users. Linux users can happily skip this section and pass to <a href="#ssh_access">Setting up SSH access</a> section</div>
  </div>
  <p>If you are a domain user then you should be added to Cygwin users list (See <code>[cygwin-dir]/etc/passwd</code>). 
              </p>
  <ul>
                
  <li>Start Cygwin, then enter following commands:</li>
              
  </ul>
  <pre class="code">
  $ whoami
  administrator
  $ mkgroup -d &gt; /etc/group
  $ mkpasswd -d | grep 'userxxx' &gt;&gt; /etc/passwd
  $ exit
      </pre>
  <div class="frame note">
  <div class="label">Note</div>
  <div class="content">Replace 'userxxx' by your account name</div>
  </div>
  <ul>
        
  <li>Start Cygwin/shell again and check that everything's Ok:</li>
      
  </ul>
  <pre class="code">
  $ whoami
  userxxx
              </pre>
  <a name="N100A3"></a><a name="ssh_access"></a>
  <h4>Setting up SSH access</h4>
  <p>Start Cygwin/shell, then enter:</p>
  <pre class="code">
  $ ssh-user-config
    Shall I create an SSH1 RSA identity file for you? (yes/no) no
    Shall I create an SSH2 RSA identity file for you? (yes/no)  (yes/no) no
    Shall I create an SSH2 DSA identity file for you? (yes/no)  (yes/no) yes
    Generating /home/userxxx/.ssh/id_dsa
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Do you want to use this identity to login to this machine? (yes/no) yes
    Adding to /home/userxxx/.ssh/authorized_keys2
    
    Configuration finished. Have fun!
      </pre>
  <p>
        Now you have configured SSH on your machine. Next you have to setup access to the CVS machine.
      </p>
  <div class="frame warning">
  <div class="label">Warning</div>
  <div class="content">Having an empty passphrase isn't recommended for security reasons. See <code>ssh-agent</code> documentation on how to configure automatic passphrase retaining.</div>
  </div>
  <a name="N100BA"></a>
  <h4>Setting up passphrase access</h4>
  <p>Perform the following:</p>
  <pre class="code">
  $ scp ~/.ssh/id_dsa.pub userxxx@cvs.apache.org:.
  $ ssh -l userxxx -L 2401:localhost:2401 cvs.apache.org
  $ mkdir ~/.ssh
  % cat ~/id_dsa.pub &gt;&gt; ~/.ssh/authorized_keys2
  % rm ~/id_dsa.pub
  % chmod 600 ~/.ssh/*
  % exit            
              </pre>
  <div class="frame note">
  <div class="label">Note</div>
  <div class="content">Note, that the account name on CVS machine can differ from your local account name.</div>
  </div>
  <p>
              Check that your configuration is correct:
              </p>
  <pre class="code">
  $ ssh userxxx@cvs.apache.org
              </pre>
  <div class="frame note">
  <div class="label">Note</div>
  <div class="content">If this command doesn't work then it can mean that you have an old version of SSH. In this case try <code>ssh -l userxxx cvs.apache.org</code>. Run <code>ssh --help</code> to get all available options.</div>
  </div>
  <p>
              If now you are logged in to the to the CVS machine without entering the password then everything's Ok.
              </p>
  <a name="N100DD"></a>
  <h4>Getting the project from CVS</h4>
  <p>Now you are ready to get a project from CVS using SSH connection.</p>
  <p>E.g. how it is done using Cygwin/shell</p>
  <pre class="code">
  $ export CVS_RSH=/bin/ssh
  $ cvs -d :ext:userxxx@cvs.apache.org:/home/cvs co xml-cocoon2            
              </pre>
  <a name="N100ED"></a>
  <h4>How to setup WinCVS</h4>
  <ul>
                  
  <li>Add ssh.exe directory to your system PATH environment variable. Say: <br>
                  
  <code>C:\&gt;set PATH=%PATH%;C:\cygwin\bin</code>
  </li>
                  
  <li>Add <code>CVS_RSH=ssh</code> environment variable</li>
              
  </ul>
  <p>
              Start WinCVS, then:
              </p>
  <ul>
                  
  <li>From the main menu select <strong>Admin</strong>
  </li>
                  
  <li>Then select <strong>Preferences</strong>
  </li>
                  
  <li>In the dialog that comes up: <br>
                  Set the CVSROOT to <code>userxxx@cvs.apache.org:/home/cvs</code>
  </li>
                  
  <li>Set the Authentication to SSH Server</li>                
                  
  <li>Click Ok</li>
              
  </ul>
  <a name="N10120"></a>
  <h4>References</h4>
  <p>
                  You can find more on CVS, SSH and WinCVS here:
              </p>
  <ul>
                  
  <li>
  <a href="http://www.cvshome.org">CVS Home Page</a>
  </li>            
                  
  <li>
  <a href="http://www.openssh.org">OpenSSH</a>
  </li>            
                  
  <li>
  <a href="http://www.redhat.com/software/tools/cygwin/">Cygwin Home Page</a>
  </li>            
                  
  <li>
  <a href="http://odin.himinbi.org/wincvs-over-ssh/">WinCVS over SSH</a>
  </li>
              
  </ul>
  <a name="N10140"></a>
  <h3>Revisions</h3>
  <p>Find a problem with this document? Consider contacting the author or submitting your own revision. For instructions, read the How To Submit a Revision.</p>
  <ul></ul>
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/xmlform/howto-xmlform.html
  
  Index: howto-xmlform.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>How to build an XMLForm Wizard</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">XMLForm How-To</font>
  <ul>
      
  <li>
  <span class="sel"><font color="#ffcc00">Intro</font></span>
  </li>
      
  <li>
  <a href="step1.html">Step 1</a>
  </li>
      
  <li>
  <a href="step2.html">Step 2</a>
  </li>
      
  <li>
  <a href="step3.html">Step 3</a>
  </li>
      
  <li>
  <a href="step4.html">Step 4</a>
  </li>
      
  <li>
  <a href="step5.html">Step 5</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>How to build an XMLForm Wizard</h1>
  <p>
  <font size="-2">by&nbsp;Heidi Brannan</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10016">Overview</a>
  </li>
  <li>
  <a href="#N1001A">Intended audience</a>
  </li>
  <li>
  <a href="#N10021">Purpose</a>
  </li>
  <li>
  <a href="#N10028">Prerequisites</a>
  </li>
  <li>
  <a href="#N1004D">Five Steps</a>
  </li>
  <li>
  <a href="#N10070">Real World Extension</a>
  </li>
  <li>
  <a href="#N10090">Tips</a>
  </li>
  <li>
  <a href="#N100B2">Related Resources</a>
  </li>
  <li>
  <a href="#N100E3">Feedback</a>
  </li>
  <li>
  <a href="#N100EE">Revisions</a>
  </li>
  </ul>
  <a name="N10016"></a>
  <h3>Overview</h3>
  <a name="N1001A"></a>
  <h3>Intended audience</h3>
  <p>This How-To is aimed at users who have developed an understanding of the basics of Cocoon and wish to incorporate dynamic and self validating forms into their sites. You will need to understand and be familiar with XML, XSL, HTML, XPath, JXPath, actions, action sets, cocoon-form format, Java, XForms. If you are unfamiliar with these technologies it is advised that you learn these concepts first.</p>
  <a name="N10021"></a>
  <h3>Purpose</h3>
  <p>You will be able to automate two-way mapping between their HTML forms, XML and JavaBeans. The XML schema language is used to validate the form input. The forms can display different options depending on the users previous input.  For example if a user ticks the checkbox to say they are interest in Cooking then they will later have the option to join Cookery mailing lists. If they did not tick the Cookery box they will not see the cookery mailing lists page.</p>
  <a name="N10028"></a>
  <h3>Prerequisites</h3>
  <p>Configuration requirements:</p>
  <ul> 
               
  <li>A servlet engine such as Tomcat.</li>
               
  <li>JDK 1.2 or later</li>
               
  <li>Cocoon 2.0.2 CVS with scratchpad to be installed with the command: 
                    build webapp -Dinclude.webapp.libs=true -Dinclude.scratchpad.libs=true webapp
               </li>
           
  </ul>
  <p>Requisite skills:</p>
  <ul> 
               
  <li>basic Cocoon concepts, including Cocoon actions</li>
               
  <li>XML, XSL, HTML</li>
               
  <li>Java, JavaBeans</li>
               
  <li>XForms, XPath, JXPath</li>
           
  </ul>
  <a name="N1004D"></a>
  <h3>Five Steps</h3>
  <p>Now you want to know how to create your own forms using the Wizard.  Below are the steps you can follow:</p>
  <ul>
         
  <li>
  <a href="step1.html">Step 1: XML forms</a>
  </li>
         
  <li>
  <a href="step2.html">Step 2: Validation</a>
  </li>
         
  <li>
  <a href="step3.html">Step 3: JavaBean</a>
  </li>
         
  <li>
  <a href="step4.html">Step 4: HowtoWizardAction.java</a>
  </li>
         
  <li>
  <a href="step5.html">Step 5: Sitemap</a>
  </li>
       
  </ul>
  <a name="N10070"></a>
  <h3>Real World Extension</h3>
  <p>Now you have created the Mailing list forms you should know which files are needed to create your own validating forms. The possibities are endless now that you can add dynamic forms to your Cocoon run site. </p>
  <ul>
         
  <li>A simple shopping cart could be created using an XML database such as <a href="http://xml.apache.org/xindice/">Xindices</a>.</li>
         
  <li>Your site can now become more personalised and interactive for your visitors.  They can create their own login details and set their own preferences with a few simple forms.  Making your web site a home from home for them. </li>
         
  <li>You can now run surveys and tests from your site</li> 
         
  <li>Add a voting system for new features to be added on your site</li>
         
  <li>A suggestions/ feedback form</li>
         
  <li>A simple form asking for more information to be sent regarding your products</li>
       
  </ul>
  <a name="N10090"></a>
  <h3>Tips</h3>
  <p>If you have a problem running the example given you can try the following tips:</p>
  <ul>
          
  <li>Check the logs sometimes they have more information than displayed in your browser.</li>
          
  <li>Check the mail archives at <a href="http://marc.theaimsgroup.com">MARC: Mailing list ARChives at AIMS</a> as the chances are somebody else has had a similar problem too!</li>        
          
  <li>Email <a href="mailto:heidi@kutcha.org">me</a> I will try to help you. Again please send the entire error message and all relevant information.  Please use the title "XMLForm Help" in your emails.</li>
          
  <li>Try the <a href="http://xml.apache.org/cocoon/mail-lists.html">Cocoon users mail list</a> and remember to post the whole error message and try to supply all relevant information for a quick reply.</li>
       
  </ul>
  <a name="N100B2"></a>
  <h3>Related Resources</h3>
  <p>Cocoon resources</p>
  <ul>
          
  <li>For all Cocoon basics see the <a href="http://xml.apache.org/cocoon">Cocoon Web site</a>.</li>
          
  <li>For actions take a look at the <a href=" http://xml.apache.org/cocoon/userdocs/concepts/actions.html">actions page</a>. Actions are Avalon Components, so you may want to read Avalon's Whitepaper for more information.</li>
         
  </ul>
  <p>XPath is simple to learn and the basis of JXPath.</p>
  <ul>
          	
  <li>The W3C has a clear and simple <a href="http://www.w3schools.com/xpath/">tutorial</a>.</li>
        
  </ul>
  <p>JXPath is now at beta stage and is based on XPath.</p>
  <ul>
          	
  <li>To learn more vist the home of <a href="http://jakarta.apache.org/commons/jxpath">JXPath</a>
  </li>
  		
  </ul>
  <a name="N100E3"></a>
  <h3>Feedback</h3>
  <p>Needless to say this How-To was written with no intentional mistakes or errors but if you find any faults or can see any improvements, please email me, <a href="mailto:heidi@kutcha.org">Heidi</a> with them. I will do my upmost to keep this HowTo uptodate and error free.</p>
  <a name="N100EE"></a>
  <h3>Revisions</h3>
  <p>Find a problem with this document? Consider contacting the author or submitting your own revision. For instructions, read the How To Submit a Revision.</p>
  <ul>
  <li>Revision, <a href="revision-howto-xmlform-2002-05-20.html">2002-07-12 12:05</a>
  </li>
  <li>Revision, <a href="revision-howto-xmlform-2002-05-25.html">2002-07-12 12:05</a>
  </li>
  </ul>
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/xmlform/revision-howto-xmlform-2002-05-20.html
  
  Index: revision-howto-xmlform-2002-05-20.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Sample Revision</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">XMLForm How-To</font>
  <ul>
      
  <li>
  <a href="howto-xmlform.html">Intro</a>
  </li>
      
  <li>
  <a href="step1.html">Step 1</a>
  </li>
      
  <li>
  <a href="step2.html">Step 2</a>
  </li>
      
  <li>
  <a href="step3.html">Step 3</a>
  </li>
      
  <li>
  <a href="step4.html">Step 4</a>
  </li>
      
  <li>
  <a href="step5.html">Step 5</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>Sample Revision</h1>
  <p>
  <font size="-2">by&nbsp;Motivated User</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10013">Some text here</a>
  </li>
  </ul>
      
  <a name="N10013"></a>
  <h3>Some text here</h3>
  <p>There is a problem with this approach</p>
  <ul>
          
  <li>Problem A.</li>
          
  <li>Problem B.</li>
        
  </ul>
    
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/xmlform/revision-howto-xmlform-2002-05-25.html
  
  Index: revision-howto-xmlform-2002-05-25.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Another Sample Revision</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">XMLForm How-To</font>
  <ul>
      
  <li>
  <a href="howto-xmlform.html">Intro</a>
  </li>
      
  <li>
  <a href="step1.html">Step 1</a>
  </li>
      
  <li>
  <a href="step2.html">Step 2</a>
  </li>
      
  <li>
  <a href="step3.html">Step 3</a>
  </li>
      
  <li>
  <a href="step4.html">Step 4</a>
  </li>
      
  <li>
  <a href="step5.html">Step 5</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>Another Sample Revision</h1>
  <p>
  <font size="-2">by&nbsp;Motivated User</font>
  </p>
  
  <p>
  I see that the revision2document.xsl adds a footer to suggest that the
  author should be contacted to make revisions. This is not the opensource way.
  This would create a bottleneck at the author. Community feedback should be
  encouraged to go to the relevant listserver, and patches submitted via Bugzilla.
  </p>
  
  <p>
  The author of the howto also suggests that feedback should go via the author.
  </p>
    
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/xmlform/revision-step1-2002-05-20.html
  
  Index: revision-step1-2002-05-20.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Sample Revision for Step 1</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">XMLForm How-To</font>
  <ul>
      
  <li>
  <a href="howto-xmlform.html">Intro</a>
  </li>
      
  <li>
  <a href="step1.html">Step 1</a>
  </li>
      
  <li>
  <a href="step2.html">Step 2</a>
  </li>
      
  <li>
  <a href="step3.html">Step 3</a>
  </li>
      
  <li>
  <a href="step4.html">Step 4</a>
  </li>
      
  <li>
  <a href="step5.html">Step 5</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>Sample Revision for Step 1</h1>
  <p>
  <font size="-2">by&nbsp;Motivated User</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10013">Other comments</a>
  </li>
  </ul>
      
  <a name="N10013"></a>
  <h3>Other comments</h3>
  <p>There is a problem with this approach</p>
  <ul>
          
  <li>Problem d.</li>
          
  <li>Problem e.</li>
        
  </ul>
    
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/xmlform/step1.html
  
  Index: step1.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>How to build an XMLForm Wizard, Step One</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">XMLForm How-To</font>
  <ul>
      
  <li>
  <a href="howto-xmlform.html">Intro</a>
  </li>
      
  <li>
  <span class="sel"><font color="#ffcc00">Step 1</font></span>
  </li>
      
  <li>
  <a href="step2.html">Step 2</a>
  </li>
      
  <li>
  <a href="step3.html">Step 3</a>
  </li>
      
  <li>
  <a href="step4.html">Step 4</a>
  </li>
      
  <li>
  <a href="step5.html">Step 5</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>How to build an XMLForm Wizard, Step One</h1>
  <p>
  <font size="-2">by&nbsp;Heidi Brannan</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10015">Step One</a>
  <ul class="minitoc">
  <li>
  <a href="#N10025">start.xml</a>
  </li>
  <li>
  <a href="#N10057">register.xml</a>
  </li>
  <li>
  <a href="#N10077">interest.xml</a>
  </li>
  <li>
  <a href="#N1008E">organicGardening.xml</a>
  </li>
  <li>
  <a href="#N1009B">cooking.xml</a>
  </li>
  <li>
  <a href="#N100A8">smallholdingManagement.xml</a>
  </li>
  <li>
  <a href="#N100B5">confirm.xml</a>
  </li>
  <li>
  <a href="#N100C2">end.xml</a>
  </li>
  </ul>
  </li>
  <li>
  <a href="#N100D4">Revisions</a>
  </li>
  </ul>
  <a name="N10015"></a>
  <h3>Step One</h3>
  <p>First we need to create our own forms in XML.</p>
  <ul>
          
  <li>Create a folder called "howto" in src\scratchpad\webapp\mount\xmlform.</li>
          
  <li>Copy the following xml files below and save them in the folder you created.</li>
        
  </ul>
  <a name="N10025"></a>
  <h4>start.xml</h4>
  <p>Below is the first page which you can copy and save as start.xml in the folder src\scratchpad\webapp\mount\xmlform\howto</p>
  <pre class="code">
          
  &lt;?xml version="1.0" ?&gt;
  
  &lt;document&gt;
      &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;
      &lt;table align="center" width="50%" cellspacing="20"&gt;
          &lt;tr&gt;
              &lt;td align="center"&gt;
                  &lt;h1&gt;
                      Welcome to the XLMForm HowTo!
                  &lt;/h1&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
  
          &lt;tr&gt;
              &lt;td align="center" class="info"&gt;
                  &lt;code&gt;
                  The following form allows users to join mailing lists. 
                  They are given a choice of areas of interest. 
                  Depending on their interests they will see a selection of mailing lists which they can sign up to.
                  &lt;/code&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
           
          &lt;tr&gt;
              &lt;td align="center"&gt;
                  &lt;h3&gt;
                      &lt;a href="howto-wizard.html?cocoon-action-start=true"&gt;
                          Start!
                      &lt;/a&gt;
                  &lt;/h3&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/document&gt;
  
  
        </pre>
  <p>The important part to notice is the link: </p>
  <pre class="code">
          
            &lt;a href="howto-wizard.html?cocoon-action-start=true"&gt;
          
        </pre>
  <p>The text between "cocoon-action" and "=true" is passed to the method prepare of HowtoWizardAction.java which we will write soon.</p>
  <p>Next are the actual XML pages that make up the form. These are:</p>
  <ul>
            
  <li>register.xml</li>
            
  <li>interest.xml</li>          
            
  <li>organicGardening.xml</li>
            
  <li>cooking.xml</li>
            
  <li>smallholding.xml</li>
            
  <li>confirm.xml</li>
            
  <li>end.xml</li>          
        
  </ul>
  <a name="N10057"></a>
  <h4>register.xml</h4>
  <p>Register.xml lets the user register their username, password and email address so they can join the mailing lists they will next choose.</p>
  <p>The important part of the form you will need to change in your own forms are inside the xf:form tag. The id attribute value should match the sitemaps xmlform-id parameters value:</p>
  <pre class="code">
        
         &lt;map:parameter name="xmlform-id" value="form-feedback"/&gt;
         
        </pre>
  <p>The view attribute should contain the name of the current xml file, the action attribute should contain the name of the url you are using in the sitemap.</p>
  <p>The caption tag is the page heading. Next we have the error tags which are used if you have a validation set in your sitemap. If an error is found then this will display them when the user clicks the next button on your form.</p>
  <p>Now we see the input options for the user, such as xf:textbox which will display a textbox.  Each such option as a ref attribute which is very important as this is the value we will map to the JavaBean.  If we are validating this input then it must have a violations tag inside it saying which class it belongs to.</p>
  <p>Finally the form needs a submit tag tag.  This lets the user navigate forward to the rest of the form.</p>
  <pre class="code">
          
          &lt;?xml version="1.0" ?&gt;
    
    
    &lt;!-- 
    
      XMLForm instance document for the Cocoon Feedback Wizard.
    
      Original Author: Torsten Curdt, tcurdt@dff.st, March 2002
        Author: Ivelin Ivanov, ivelin@apache.org, April 2002
    
    --&gt;
    
    &lt;document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002"&gt;
    
    
      &lt;xf:form id="form-feedback" view="registration" action="howto-wizard.html"&gt;
    
        &lt;xf:caption&gt;Registration&lt;/xf:caption&gt;    
    
        &lt;error&gt;
          &lt;xf:violations class="error"/&gt;
        &lt;/error&gt;
    
        &lt;xf:textbox ref="/userName"&gt;
            &lt;xf:caption&gt;Last Name&lt;/xf:caption&gt;    
            &lt;xf:violations class="error"/&gt;
        &lt;/xf:textbox&gt;
    
        &lt;xf:textbox ref="/email"&gt;
            &lt;xf:caption&gt;Email&lt;/xf:caption&gt;    
            &lt;xf:violations class="error"/&gt;
        &lt;/xf:textbox&gt;
    
        &lt;xf:password ref="/password"&gt;
            &lt;xf:caption&gt;Password&lt;/xf:caption&gt;
            &lt;xf:violations class="error"/&gt;
        &lt;/xf:password&gt;
    
        &lt;xf:submit id="next" class="button"&gt; 
          &lt;xf:caption&gt;Next&lt;/xf:caption&gt;
        &lt;/xf:submit&gt;
    
      &lt;/xf:form&gt;
      
    &lt;/document&gt;
          
          </pre>
  <a name="N10077"></a>
  <h4>interest.xml</h4>
  <p>This XML page lets the user select areas of interest and depending on their answers they will be shown a selection of mailing lists they can join. The intelligence for deciding which pages to show next are in a java file which we will show you how to write later.</p>
  <p>This page consists of tick boxes which are either true or false.</p>
  <pre class="code">
          
          &lt;xf:selectBoolean ref="/organicGardening"&gt;
            &lt;xf:caption&gt;Organic Gardening&lt;/xf:caption&gt;    
        &lt;/xf:selectBoolean&gt;
           
           </pre>
  <p>Below is the page which you can copy into the folder "howto".</p>
  <pre class="code">
          
  &lt;?xml version="1.0" ?&gt;
  
  
  
  &lt;!-- 
  
    XMLForm instance document for the Cocoon Feedback Wizard.
  
    Original Author: Torsten Curdt, tcurdt@dff.st, March 2002
    Author: Ivelin Ivanov, ivelin@apache.org, April 2002
  
  --&gt;
  
  &lt;document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002"&gt;
  
    &lt;xf:form id="form-feedback" view="interest" action="howto-wizard.html"&gt;
  
      &lt;xf:caption&gt;Areas of Interest&lt;/xf:caption&gt;    
  
      &lt;xf:selectBoolean ref="/organicGardening"&gt;
          &lt;xf:caption&gt;Organic Gardening&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:selectBoolean ref="/cooking"&gt;
          &lt;xf:caption&gt;Cooking&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:selectBoolean ref="/smallholdingManagement"&gt;
          &lt;xf:caption&gt;Smallholding Management&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:submit id="prev" class="button"&gt;
        &lt;xf:caption&gt;Prev&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
  
      &lt;xf:submit id="next" class="button"&gt;
        &lt;xf:caption&gt;Next&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
  
    &lt;/xf:form&gt;
    
  &lt;/document&gt;     
          
          </pre>
  <a name="N1008E"></a>
  <h4>organicGardening.xml</h4>
  <p>The next page is shown if the user ticked the organic gardening box in the previous page, interest.xml. This page consists a selection of mailing lists the user can chose. It is very similar to the previous page containing 3 tick boxes. The user has the choice of moving forward through the form or back to the previous page so they can alter their area of interest.</p>
  <pre class="code">
          
  &lt;?xml version="1.0" ?&gt;
  
  
  
  &lt;!-- 
  
    XMLForm instance document for the Cocoon Feedback Wizard.
  
    Original Author: Torsten Curdt, tcurdt@dff.st, March 2002
    Author: Ivelin Ivanov, ivelin@apache.org, April 2002
  
  --&gt;
  
  &lt;document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002"&gt;
  
    &lt;xf:form id="form-feedback" view="organicGardening" action="howto-wizard.html"&gt;
  
      &lt;xf:caption&gt;Organic Gardening Mailing Lists:&lt;/xf:caption&gt;    
  
      &lt;xf:selectBoolean ref="/flowers"&gt;
          &lt;xf:caption&gt;Flowers&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:selectBoolean ref="/vegetables"&gt;
          &lt;xf:caption&gt;Vegetables&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:selectBoolean ref="/fruitTrees"&gt;
          &lt;xf:caption&gt;Fruit Trees&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:submit id="prev" class="button"&gt;
        &lt;xf:caption&gt;Prev&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
  
      &lt;xf:submit id="next" class="button"&gt;
        &lt;xf:caption&gt;Next&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
  
    &lt;/xf:form&gt;
    
  &lt;/document&gt;        
          
          </pre>
  <a name="N1009B"></a>
  <h4>cooking.xml</h4>
  <p>The next page is a selection of cookery mailing lists, very similar to the organicGardening.xml page. This page will appear if the user ticked the organic gardening option on the interest.xml page.</p>
  <pre class="code">
          
  &lt;?xml version="1.0" ?&gt;
  
  
  
  &lt;!-- 
  
    XMLForm instance document for the Cocoon Feedback Wizard.
  
    Original Author: Torsten Curdt, tcurdt@dff.st, March 2002
    Author: Ivelin Ivanov, ivelin@apache.org, April 2002
  
  --&gt;
  
  &lt;document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002"&gt;
  
    &lt;xf:form id="form-feedback" view="cooking" action="howto-wizard.html"&gt;
  
      &lt;xf:caption&gt;Cooking Mailing Lists:&lt;/xf:caption&gt;    
  
      &lt;xf:selectBoolean ref="/traditionalReciepes"&gt;
          &lt;xf:caption&gt;Traditional Reciepes&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:selectBoolean ref="/soups"&gt;
          &lt;xf:caption&gt;Soups&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:selectBoolean ref="/veganCookery"&gt;
          &lt;xf:caption&gt;Vegan Cookery&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:submit id="prev" class="button"&gt;
        &lt;xf:caption&gt;Prev&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
  
      &lt;xf:submit id="next" class="button"&gt;
        &lt;xf:caption&gt;Next&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
  
    &lt;/xf:form&gt;
    
  &lt;/document&gt;        
          
          </pre>
  <a name="N100A8"></a>
  <h4>smallholdingManagement.xml</h4>
  <p>Again this page is similar to organicGardening.xml, cooking.xml as it gives the user a choice of mailing lists.  This page will only appear if the user selected Smallholding Management as an interest on the interest.xml page.</p>
  <pre class="code">
          
  &lt;?xml version="1.0" ?&gt;
  
  
  
  &lt;!-- 
  
    XMLForm instance document for the Cocoon Feedback Wizard.
  
    Original Author: Torsten Curdt, tcurdt@dff.st, March 2002
    Author: Ivelin Ivanov, ivelin@apache.org, April 2002
  
  --&gt;
  
  &lt;document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002"&gt;
  
    &lt;xf:form id="form-feedback" view="smallholdingManagement" action="howto-wizard.html"&gt;
  
      &lt;xf:caption&gt;Smallholding Management Mailing Lists&lt;/xf:caption&gt;    
  
      &lt;xf:selectBoolean ref="/pigKeeping"&gt;
          &lt;xf:caption&gt;Pig Keeping&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:selectBoolean ref="/pygmyGoats"&gt;
          &lt;xf:caption&gt;Pygmy Goats&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:selectBoolean ref="/henKeeping"&gt;
          &lt;xf:caption&gt;Hen Keeping&lt;/xf:caption&gt;    
      &lt;/xf:selectBoolean&gt;
  
      &lt;xf:submit id="prev" class="button"&gt;
        &lt;xf:caption&gt;Prev&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
  
      &lt;xf:submit id="next" class="button"&gt;
        &lt;xf:caption&gt;Next&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
  
    &lt;/xf:form&gt;
    
  &lt;/document&gt;
  
  
          
          
          </pre>
  <a name="N100B5"></a>
  <h4>confirm.xml</h4>
  <p>This page shows the user the data that has been collected from them. The JavaBean that stores all the data is queried and the information collected is displayed. This is done using the xf:output tag, specifying which value to display with the ref attribute. If they wish to change any of the information they can do this now by clicking the previous button and altering their answers.  Otherwise they can click the finish button which will take them to the end page, end.xml.</p>
  <pre class="code">
           
  &lt;?xml version="1.0" ?&gt;
  
  &lt;!-- 
  
    XMLForm instance document for the Cocoon Feedback Wizard.
  
    Original Author: Torsten Curdt, tcurdt@dff.st, March 2002
    Author: Ivelin Ivanov, ivelin@apache.org, April 2002
  
  --&gt;
  
  &lt;document xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002"&gt;
  
  
    &lt;xf:form id="form-feedback" view="confirm" action="howto-wizard.html"&gt;
  
    
      &lt;xf:caption&gt;Confirm Input&lt;/xf:caption&gt;    
  
    
      &lt;!-- from page1 --&gt;
  
      &lt;xf:output ref="/userName"&gt;
          &lt;xf:caption&gt;User Name&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
  
      &lt;xf:output ref="/email"&gt;
          &lt;xf:caption&gt;Email&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
  
      &lt;xf:output ref="/password"&gt;
          &lt;xf:caption&gt;Password&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
  
      &lt;!-- from page2 --&gt;
      &lt;xf:output ref="/organicGardening"&gt;
          &lt;xf:caption&gt;Organic Gardening&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
    
      &lt;xf:output ref="/cooking"&gt;
          &lt;xf:caption&gt;Cooking&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
        
      &lt;xf:output ref="/smallholdingManagement"&gt;
          &lt;xf:caption&gt;Smallholding Management&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
  
      &lt;!-- from page3 --&gt;
      &lt;xf:output ref="/flowers"&gt;
          &lt;xf:caption&gt;Flowers&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
    
      &lt;xf:output ref="/vegetables"&gt;
          &lt;xf:caption&gt;Vegetables&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
        
      &lt;xf:output ref="/fruitTrees"&gt;
          &lt;xf:caption&gt;Fruit Trees&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
        
      &lt;!-- from page4 --&gt;
      &lt;xf:output ref="/traditionalReciepes"&gt;
          &lt;xf:caption&gt;Traditional Reciepes&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
    
      &lt;xf:output ref="/soups"&gt;
          &lt;xf:caption&gt;Soups&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
        
      &lt;xf:output ref="/veganCookery"&gt;
          &lt;xf:caption&gt;Vegan Cooking&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
  
      &lt;!-- from page5 --&gt;
      &lt;xf:output ref="/pigKeeping"&gt;
          &lt;xf:caption&gt;Pig Keeping&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
    
      &lt;xf:output ref="/pygmyGoats"&gt;
          &lt;xf:caption&gt;Pygmy Goats&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
        
      &lt;xf:output ref="/henKeeping"&gt;
          &lt;xf:caption&gt;Hen Keeping&lt;/xf:caption&gt;    
      &lt;/xf:output&gt;
  
      &lt;!-- submit --&gt;
        
      &lt;xf:submit id="prev" class="button"&gt;
        &lt;xf:caption&gt;Prev&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
      
      &lt;xf:submit id="next" class="button"&gt;
        &lt;xf:caption&gt;Finish&lt;/xf:caption&gt;
      &lt;/xf:submit&gt;
  
    &lt;/xf:form&gt;
    
  &lt;/document&gt;         
           
          </pre>
  <a name="N100C2"></a>
  <h4>end.xml</h4>
  <p>This page displays the final page. It tells the reader they have succesfully filled in the form and gives them the option to return to the start.</p>
  <pre class="code">
           
       &lt;?xml version="1.0" ?&gt;
  &lt;document&gt;
      &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;
      &lt;table align="center" width="50%" cellspacing="20"&gt;
          &lt;tr&gt;
              &lt;td align="center"&gt;
                  &lt;h1&gt;
                      You have reached the last page of the How To Form example!
                  &lt;/h1&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
  
          &lt;tr&gt;
              &lt;td align="center" class="info"&gt;
                  &lt;code&gt;
                      Your feedback form was processed successfully.
                  &lt;/code&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
           
          &lt;tr&gt;
              &lt;td align="center"&gt;
                  &lt;h3&gt;
                      &lt;a href="howto-wizard.html"&gt;Go to home page.&lt;/a&gt;
                  &lt;/h3&gt;
              &lt;/td&gt;
          &lt;/tr&gt;
      &lt;/table&gt;
  &lt;/document&gt;
  
       
           
          </pre>
  <p>
  <a href="step2.html">Step 2: Validation</a>
  </p>
  <a name="N100D4"></a>
  <h3>Revisions</h3>
  <p>Find a problem with this document? Consider contacting the author or submitting your own revision. For instructions, read the How To Submit a Revision.</p>
  <ul>
  <li>Revision, <a href="revision-step1-2002-05-20.html">2002-07-12 12:05</a>
  </li>
  </ul>
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/xmlform/step2.html
  
  Index: step2.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>How to build an XMLForm Wizard, Step Two</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">XMLForm How-To</font>
  <ul>
      
  <li>
  <a href="howto-xmlform.html">Intro</a>
  </li>
      
  <li>
  <a href="step1.html">Step 1</a>
  </li>
      
  <li>
  <span class="sel"><font color="#ffcc00">Step 2</font></span>
  </li>
      
  <li>
  <a href="step3.html">Step 3</a>
  </li>
      
  <li>
  <a href="step4.html">Step 4</a>
  </li>
      
  <li>
  <a href="step5.html">Step 5</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>How to build an XMLForm Wizard, Step Two</h1>
  <p>
  <font size="-2">by&nbsp;Heidi Brannan</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10015">Step Two: Validation</a>
  </li>
  <li>
  <a href="#N10034">Revisions</a>
  </li>
  </ul>
  <a name="N10015"></a>
  <h3>Step Two: Validation</h3>
  <p>The next step validation is optional, you do not have to validate your forms but its very easy to do so, so we will.</p>
  <p>In the sitemap there are 2 parameters, xmlform-validator-schema and xmlform-validator-schema-ns. If these are left empty then no validation will be carried out. xmlform-validator-schema contains the name of the xml schema file we are using and xmlform-validator-schema-ns is the validator namespace we are using.  Below are the 2 parameters in the sitemap we are referring to.</p>
  <pre class="code">
        
                  &lt;map:parameter name="xmlform-validator-schema-ns" value="http://www.ascc.net/xml/schematron"/&gt;
            &lt;map:parameter name="xmlform-validator-schema" value="schematron/wizard-xmlform-sch-report.xml"/&gt;
            
        </pre>
  <p>Copy the "howto-xmlform-sch-report.xml" and place this in the folder apache\xml-cocoon2\src\scratchpad\webapp\mount\xmlform\schematron.</p>
  <p>The schema is simple and only validates the registration.xml page.  The phase tag relates to an xml page that contains values which will be validated. The id attribute contains the page name.  Inside the phase tag is the active tag which contains the pattern attribute which match up to the pattern tags below. Each pattern can contain one or more rule tags. Each rule tag has a context attribute which maps to a javaBean value, for example userName. Nested inside the rule tag is one or more assert tag. Each assert tag contains a test attribute. The test value can check the value passes certain criteria, for example, the value is more than 7 characters long. Nested between the beginning and closing assert tags is an error message which will be displayed if the test is not met.</p>
  <pre class="code">
          
  &lt;?xml version="1.0" ?&gt;
  &lt;!--
  
    Validating Schematron schema for the xmlform example wizard
    
    Schematron Schema language home page:
    http://www.ascc.net/xml/schematron/
    
    Author: Ivelin Ivanov, ivelin@apache.org, April 2002
  
  --&gt;
  
  &lt;schema ns="http://xml.apache.cocoon/xmlform"  xmlns="http://www.ascc.net/xml/schematron"&gt;
  
    &lt;title&gt;Schema for the XML Form example&lt;/title&gt;
    
      &lt;phase id="registration"&gt;
              &lt;p&gt;For user identity information.&lt;/p&gt;
              &lt;active pattern="reg"/&gt;
      &lt;/phase&gt;
      
      &lt;phase id="confirm"&gt;
              &lt;p&gt;For final total validation and tracking 
                  some tricky problems.&lt;/p&gt;
              &lt;active pattern="reg" /&gt;
           
      &lt;/phase&gt;
  
      
    &lt;pattern name="User Info Validation Pattern" id="reg"&gt;
      &lt;rule context="/userName"&gt;
        &lt;assert  test="string-length(.) &amp;gt; 7" diagnostics="dname dcount"&gt;
          Username should be at least 8 characters.
        &lt;/assert&gt;
        &lt;assert  test="string-length(.) &amp;lt; 20"&gt;
          Username should be less than 20 characters.
        &lt;/assert&gt;
      &lt;/rule&gt;
      &lt;rule context="/password"&gt;
        &lt;assert  test="string-length(.) &amp;gt; 7" diagnostics="dname dcount"&gt;
          Password should be at least 8 characters.
        &lt;/assert&gt;
        &lt;assert  test="string-length(.) &amp;lt; 20"&gt;
          Password should be less than 20 characters.
        &lt;/assert&gt;
      &lt;/rule&gt;
      &lt;rule context="/email"&gt;
        &lt;assert test="contains( string(.),'@')"&gt;
          Email format is invalid.
        &lt;/assert&gt;
      &lt;/rule&gt;   
    &lt;/pattern&gt;
  &lt;/schema&gt;
  
        </pre>
  <p>Now you are ready for <a href="step3.html">Step 3: Java Bean</a> 
  </p>
  <a name="N10034"></a>
  <h3>Revisions</h3>
  <p>Find a problem with this document? Consider contacting the author or submitting your own revision. For instructions, read the How To Submit a Revision.</p>
  <ul></ul>
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/xmlform/step3.html
  
  Index: step3.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>How to build an XMLForm Wizard, Step Three</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">XMLForm How-To</font>
  <ul>
      
  <li>
  <a href="howto-xmlform.html">Intro</a>
  </li>
      
  <li>
  <a href="step1.html">Step 1</a>
  </li>
      
  <li>
  <a href="step2.html">Step 2</a>
  </li>
      
  <li>
  <span class="sel"><font color="#ffcc00">Step 3</font></span>
  </li>
      
  <li>
  <a href="step4.html">Step 4</a>
  </li>
      
  <li>
  <a href="step5.html">Step 5</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>How to build an XMLForm Wizard, Step Three</h1>
  <p>
  <font size="-2">by&nbsp;Heidi Brannan</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10015">Step Three: JavaBean</a>
  <ul class="minitoc">
  <li>
  <a href="#N10019">HowToBean.java</a>
  </li>
  </ul>
  </li>
  <li>
  <a href="#N1002F">Revisions</a>
  </li>
  </ul>
  <a name="N10015"></a>
  <h3>Step Three: JavaBean</h3>
  <a name="N10019"></a>
  <h4>HowToBean.java</h4>
  <p>Next we create the simple JavaBean which holds the data filled in the form. Each value has a set and get method. Each value must map with the form data. This is done using JXPath.</p>
  <p>Copy the file below and save it as HowToBean.java in the folder \apache\xml-cocoon2\src\scratchpad\src\org\apache\cocoon\samples\xmlform</p>
  <pre class="code">
          
  package org.apache.cocoon.samples.xmlform;
  
  import java.util.Set;
  import java.util.HashSet;
  import java.util.List;
  import java.util.ArrayList;
  
  import org.w3c.dom.*;
  import javax.xml.parsers.*;
  import javax.xml.transform.*;
  
  /**
   *
   * A sample domain object used as a Form model.
   * Notice that it has mixed content: 
   * JavaBean properties and 
   * DOM Nodes, which are handled correctly by the
   * framework when referenced via XPath.
   *
   */
  
  public class HowToBean 
  {
    private String username = "DonaldDuck";
    private String email = "donald@disney.com";
    private String password = "secret123";
    private boolean organicGardening = true;
    private boolean cooking = true;
    private boolean smallholdingManagement = true;
    private boolean flowers = true;
    private boolean vegetables = true;  
    private boolean fruitTrees = true;
    private boolean traditionalReciepes = true;
    private boolean soups = true;
    private boolean veganCookery = true;
    private boolean pigKeeping = true;
    private boolean pygmyGoats = true;
    private boolean henKeeping = true;
    private Node system;
  
    public HowToBean ()
    {
   
    }
  
    public String getUserName() {
      return username;
    }
    
    public void setUserName(String newUserName) {
      username = newUserName;
    }
  
    public String getPassword() {
      return password;
    }
    
    public void setPassword(String newPassword) {
      password = newPassword;
    }
  
    public String getEmail() {
      return email;
    }
  
    public void setEmail(String newEmail) {
      email = newEmail;
    }
     
    public boolean getOrganicGardening() 
      {
      return organicGardening;
      }
    
    public void setOrganicGardening( boolean newOrganicGardening ) 
      {
      organicGardening = newOrganicGardening;
      }
  
    public boolean getCooking() 
      {
      return cooking;
      }
    
    public void setCooking( boolean newCooking ) 
      {
      cooking = newCooking;
      }
    
    public boolean getSmallholdingManagement() 
      {
      return smallholdingManagement;
      }
    
    public void setSmallholdingManagement( boolean newSmallholdingManagement ) 
      {
      smallholdingManagement = newSmallholdingManagement;
      }
  
    public boolean getFlowers() 
      {
      return flowers;
      }
    
    public void setFlowers( boolean newFlowers ) 
      {
      flowers = newFlowers;
      }
  
    public boolean getVegetables() 
      {
      return vegetables;
      }
    
    public void setVegetables( boolean newVegetables ) 
      {
      vegetables = newVegetables;
      }
  
    public boolean getFruitTrees() 
      {
      return fruitTrees;
      }
    
    public void setFruitTrees( boolean newFruitTrees ) 
      {
      fruitTrees = newFruitTrees;
      }
  
    public boolean getTraditionalReciepes() 
      {
      return traditionalReciepes;
      }
    
    public void setTraditionalReciepes( boolean newTraditionalReciepes ) 
      {
      traditionalReciepes = newTraditionalReciepes;
      }
  
    public boolean getSoups() 
      {
      return soups;
      }
    
    public void setSoups( boolean newSoups ) 
      {
      soups = newSoups;
      }
  
    public boolean getVeganCookery() 
      {
      return veganCookery;
      }
    
    public void setVeganCookery( boolean newVeganCookery ) 
      {
      veganCookery = newVeganCookery;
      }
  
    public boolean getPigKeeping() 
      {
      return pigKeeping;
      }
    
    public void setPigKeeping( boolean newPigKeeping ) 
      {
      pigKeeping = newPigKeeping;
      }
      
    public boolean getPygmyGoats() 
      {
      return pygmyGoats;
      }
    
    public void setPygmyGoats( boolean newPygmyGoats ) 
      {
      pygmyGoats = newPygmyGoats;
      }
  
    public boolean getHenKeeping() 
      {
      return henKeeping;
      }
    
    public void setHenKeeping( boolean newHenKeeping ) 
      {
      henKeeping = newHenKeeping;
      }
  }
  
          </pre>
  <p>Now we move on to <a href="step4.html">Step 4:HowtoWizardAction.java</a>
  </p>
  <a name="N1002F"></a>
  <h3>Revisions</h3>
  <p>Find a problem with this document? Consider contacting the author or submitting your own revision. For instructions, read the How To Submit a Revision.</p>
  <ul></ul>
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/xmlform/step4.html
  
  Index: step4.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>How to build an XMLForm Wizard, Step Four</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">XMLForm How-To</font>
  <ul>
      
  <li>
  <a href="howto-xmlform.html">Intro</a>
  </li>
      
  <li>
  <a href="step1.html">Step 1</a>
  </li>
      
  <li>
  <a href="step2.html">Step 2</a>
  </li>
      
  <li>
  <a href="step3.html">Step 3</a>
  </li>
      
  <li>
  <span class="sel"><font color="#ffcc00">Step 4</font></span>
  </li>
      
  <li>
  <a href="step5.html">Step 5</a>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>How to build an XMLForm Wizard, Step Four</h1>
  <p>
  <font size="-2">by&nbsp;Heidi Brannan</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10015">Step Four: HowtoWizardAction.java</a>
  <ul class="minitoc">
  <li>
  <a href="#N1001C">XML Pages defined</a>
  </li>
  <li>
  <a href="#N10026">Prepare Method</a>
  </li>
  <li>
  <a href="#N1003C">Perform Method</a>
  </li>
  <li>
  <a href="#N1004C">Reset Method</a>
  </li>
  </ul>
  </li>
  <li>
  <a href="#N10066">Revisions</a>
  </li>
  </ul>
  <a name="N10015"></a>
  <h3>Step Four: HowtoWizardAction.java</h3>
  <p>This is based on the WizardAction.java.  The prepare, perform and reset methods need to be altered. Your XML pages also need to be defined.</p>
  <a name="N1001C"></a>
  <h4>XML Pages defined</h4>
  <pre class="code">
          
    // different form views 
    // participating in the wizard
    final String VIEW_START = "start";
    final String VIEW_REGISTRATION = "registration";
    final String VIEW_INTEREST = "interest";
    final String VIEW_GARDENING = "organicGardening";
    final String VIEW_COOKING = "cooking";
    final String VIEW_SMALLHOLDING = "smallholdingManagement";
    final String VIEW_CONFIRM = "confirm";
    final String VIEW_END = "end";
          
          </pre>
  <a name="N10026"></a>
  <h4>Prepare Method</h4>
  <p>This method prepares the form and the pages to be returned before the actual form population starts.</p>
  <p>The first time the URL http://localhost:8080/cocoon/mount/xmlform/howto-wizard.html is called there is no command passes so the if statement test is met and the start page is returned.</p>
  <p>After the start page has been viewed and the user clicks on "Start" the command start is passed so the else test is met and the registration page is returned. Any old forms are removed and a form listener is added to the form.</p>
  <p>If neither of these tests are met then nothing is returned.</p>
  <pre class="code">
          
    /**
     * 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 
     * &lt;pre&gt;if getCommand().equals("Cancel") return page("input");&lt;/pre&gt;
     *
     */
    protected Map prepare() 
    {
      
      if ( getCommand() == null )
        {
          return page( VIEW_START );
        }
      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_REGISTRATION );
      }
      
      // get ready for action
      // if not ready return page("whereNext");
      return null;
    }    
  
        </pre>
  <a name="N1003C"></a>
  <h4>Perform Method</h4>
  <p>The perform method controls the logic of the forms pages to be displayed.</p>
  <p>First the model is saved to the JavaBean</p>
  <pre class="code">
          
   /**
     * 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
      HowToBean  jBean = (HowToBean) getForm().getModel();
  
      // set the page control flow parameter 
      // according to the validation result
      if ( getCommand().equals( CMD_NEXT ) &amp;&amp; 
        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_REGISTRATION ) )
        {
          if ( command.equals( CMD_NEXT ) )
          {
            return page(  VIEW_INTEREST );
          }        
        }
        else if ( formView.equals ( VIEW_INTEREST ) )
        {
          if ( command.equals( CMD_NEXT ) )
          {
             if ( jBean.getOrganicGardening() == true )
             {
               return page( VIEW_GARDENING );
             }
             else if ( jBean.getCooking() == true )
             {
               return page( VIEW_COOKING );
             }
             else if ( jBean.getSmallholdingManagement() == true )
             {
               return page( VIEW_SMALLHOLDING );
             }
             //else if ( getForm().get
            return page(  VIEW_CONFIRM );
          } 
          if ( command.equals( CMD_PREV ) )
          {
             return page( VIEW_REGISTRATION );
          }
        }
        else if ( formView.equals ( VIEW_GARDENING ) )
        {
          if ( command.equals ( CMD_NEXT ) )
          {
             if ( jBean.getCooking() == true )
             {
               return page( VIEW_COOKING );
             }
             else if ( jBean.getSmallholdingManagement() == true )
             {
               return page( VIEW_SMALLHOLDING );
             }          
            return page( VIEW_CONFIRM );
          }
          else if( command.equals( CMD_PREV ) )
          {
            return page( VIEW_INTEREST );
          }
        }
        else if ( formView.equals ( VIEW_COOKING ) )
        {
          if ( command.equals ( CMD_NEXT ) )
          {
             if ( jBean.getSmallholdingManagement() == true )
             {
               return page( VIEW_SMALLHOLDING );
             }          
            return page( VIEW_CONFIRM );
          }
          else if ( command.equals( CMD_PREV ) )
          {          
            if ( jBean.getOrganicGardening() == true )
            {
              return page( VIEW_GARDENING );
            }
            return page( VIEW_INTEREST );
          }
        }
        else if ( formView.equals ( VIEW_SMALLHOLDING ) )
        {
          if ( command.equals( CMD_NEXT ) )
          {
            return page( VIEW_CONFIRM );
          }
          else if ( command.equals( CMD_PREV ) )
          {
            if ( jBean.getCooking() == true ) 
            {
              return page( VIEW_COOKING );
            }
            else if ( jBean.getOrganicGardening() == true )
            {
              return page( VIEW_GARDENING );
            }
            return page( VIEW_INTEREST );
          }
        }
        else if ( formView.equals ( VIEW_CONFIRM ) )
        {
          if ( command.equals( CMD_NEXT ) )
          {
             return page( VIEW_END );
          }
          else if( command.equals( CMD_PREV ) )
          {
             if ( jBean.getOrganicGardening() == true )
             {
               return page( VIEW_GARDENING );
             }          
            return page( VIEW_INTEREST );
          }
        }
      }
  
      // should never reach this statement
      return page( VIEW_START );    
      
    }          
          
        </pre>
  <a name="N1004C"></a>
  <h4>Reset Method</h4>
  <p>The reset method is used to tidy up any checkboxes and can be used to reset other fields in the form.</p>
  <pre class="code">
          
    
    /** 
     *
     * FormListener callback 
     * called in the beginning Form.populate()
     * before population starts.
     *
     * This is the place to handle unchecked checkboxes.
     *
     */
    public void reset( Form form )
    {
      // based on the current form view
      // make some decisions regarding checkboxes, etc.
      String formView = getFormView(); 
      if ( formView.equals ( VIEW_INTEREST ) )
      {
        // deal with the organicGardening checkbox
        form.setValue( "/organicGardening", Boolean.FALSE );
        // deal with the cooking checkbox
        form.setValue( "/cooking", Boolean.FALSE );
        // deal with the smallholdingManagement checkbox
        form.setValue( "/smallholdingManagement", Boolean.FALSE );
      }
      else if ( formView.equals ( VIEW_GARDENING ) )
      {
        // deal with the flowers checkbox
        form.setValue( "/flowers", Boolean.FALSE );
        // deal with the vegetables checkbox
        form.setValue( "/vegetables", Boolean.FALSE );
        // deal with the fruitTrees checkbox
        form.setValue( "/fruitTrees", Boolean.FALSE );
      }
      else if ( formView.equals ( VIEW_COOKING ) )
      {
       // deal with the traditionalReciepes checkbox
        form.setValue( "/traditionalReciepes", Boolean.FALSE );
        // deal with the soups checkbox
        form.setValue( "/soups", Boolean.FALSE );
        // deal with the veganCookery checkbox
        form.setValue( "/veganCookery", Boolean.FALSE );
      }
      else if ( formView.equals ( VIEW_SMALLHOLDING ) )
      {
      // deal with the pigKeeping checkbox
        form.setValue( "/pigKeeping", Boolean.FALSE );
        // deal with the pygmyGoats checkbox
        form.setValue( "/pygmyGoats", Boolean.FALSE );
        // deal with the henKeeping checkbox
        form.setValue( "/henKeeping", Boolean.FALSE );
      }
      
    }        
          
        </pre>
  <p>The whole file HowtoWizardAction.java is below for you to copy to the folder C:\projects\apache\xml-cocoon2\src\scratchpad\src\org\apache\cocoon\samples:</p>
  <pre class="code">
      
  /*
   * $Header: /home/cvspublic/xml-cocoon2/src/scratchpad/src/org/apache/cocoon/samples/xmlform/HowtoWizardAction.java,
   v 1.2 2002/05/09 07:26:07 ivelin Exp $
   * $Revision: 1.1 $
   * $Date: 2002/07/12 10:33:08 $
   *
   * ====================================================================
   * The Apache Software License, Version 1.1
   *
   * 
   *
   * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Commons", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation and was
   * originally based on software copyright (c) 2001, Plotnix, Inc,
   * &lt;http://www.plotnix.com/&gt;.
   * For more information on the Apache Software Foundation, please see
   * &lt;http://www.apache.org/&gt;.
   */
  package org.apache.cocoon.samples.xmlform;
  
  
  // 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 Form
  import org.apache.cocoon.acting.AbstractXMLFormAction;
  import org.apache.cocoon.xmlform.Form;
  import org.apache.cocoon.xmlform.FormListener;
  
  
  /**
   * This action demonstrates 
   * a relatively complex form handling scenario.
   *
   * @author Ivelin Ivanov &lt;ivelin@apache.org&gt;
   */
  public class HowtoWizardAction 
    extends AbstractXMLFormAction
    implements FormListener
    
  { 
  
  
    // different form views 
    // participating in the wizard
    final String VIEW_START = "start";
    final String VIEW_REGISTRATION = "registration";
    final String VIEW_INTEREST = "interest";
    final String VIEW_GARDENING = "organicGardening";
    final String VIEW_COOKING = "cooking";
    final String VIEW_SMALLHOLDING = "smallholdingManagement";
    final String VIEW_CONFIRM = "confirm";
    final String VIEW_END = "end";
  
    // 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 
     * &lt;pre&gt;if getCommand().equals("Cancel") return page("input");&lt;/pre&gt;
     *
     */
    protected Map prepare() 
    {
      
      if ( getCommand() == null )
        {
          return page( VIEW_START );
        }
      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_REGISTRATION );
      }
  
      
      // 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
      HowToBean  jBean = (HowToBean) getForm().getModel();
      //jBean.incrementCount();
  
      // set the page control flow parameter 
      // according to the validation result
      if ( getCommand().equals( CMD_NEXT ) &amp;&amp; 
        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_REGISTRATION ) )
        {
          if ( command.equals( CMD_NEXT ) )
          {
            return page(  VIEW_INTEREST );
          }        
        }
        else if ( formView.equals ( VIEW_INTEREST ) )
        {
          if ( command.equals( CMD_NEXT ) )
          {
             if ( jBean.getOrganicGardening() == true )
             {
               return page( VIEW_GARDENING );
             }
             else if ( jBean.getCooking() == true )
             {
               return page( VIEW_COOKING );
             }
             else if ( jBean.getSmallholdingManagement() == true )
             {
               return page( VIEW_SMALLHOLDING );
             }
             //else if ( getForm().get
            return page(  VIEW_CONFIRM );
          } 
          if ( command.equals( CMD_PREV ) )
          {
             return page( VIEW_REGISTRATION );
          }
        }
        else if ( formView.equals ( VIEW_GARDENING ) )
        {
          if ( command.equals ( CMD_NEXT ) )
          {
             if ( jBean.getCooking() == true )
             {
               return page( VIEW_COOKING );
             }
             else if ( jBean.getSmallholdingManagement() == true )
             {
               return page( VIEW_SMALLHOLDING );
             }          
            return page( VIEW_CONFIRM );
          }
          else if( command.equals( CMD_PREV ) )
          {
            return page( VIEW_INTEREST );
          }
        }
        else if ( formView.equals ( VIEW_COOKING ) )
        {
          if ( command.equals ( CMD_NEXT ) )
          {
             if ( jBean.getSmallholdingManagement() == true )
             {
               return page( VIEW_SMALLHOLDING );
             }          
            return page( VIEW_CONFIRM );
          }
          else if ( command.equals( CMD_PREV ) )
          {          
            if ( jBean.getOrganicGardening() == true )
            {
              return page( VIEW_GARDENING );
            }
            return page( VIEW_INTEREST );
          }
        }
        else if ( formView.equals ( VIEW_SMALLHOLDING ) )
        {
          if ( command.equals( CMD_NEXT ) )
          {
            return page( VIEW_CONFIRM );
          }
          else if ( command.equals( CMD_PREV ) )
          {
            if ( jBean.getCooking() == true ) 
            {
              return page( VIEW_COOKING );
            }
            else if ( jBean.getOrganicGardening() == true )
            {
              return page( VIEW_GARDENING );
            }
            return page( VIEW_INTEREST );
          }
        }
        else if ( formView.equals ( VIEW_CONFIRM ) )
        {
          if ( command.equals( CMD_NEXT ) )
          {
             return page( VIEW_END );
          }
          else if( command.equals( CMD_PREV ) )
          {
             if ( jBean.getOrganicGardening() == true )
             {
               return page( VIEW_GARDENING );
             }          
            return page( VIEW_INTEREST );
          }
        }
      }
  
      // should never reach this statement
      return page( VIEW_START );    
      
    }  
  
    
  
    
    
    /** 
     *
     * FormListener callback 
     * called in the beginning Form.populate()
     * before population starts.
     *
     * This is the place to handle unchecked checkboxes.
     *
     */
    public void reset( Form form )
    {
      // based on the current form view
      // make some decisions regarding checkboxes, etc.
      String formView = getFormView(); 
      if ( formView.equals ( VIEW_INTEREST ) )
      {
        // deal with the organicGardening checkbox
        form.setValue( "/organicGardening", Boolean.FALSE );
        // deal with the cooking checkbox
        form.setValue( "/cooking", Boolean.FALSE );
        // deal with the smallholdingManagement checkbox
        form.setValue( "/smallholdingManagement", Boolean.FALSE );
      }
      else if ( formView.equals ( VIEW_GARDENING ) )
      {
        // deal with the flowers checkbox
        form.setValue( "/flowers", Boolean.FALSE );
        // deal with the vegetables checkbox
        form.setValue( "/vegetables", Boolean.FALSE );
        // deal with the fruitTrees checkbox
        form.setValue( "/fruitTrees", Boolean.FALSE );
      }
      else if ( formView.equals ( VIEW_COOKING ) )
      {
       // deal with the traditionalReciepes checkbox
        form.setValue( "/traditionalReciepes", Boolean.FALSE );
        // deal with the soups checkbox
        form.setValue( "/soups", Boolean.FALSE );
        // deal with the veganCookery checkbox
        form.setValue( "/veganCookery", Boolean.FALSE );
      }
      else if ( formView.equals ( VIEW_SMALLHOLDING ) )
      {
      // deal with the pigKeeping checkbox
        form.setValue( "/pigKeeping", Boolean.FALSE );
        // deal with the pygmyGoats checkbox
        form.setValue( "/pygmyGoats", Boolean.FALSE );
        // deal with the henKeeping checkbox
        form.setValue( "/henKeeping", Boolean.FALSE );
      }
      
    }
    
    
    /** 
     * 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;
    
  }
  
      
      </pre>
  <p>Finally <a href="step5.html">Step 5: the Sitemap</a>
  </p>
  <a name="N10066"></a>
  <h3>Revisions</h3>
  <p>Find a problem with this document? Consider contacting the author or submitting your own revision. For instructions, read the How To Submit a Revision.</p>
  <ul></ul>
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  
  1.1                  xml-site/targets/forrest/community/howto/xmlform/step5.html
  
  Index: step5.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>How to build an XMLForm Wizard, Step Five</title>
  <link type="text/css" href="skin/page.css" rel="stylesheet">
  </head>
  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
  <table summary="navigation path" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td nowrap="nowrap" valign="middle" bgcolor="#CFDCED" height="20"><img height="1" width="5" alt="" border="0" src="skin/images/spacer.gif"><font size="2" face="Arial, Helvetica, Sans-serif"><a href="http://www.apache.org/">apache</a> &gt; <a href="http://xml.apache.org/">xml.apache</a> &gt; <a href="http://xml.apache.org/forrest/">forrest</a></font></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" height="2"><img height="2" width="2" alt="" border="0" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="header with logos" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><a href="http://xml.apache.org/"><img border="0" height="65" width="220" alt="Apache XML logo" src="images/group-logo.gif"></a></td><td width="100%" align="center" bgcolor="#294563"><a href="http://xml.apache.org/forrest/"><img alt="Forrest logo" height="65" width="220" border="0" src="images/project-logo.gif"></a></td><td valign="top" rowspan="2" bgcolor="#294563">
  <form target="_blank" onsubmit="q.value = query.value + ' site:xml.apache.org'" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
  <tr>
  <td colspan="3"><img height="10" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap"><input name="q" type="hidden"><input size="15" id="query" type="text"><img height="1" width="5" alt="" src="skin/images/spacer.gif"><input name="Search" value="Search" type="submit">
  <br>
  <font face="Arial, Helvetica, Sans-serif" size="2" color="white">
                    the xml.apache.org sites
  
  
                    </font></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td><img alt="" border="0" height="10" width="9" src="skin/images/search-left.gif"></td><td><img height="1" width="1" alt="" src="skin/images/spacer.gif"></td><td><img alt="" border="0" height="10" width="9" src="skin/images/search-right.gif"></td>
  </tr>
  </table>
  </form>
  </td><td bgcolor="#294563"><img height="10" width="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" bgcolor="#294563" colspan="2">
  <div class="tab">
  <table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
  <tr>
  
    
  <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="selected tab" height="30" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-left.gif"></td><td valign="middle" bgcolor="#4C6C8F"><font color="#ffffff" size="2" face="Arial, Helvetica, Sans-serif"><b>How-Tos</b></font></td><td valign="top" width="5" bgcolor="#4C6C8F"><img height="5" width="5" alt="" src="skin/images/tabSel-right.gif"></td>
  </tr>
  </table>
  </td>
    <td width="8"><img alt="" height="8" width="8" src="skin/images/spacer.gif"></td><td valign="bottom">
  <table summary="non selected tab" height="25" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="/forrest/xml-site/"><font size="2" face="Arial, Helvetica, Sans-serif">XML Site</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="skin/images/tab-right.gif"></td>
  </tr>
  </table>
  </td>
  
  
  </tr>
  </table>
  </div>
  </td><td bgcolor="#294563"><img alt="" width="1" height="1" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#4C6C8F" colspan="4"><img width="1" height="10" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  <table summary="page content" bgcolor="#ffffff" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td valign="top">
  <table summary="menu" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td rowspan="3" valign="top">
  <table summary="blue line" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td bgcolor="#CFDCED"><font color="#4C6C8F" size="4" face="Arial, Helvetica, Sans-serif">&nbsp;</font></td>
  </tr>
  <tr>
  <td bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td nowrap="nowrap" valign="top" bgcolor="#4C6C8F">
  <div class="menu">
  <ul>
  <li>
  <font color="white">How-Tos</font>
  <ul>
      
  <li>
  <a href="../index.html">Index</a>
  </li>
    
  </ul>
  </li>
  <li>
  <font color="white">XMLForm How-To</font>
  <ul>
      
  <li>
  <a href="howto-xmlform.html">Intro</a>
  </li>
      
  <li>
  <a href="step1.html">Step 1</a>
  </li>
      
  <li>
  <a href="step2.html">Step 2</a>
  </li>
      
  <li>
  <a href="step3.html">Step 3</a>
  </li>
      
  <li>
  <a href="step4.html">Step 4</a>
  </li>
      
  <li>
  <span class="sel"><font color="#ffcc00">Step 5</font></span>
  </li>
    
  </ul>
  </li>
  </ul>
  </div>
  </td><td valign="bottom" bgcolor="#4C6C8F"><img width="10" height="10" alt="" src="skin/images/spacer.gif"></td><td bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td valign="bottom" align="left" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-left.gif"></td><td bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/spacer.gif"></td><td valign="bottom" align="right" colspan="2" rowspan="2" bgcolor="#4C6C8F"><img height="10" width="10" border="0" alt="" src="skin/images/menu-right.gif"></td>
  </tr>
  <tr>
  <td height="1" bgcolor="#294563"><img width="1" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td><td valign="top" width="100%">
  <table summary="content" width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td align="right" width="50%" bgcolor="#CFDCED"><font color="#4C6C8F" size="3" face="Arial, Helvetica, Sans-serif">
                  &nbsp;
  
                  </font><img width="10" height="8" alt="" src="skin/images/spacer.gif"></td><td width="10" bgcolor="#CFDCED"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="4" bgcolor="#294563"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td align="left" width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td><td align="left" width="100%">
  <div class="content">
  <h1>How to build an XMLForm Wizard, Step Five</h1>
  <p>
  <font size="-2">by&nbsp;Heidi Brannan</font>
  </p>
  <ul class="minitoc">
  <li>
  <a href="#N10015">Step Five: The Sitemap</a>
  </li>
  <li>
  <a href="#N10046">Revisions</a>
  </li>
  </ul>
  <a name="N10015"></a>
  <h3>Step Five: The Sitemap</h3>
  <p>The Sitemap finally pulls all the previous files together into an understandable whole.</p>
  <p>In the components section we add a map:action tag named HowToWizardAction.  This points to the Java file HowToWizardAction which we met in step 4.</p>
  <pre class="code">
          
    &lt;!-- =========================== Components ================================ --&gt;
    &lt;map:components&gt; 
      &lt;map:actions&gt;
        &lt;map:action name="WizardAction" src="org.apache.cocoon.samples.xmlform.WizardAction"  
          logger="webapp.xmlform"/&gt;
        &lt;map:action name="HowtoWizardAction" src="org.apache.cocoon.samples.xmlform.HowtoWizardAction"  
          logger="webapp.xmlform"/&gt;
      &lt;/map:actions&gt;
      &lt;map:generators default="file"/&gt;
      &lt;map:transformers default="xslt"&gt;
        &lt;map:transformer name="xmlform" src="org.apache.cocoon.transformation.XMLFormTransformer" 
          logger="webapp.xmlform"/&gt;
      &lt;/map:transformers&gt;
      &lt;map:readers default="resource"/&gt;
      &lt;map:serializers default="html"/&gt;
      &lt;map:selectors default="browser"/&gt;
      &lt;map:matchers default="wildcard"&gt;
        &lt;map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcherFactory"/&gt;
      &lt;/map:matchers&gt;
    &lt;/map:components&gt;
  
        </pre>
  <p>We add to the pipeline the following tags:</p>
  <pre class="code">
          
        &lt;!-- A non-trivial example - Feedback HowTo Wizard --&gt;
        &lt;map:match pattern="howto-wizard.html"&gt;
          &lt;map:act type="HowtoWizardAction"&gt;
  
            &lt;!-- XMLForm parameters for the AbstractXMLFormAction --&gt;
            &lt;map:parameter name="xmlform-validator-schema-ns" value="http://www.ascc.net/xml/schematron"/&gt;
            &lt;map:parameter name="xmlform-validator-schema" value="schematron/howto-xmlform-sch-report.xml"/&gt;
            &lt;map:parameter name="xmlform-id" value="form-feedback"/&gt;
            &lt;map:parameter name="xmlform-scope" value="session"/&gt;
            &lt;map:parameter name="xmlform-model" value="org.apache.cocoon.samples.xmlform.HowToBean"/&gt;
  
            &lt;!-- Content transformation logic --&gt;
            &lt;map:generate src="howto/{page}.xml"/&gt;
            &lt;map:transform type="xmlform" label="xml"/&gt;
            &lt;map:transform src="stylesheets/wizard2html.xsl"/&gt;
            &lt;map:transform src="stylesheets/xmlform2html.xsl"/&gt;
            &lt;map:serialize type="html"/&gt;
          &lt;/map:act&gt;
        &lt;/map:match&gt;         
          
        </pre>
  <p>The whole sitemap.xmap is below so you can just copy this over your current sitemap if you like. Your current sitemap is located in \apache\xml-cocoon2\src\scratchpad\webapp\mount\xmlform</p>
  <pre class="code">
        
        &lt;?xml version="1.0"?&gt;
        &lt;map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"&gt;
        
          &lt;!-- =========================== Components ================================ --&gt;
          &lt;map:components&gt; 
            &lt;map:actions&gt;
              &lt;map:action name="WizardAction" src="org.apache.cocoon.samples.xmlform.WizardAction"  
                logger="webapp.xmlform"/&gt;
              &lt;map:action name="HowtoWizardAction" src="org.apache.cocoon.samples.xmlform.HowtoWizardAction"  
                logger="webapp.xmlform"/&gt;
            &lt;/map:actions&gt;
            &lt;map:generators default="file"/&gt;
            &lt;map:transformers default="xslt"&gt;
              &lt;map:transformer name="xmlform" src="org.apache.cocoon.transformation.XMLFormTransformer" 
                logger="webapp.xmlform"/&gt;
            &lt;/map:transformers&gt;
            &lt;map:readers default="resource"/&gt;
            &lt;map:serializers default="html"/&gt;
            &lt;map:selectors default="browser"/&gt;
            &lt;map:matchers default="wildcard"&gt;
              &lt;map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcherFactory"/&gt;
            &lt;/map:matchers&gt;
          &lt;/map:components&gt;
        
          &lt;!-- =========================== Resources ================================= --&gt;
          &lt;map:resources&gt;
          &lt;/map:resources&gt;
        
          &lt;!-- =========================== Pipelines ================================= --&gt;
          &lt;map:pipelines&gt; 
            &lt;map:pipeline&gt;
        
              &lt;map:match pattern=""&gt;
                &lt;map:redirect-to uri="wizard.html"/&gt;
              &lt;/map:match&gt;
        
              &lt;!-- A non-trivial example - Feedback Wizard --&gt;
              &lt;map:match pattern="wizard.html"&gt;
                &lt;map:act type="WizardAction"&gt;
        
                  &lt;!-- XMLForm parameters for the AbstractXMLFormAction --&gt;
                  &lt;map:parameter name="xmlform-validator-schema-ns" value="http://www.ascc.net/xml/schematron"/&gt;
                  &lt;map:parameter name="xmlform-validator-schema" value="schematron/wizard-xmlform-sch-report.xml"/&gt;
                  &lt;map:parameter name="xmlform-id" value="form-feedback"/&gt;
                  &lt;map:parameter name="xmlform-scope" value="session"/&gt;
                  &lt;map:parameter name="xmlform-model" value="org.apache.cocoon.samples.xmlform.UserBean"/&gt;
        
                  &lt;!-- Content transformation logic --&gt;
                  &lt;map:generate src="wizard/{page}.xml"/&gt;
                  &lt;map:transform type="xmlform" label="xml"/&gt;
                  &lt;map:transform src="stylesheets/wizard2html.xsl"/&gt;
                  &lt;map:transform src="stylesheets/xmlform2html.xsl"/&gt;
                  &lt;map:serialize type="html"/&gt;
                &lt;/map:act&gt;
              &lt;/map:match&gt;  
        &lt;map:match pattern=""&gt;
                &lt;map:redirect-to uri="wizard.html"/&gt;
              &lt;/map:match&gt;
        
              &lt;!-- A non-trivial example - Feedback HowTo Wizard --&gt;
              &lt;map:match pattern="howto-wizard.html"&gt;
                &lt;map:act type="HowtoWizardAction"&gt;
        
                  &lt;!-- XMLForm parameters for the AbstractXMLFormAction --&gt;
                  &lt;map:parameter name="xmlform-validator-schema-ns" value="http://www.ascc.net/xml/schematron"/&gt;
                  &lt;map:parameter name="xmlform-validator-schema" value="schematron/howto-xmlform-sch-report.xml"/&gt;
                  &lt;map:parameter name="xmlform-id" value="form-feedback"/&gt;
                  &lt;map:parameter name="xmlform-scope" value="session"/&gt;
                  &lt;map:parameter name="xmlform-model" value="org.apache.cocoon.samples.xmlform.HowToBean"/&gt;
        
                  &lt;!-- Content transformation logic --&gt;
                  &lt;map:generate src="howto/{page}.xml"/&gt;
                  &lt;map:transform type="xmlform" label="xml"/&gt;
                  &lt;map:transform src="stylesheets/wizard2html.xsl"/&gt;
                  &lt;map:transform src="stylesheets/xmlform2html.xsl"/&gt;
                  &lt;map:serialize type="html"/&gt;
                &lt;/map:act&gt;
              &lt;/map:match&gt; 
            &lt;/map:pipeline&gt;
          &lt;/map:pipelines&gt; 
        &lt;/map:sitemap&gt;
        &lt;!-- end of file --&gt;
        
        </pre>
  <p>Congratulations! Now you have covered everything you need to create the mailing list forms.  Now all you need to do is to build the files and then deploy them in your web server.</p>
  <p>Use the command:</p>
  <p>build webapp -Dinclude.webapp.libs=true -Dinclude.scratchpad.libs=true webapp</p>
  <p>Place cocoon.war in your webapp folder if you are using Tomcat then restart Tomcat.</p>
  <p>In a browser go to http://localhost:8080/cocoon/mount/xmlform/howto-wizard.html and you should see the start page of the mailing list forms.</p>
  <p>To return to the <a href="howto-xmlform.html">start</a>
  </p>
  <a name="N10046"></a>
  <h3>Revisions</h3>
  <p>Find a problem with this document? Consider contacting the author or submitting your own revision. For instructions, read the How To Submit a Revision.</p>
  <ul></ul>
  </div>
  </td><td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  </table>
  </td>
  </tr>
  </table>
  <table summary="footer" cellspacing="0" cellpadding="0" width="100%" height="20" border="0">
  <tr>
  <td width="10"><img width="10" height="1" alt="" src="skin/images/spacer.gif"></td>
  </tr>
  <tr>
  <td colspan="2" height="1" bgcolor="#4C6C8F"><img height="1" width="1" alt="" src="skin/images/spacer.gif"><a href="skin/images/label.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/page.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/chapter_open.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a><a href="skin/images/current.gif"><img border="0" height="1" width="1" alt="" src="skin/images/spacer.gif"></a></td>
  </tr>
  <tr>
  <td colspan="2" bgcolor="#CFDCED" class="copyright" align="center"><font size="2" face="Arial, Helvetica, Sans-Serif">Copyright &copy; 2002 Apache Sofware Foundation. All Rights Reserved<script type="text/javascript" language="JavaScript"><!--
                document.write(". - "+"Last Published: " + document.lastModified);
              //  --></script></font></td>
  </tr>
  </table>
  </body>
  </html>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: general-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: general-cvs-help@xml.apache.org


Mime
View raw message