如何让 CGI.pm 输出 HTML5 而不是 XHTML 1.0?
我在让 CGI.pm 输出到 HTML5 而不是 XHTML 1.0 或 HTML 4.01 时遇到一些问题。当我尝试将 "HTML5"
或 "HTML 5"
作为 start_html()
中的 -dtd
参数时,我得到HTML 4 中的文档。我也尝试过导入 :HTML5
,但这似乎也不起作用。有什么建议吗?
I'm having some trouble getting CGI.pm to output to HTML5 instead of XHTML 1.0 or HTML 4.01. When I try "HTML5"
or "HTML 5"
as the -dtd
argument in start_html()
I get a document in HTML 4. I've also tried importing :HTML5
, but that doesn't seem to work either. Any advice?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
HTML 5 的正确文档类型只是“html”,而不是“html5”或“html 5”,并且不使用 DTD。 CGI.pm 仅支持格式良好的 DTD,而不支持任意字符串。由于 HTML 5 文档类型不包含格式良好的 DTD,因此 CGI.pm(截至当前版本 3.49)不支持 HTML 5 文档类型。
如今,使用 CGI.pm 的 HTML 生成功能通常不受欢迎。模板系统,例如 Template::Toolkit 或 HTML::Template 是首选,因为它们能够干净地将代码逻辑与其输出格式分开。顺便说一句,它们还允许您为您选择的任何版本的 (X)HTML 指定任何文档类型和代码。
The correct doctype for HTML 5 is just "html", not "html5" or "html 5", and does not use a DTD. CGI.pm only supports well-formed DTDs, not arbitrary strings. Since the HTML 5 doctype does not include a well-formed DTD, CGI.pm (as of the current version, 3.49) does not support the HTML 5 doctype.
Using CGI.pm's HTML-generation functions is generally frowned upon these days. Templating systems such as Template::Toolkit or HTML::Template are preferred for their ability to cleanly separate your code's logic from the formatting of its output. They also, incidentally, allow you to specify whatever doctype and code to whatever version of (X)HTML you choose.
这是一些代码的片段,我使用暴力“解决”了这个问题。
Here's a fragment from some code where I 'solved' this problem using brute force.
以下是一些对 HTML5 友好的 Perl5 框架:
Catalyst http://www.catalystframework.org/
舞者 http://perldancer.org/documentation
Mojolicious http://mojolicio.us/
我倾向于在我最新的 Perl 项目中使用 Mojolicious。
所有这些都比 CGI 模块更适合强大的 HTML5 应用程序。 CGI 仍然占有一席之地,并且仍在开发/支持,但它不能解决强大的 HTML5 应用程序以及一些现有框架的问题。
Here are some Perl5 frameworks that are HTML5 friendly:
Catalyst http://www.catalystframework.org/
Dancer http://perldancer.org/documentation
Mojolicious http://mojolicio.us/
I'm leaning toward using Mojolicious for my newest Perl project.
All of these are more relevant for robust HTML5 apps than the CGI module. CGI still has its place and is still developed/supported but it does not address robust HTML5 apps as well as some of the frameworks that are out there.
修补模块以添加对 HTML5 的支持……或者只是手动输出 Doctype,然后正常使用它。如果它是有效的 XHTML 1.0 或 HTML 4.01,那么它就是有效的 HTML 5。
Patch the module to add support for HTML5 … or just output a Doctype manually, then use it as normal. If it is valid XHTML 1.0 or HTML 4.01 then it is valid HTML 5.