16

CGI.pm を XHTML 1.0 または HTML 4.01 ではなく HTML5 に出力するのに問題があります。"HTML5"or"HTML 5"-dtd引数として実行するstart_html()と、HTML 4 でドキュメントが取得されます:HTML5。何かアドバイス?

4

4 に答える 4

23
  1. HTML 5 の正しい doctype は、"html5" や "html 5" ではなく "html" であり、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 とコードを指定することもできます。

于 2010-05-13T08:54:55.357 に答える
8

これは、ブルートフォースを使用してこの問題を「解決」したコードの一部です。

# $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;
于 2011-04-04T15:10:21.650 に答える
3

HTML5 に適した Perl5 フレームワークを次に示します。

カタリストhttp://www.catalystframework.org/ ダンサーhttp://perldancer.org/documentation モジョリシャスhttp://mojolicio.us/

私は最新の Perl プロジェクトに Mojolicious を使用することに傾いています。

これらはすべて、CGI モジュールよりも堅牢な HTML5 アプリに関連しています。CGI はまだその場所を持っており、開発/サポートされていますが、堅牢な HTML5 アプリやいくつかのフレームワークには対応していません。

于 2011-11-25T14:52:51.787 に答える
2

モジュールにパッチを適用して HTML5 のサポートを追加するか、Doctype を手動で出力し、通常どおり使用します。有効な XHTML 1.0 または HTML 4.01 であれば、有効な HTML 5 です。

于 2010-05-13T08:52:34.140 に答える