为了我自己的启迪,我构建了一个包含表单的 XHTML Strict 1.0 页面。我希望它只接受 text/xml MIME 类型,所以我相应地指定了接受属性。但是,当还包含enctype ="mulipart/form-data" 属性-值对时,无法对其进行验证。
在使用 XHTML Strict 1.0 时,是否有替代指定 enctype 的方法?我是否需要指定 enctype 或类似的东西?
我还没有设置实际的“动作”(cgi 或其他一些后端功能)。我目前只关心客户端,并希望在上传任何不是 xml 的内容时提示用户。我在这里需要 JavaScript 吗?
此外,似乎没有太多人喜欢任何形式的 XHTML。如果您可以为静态页面自由选择 XHTML Strict/Frameset/Transitional 或 HTML 4.01,哪个标准最好?
2 回答
表单编码(enctype 属性)必须是multipart/form-data
文件上传工作。
据我所知,该accept
属性根本没有在任何浏览器中实现。
因此,如果您想在实际上传之前对所选文件提供任何反馈,使用 Javascript 似乎是唯一的选择。
有些人对 XHTML 有非常强烈的看法,但这并不意味着它不是一个广泛使用的标准。
首先解决最后一点:Strict XHTML 1.1 受到以下事实的困扰:W3C 建议确实要求您以 MIME 类型application/xml+xhtml
或类似的方式提供文档,而在 Web 服务器上以最满意的方式设置几乎是不可能的,如果不是全部,当前客户。因此,如果您无论如何都不能正确地做到这一点,那么您还不如使用 HTML 4.01,它在语法上几乎等同并且可以说更强大(例如 HTML 4.01 可以有效地禁止嵌套锚点,而 XHTML 必须将其添加为文本额外子句)。您将完成相同的工作,并且几乎所有现有客户都会理解它。(因为我相信您只会使用 DOM 方法来操作文档客户端,所以 AJAX 后端发送其他形式的 XML 也不会有问题。)
对于第一个问题:没有什么可以强迫任何客户做任何具体的事情。该accept
属性是对客户端的提示,您的服务器可能会接受或拒绝什么,但它不必以任何定义的方式对此采取行动。如果您愿意,您可以使用脚本在客户端添加一些可选的附加验证,但当然您也必须始终验证服务器上的输入数据。