1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type" /> 5 <title>Creating Applications: Recommendations and Advice</title> 6 <meta name="generator" 7 content="amaya 8.1a, see http://www.w3.org/Amaya/" /> 8 <link href="styles.css" rel="stylesheet" type="text/css" /> 9 </head> 10 <body> 11 <h1>Creating Applications: Recommendations and Advice</h1> 12 <ol> 13 </ol> 14 <p>To avoid hard-to-explain problems when designing and testing 15 templates, the following advice may be of some use:</p> 16 <h2>Beware of Nesting Elements in Multiple-Choice Elements</h2> 17 <p>It is not necessarily a good idea to nest elements inside 18 multiple-choice elements like this:</p> 19 <pre><multi><br /> <multi-enum value="1"/><br /> <multi-enum value="1"/><br /> <multi-enum value="1"/><br /> <nested value="x"/><br /></multi></pre> 20 <p>The reason for this is that the number of multiple-choice values may 21 vary within your application, and the nested elements will appear 22 at a different position depending on how many such values have been 23 inserted. Whilst this might not affect some applications, at least not 24 to begin with, the usage of more advanced features (<a 25 href="selectors.html">selectors</a>, for example) will probably expose 26 problems due to the way XSLForms reconstructs the XML document data 27 from the input form data.</p> 28 <h2>Make Sure the Output Structure Agrees with the Template</h2> 29 <ol> 30 </ol> 31 <p>Since XSLForms templates essentially describe the presentation of an 32 XML document, it is vital that the output form data structure agrees 33 with the template - that is, the output structure can be properly 34 processed by the template and that all parts of the template are 35 displayed as expected. It is also very important to make sure that 36 transformations on the input document produce all 37 the necessary elements for the output document so that the resulting 38 page gives the user the opportunity to specify data that is missing. 39 Consider this section of an example template:</p> 40 <pre><p template:element="package"><br /> <p template:element="author"><br /> Name: <input template:attribute="name" name="{template:this-attribute()}" type="text" value="{$this-value}"/><br /> </p><br /></p></pre> 41 <p>Here, if the <code>author</code> element is not found in the 42 output structure, no field will be produced in the Web page, no 43 opportunity will be given for an author to be specified, and no author 44 information will subsequently be editable. One solution is to introduce 45 the <code>author</code> element into the XML document when 46 creating the <code>package</code> element - this should then 47 "bootstrap" the process and ensure that the author details will remain 48 editable as long as the <code>package</code> element exists.</p> 49 <ol> 50 </ol> 51 </body> 52 </html>