CGI.pm で XHTML 1.0 ではなく HTML5 を出力するにはどうすればよいですか?
-
26-09-2019 - |
質問
CGI.pm を XHTML 1.0 または HTML 4.01 ではなく HTML5 に出力するのに問題があります。試してみると "HTML5"
または "HTML 5"
として -dtd
の引数 start_html()
HTML 4 でドキュメントを取得します。インポートも試してみました :HTML5
, 、しかしそれもうまくいかないようです。何かアドバイス?
解決
HTML 5 の正しい doctype は、「html5」または「html 5」ではなく、「html」のみであり、DTD は使用されません。CGI.pm は整形式の DTD のみをサポートし、任意の文字列はサポートしません。HTML 5 doctype には整形式の DTD が含まれていないため、CGI.pm (現在のバージョン 3.49 時点) は HTML 5 doctype をサポートしていません。
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である。