Как мне получить CGI.pm для вывода HTML5 вместо XHTML 1.0? - PullRequest
15 голосов
/ 13 мая 2010

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

Ответы [ 4 ]

23 голосов
/ 13 мая 2010
  1. Правильный тип документа для HTML 5 - это просто "html", а не "html5" или "html 5", и не использует DTD. CGI.pm поддерживает только правильно сформированные DTD, а не произвольные строки. Поскольку тип документа HTML 5 не включает в себя правильно сформированный DTD, CGI.pm (в текущей версии 3.49) не поддерживает тип документа HTML 5.

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

7 голосов
/ 04 апреля 2011

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

# $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 голосов
/ 25 ноября 2011

Вот некоторые фреймворки Perl5, которые поддерживают HTML5:

Катализатор http://www.catalystframework.org/ Танцор http://perldancer.org/documentation Радостный http://mojolicio.us/

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

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

2 голосов
/ 13 мая 2010

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

...