我同意 Jeff Beck 的评论,并注意到以下几点。
您说您的目标受众是非技术性的,并且上述所有解决方案都将涉及学习 HTML 和复杂的模板语言,对于您的受众来说可能是初学者。
上面的解决方案似乎也需要比您的问题所需的更复杂。MooTools、Dojo 等似乎有些矫枉过正。XForms 和 XSLT 更是如此。是的,它们会起作用并为您提供许多额外的功能,但是您是否需要与这些额外功能相关的复杂程度和调试/可维护性/培训问题?
您的普通教师或业务用户可能对如何在 Excel 中输入和保存文件有基本的了解。如果您可以教他们如何以 CSV 格式保存并上传表单,或者甚至更好地安装一个将保存为 CSV 并将其发布到您的网站的宏,那么这可能是他们需要的唯一培训。要获得语义,您可以添加更多训练,并将报告的第一行作为列名,将第二行作为列类型。正如 Jeff 指出的那样,它并不优雅,但对于可能受到技术挑战的用户来说,它很容易采用。
在服务器端,我推荐以下堆栈:
Web 服务器 => node.js(可能使用 Chain - github.com/hassox/chain)
数据存储 => Redis(和 node-redis)
模板 => Haml-js (github.com/creationix/haml-js)
CSV 解析 => 请参阅http://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/
并确保使用评论中的固定版本(引用逗号)。
您更精通技术的用户可以在不影响安全性的情况下自定义 HAML,并且 HAML 非常简单,只需稍加培训:这个 HAML...
%body
.profile
.left.column
#date= print_date()
#address= current_user.address
.right.column
#email= current_user.email
#bio= current_user.bio
产生...
<div class="profile">
<div class="left column">
<div id="date">Thursday, October 8, 2009</div>
<div id="address">Richardson, TX</div>
</div>
<div class="right column">
<div id="email">tim@creationix.com</div>
<div id="bio">Experienced software professional...</div>
</div>
</div>