簡體   English   中英

如何讓CGI.pm輸出HTML5而不是XHTML 1.0?

[英]How do I get CGI.pm to output HTML5 instead of XHTML 1.0?

我在將CGI.pm輸出到HTML5而不是XHTML 1.0或HTML 4.01時遇到了一些麻煩。 當我在start_html()嘗試"HTML5""HTML 5"作為-dtd參數時,我在HTML 4中獲得了一個文檔。我也嘗試導入:HTML5 ,但這似乎也不起作用。 有什么建議?

  1. HTML 5的正確doctype只是“html”,而不是“html5”或“html 5”,並且不使用DTD。 CGI.pm僅支持格式良好的DTD,而不支持任意字符串。 由於HTML 5 doctype不包含格式良好的DTD,因此CGI.pm(截至當前版本,3.49)不支持HTML 5 doctype。

  2. 使用CGI.pm的HTML生成函數現在通常不贊成。 諸如Template :: ToolkitHTML :: Template之類的模板化系統因其能夠干凈地將代碼的邏輯與其輸出的格式分開而成為首選。 順便提一下,它們還允許您為所選的任何(X)HTML版本指定任何doctype和代碼。

這是一些代碼片段,我用蠻力解決了這個問題。

# $html is accumulator for HTML string
my $html;

# <html> tag and <head> section
my $dtd      = '<!DOCTYPE html>';   # HTML5 DTD
my $title    = "Storage analysis of $HOSTNAME as of $TODAY";
$html    .= start_html(
    -title  => $title,
    -style  => {
        -code  => $css,
    }
);

# KLUDGE: CGI.pm doesn't support HTML5 DTD; replace the one it puts in.
$html    =~  s{<!DOCTYPE.*?>}{$dtd}s;

以下是一些HTML5友好的Perl5框架:

Catalyst http://www.catalystframework.org/ Dancer http://perldancer.org/documentation Mojolicious http://mojolicio.us/

我傾向於使用Mojolicious來完成我最新的Perl項目。

所有這些都比強大的HTML5應用程序更適用於CGI模塊。 CGI仍然有它的位置,仍然是開發/支持但它沒有解決強大的HTML5應用程序以及那里的一些框架。

修補模塊以添加對HTML5的支持...或者只是手動輸出Doctype,然后照常使用它。 如果它是有效的XHTML 1.0或HTML 4.01,則它是有效的HTML 5。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM