 <p><strong>For the XSLT part I recommend using the "Fill-in the blasnks" technique</strong> -- see a simple example here: <a href="http://stackoverflow.com/a/8674694/36305">http://stackoverflow.com/a/8674694/36305</a>.</p> <p>The form skeleton will look like this:</p> <pre><code>&lt;form name="formRoot" xmlns:gen="my:gen"&gt; &lt;gen:name/&gt; &lt;/form&gt; </code></pre> <p>The XSLT code will contain a template matching <code>gen:name</code> that produces:</p> <pre><code>&lt;p&gt;Name&lt;/p&gt;&lt;input name="name" value="Name"/&gt; </code></pre> <p>The URL to the form-skeleton is passed as an external parameter to the XSLT transformation.</p> <p>The source XML document (URL or itself) is passed as another external parameter.</p> <p><strong>Thus the XSLT transformation can process any source XML document and insert the results of processing into any form-skeleton document</strong>.</p>