Как получить CGI.pm для вывода HTML5 вместо XHTML 1.0?

У меня возникли проблемы с получением CGI.pm для вывода на HTML5 вместо XHTML 1.0 или HTML 4.01. Когда я пытаюсь использовать "HTML5" или "HTML 5" как аргумент -dtd в start_html(), я получаю документ в HTML 4. Я также попытался импортировать :HTML5, но это тоже не работает. Любые советы?

Ответы

Ответ 1

  • Правильный doctype для HTML 5 - это просто "html", а не "html5" или "html 5", и не использует DTD. CGI.pm поддерживает только хорошо сформированные DTD, а не произвольные строки. Так как HTML-тип HTML 5 не содержит хорошо сформированного DTD, CGI.pm(начиная с текущей версии, 3.49) не поддерживает доктрину HTML 5.

  • Использование функций генерации HTML CGI.pm обычно не одобряется в наши дни. Системы шаблонов, такие как Template::Toolkit или HTML::Template, являются предпочитают их способность четко отделять вашу логику кода от форматирования ее вывода. Они также, кстати, позволяют указать любой тип и код до любой версии (X) HTML, которую вы выберете.

Ответ 2

Здесь фрагмент из некоторого кода, где я "решил" эту проблему, используя грубую силу.

# $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;

Ответ 3

Вот некоторые фреймворки Perl5, дружественные HTML5:

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

Я склоняюсь к использованию Mojolicious для моего нового проекта Perl.

Все они более важны для надежных приложений HTML5, чем модуль CGI. CGI все еще имеет свое место и по-прежнему развивается/поддерживается, но не рассматривает надежные приложения HTML5, а также некоторые из представленных там фреймворков.

Ответ 4

Запустите модуль, чтобы добавить поддержку HTML5... или просто выведите Doctype вручную, а затем используйте его как обычно. Если он действителен XHTML 1.0 или HTML 4.01, то он действителен HTML 5.