...which I do a poor job of describing here: [link|http://www.endue.org/endue/design/interfacelayer.htm#chunking|http://www.endue.org...ayer.htm#chunking]

Basically, the .html files get as small as:
<tr valign='top'>\n   <td><nobr><select name='ContactType'>%(TypeOptions)s</select></nobr></td>\n   <td><input type='text' name='ContactNum' value='%(Number)s' size='20' /></td>\n</tr>


...and a Python script uses an "assembler" class to interpolate values. Working very well so far.