Pergunta

Eu estou tendo alguns problemas na obtenção de CGI.pm, a saída para o HTML5 em vez de XHTML 1.0 ou HTML 4.01.Quando eu tento "HTML5" ou "HTML 5" como o -dtd argumento start_html() Eu recebo um documento em HTML 4.Eu também tentei importar :HTML5, mas que não parecem funcionar.Algum conselho?

Foi útil?

Solução

  1. O doctype correto para HTML 5 é apenas "html", não "html5" ou "html 5" e não usa um DTD. O CGI.PM suporta apenas DTDs bem formados, não strings arbitrários. Como o HTML 5 Doctype não inclui um DTD bem formado, o CGI.PM (na versão atual, 3.49) não suporta o HTML 5 Doctype.

  2. O uso das funções de geração HTML do CGI.PM geralmente é desaprovado nos dias de hoje. Sistemas de modelos, como Modelo :: Toolkit ou HTML :: Modelo são preferidos por sua capacidade de separar de forma limpa a lógica do seu código da formatação de sua saída. Eles também, aliás, permitem especificar qualquer Doctype e código para qualquer versão do (x) html que você escolher.

Outras dicas

Aqui está um fragmento de algum código em que 'resolvi' esse problema usando força bruta.

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

Aqui estão algumas Perl5 quadros que são HTML5 amigável:

Catalisador http://www.catalystframework.org/ Dançarina http://perldancer.org/documentation Mojolicious http://mojolicio.us/

Eu estou inclinado para o uso de Mojolicious para o meu mais novo Perl do projeto.

Todos estes são mais relevantes para uma robusta de aplicativos HTML5 do que o módulo CGI.CGI ainda tem o seu lugar e ainda é desenvolvido/suporte, mas não o endereço robustos aplicativos HTML5, bem como alguns dos quadros que estão lá fora.

Patch o módulo para adicionar suporte para html5 ... ou apenas produzir um doctype manualmente e use -o normalmente. Se for válido xhtml 1.0 ou html 4.01, é válido HTML 5.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top