CGI.pm で XHTML 1.0 ではなく HTML5 を出力するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2825382

質問

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

役に立ちましたか?

解決

  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 生成機能の使用は、最近では一般に嫌われています。などのテンプレート システム テンプレート::ツールキット または HTML::テンプレート コードのロジックを出力の書式設定から明確に分離できるため、この機能が好まれます。また、付随的に、選択した (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のフレームワークがあります:

触媒 http://www.catalystframework.org/する ダンサー http://perldancer.org/documentationする Mojoliciousの http://mojolicio.us/する

私は、最新のPerlプロジェクトのためMojoliciousのを使用して傾いています。

これらのすべては、CGIモジュールよりも強固なHTML5アプリケーションのためのより適切です。 CGIはまだその場所を持っており、まだ開発/サポートされていますが、それは強力なHTML5のアプリだけでなく、そこにあるフレームワークのいくつかを解決しませんされます。

その後、通常のようにそれを使用し、手動で

HTML5のサポートを追加するためのモジュールにパッチを適用...または単に出力文書型。それは有効なXHTML 1.0またはHTML 4.01である場合、それは有効なHTML 5である。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top