Domanda

Sto avendo qualche difficoltà a trovare CGI.pm di uscita a HTML5 invece di XHTML 1.0 o HTML 4.01. Quando provo "HTML5" o "HTML 5" come argomento -dtd in start_html() ho un documento HTML 4. Ho provato anche l'importazione :HTML5, ma che non sembra funzionare. Qualche consiglio?

È stato utile?

Soluzione

  1. Il doctype corretto per HTML 5 è solo "html", non "HTML5" o "HTML 5", e non utilizza un DTD. CGI.pm supporta solo DTD ben formate, non stringhe arbitrarie. Dal momento che il DOCTYPE HTML 5 non include un DTD ben formato, CGI.pm (a partire dalla versione attuale, 3.49) non supporta il DOCTYPE HTML 5.

  2. Utilizzando le funzioni HTML generazione di CGI.pm è generalmente malvista in questi giorni. sistemi di templating quali Template Toolkit :: o HTML :: Template sono preferiti per la loro capacità di separare in modo pulito la logica del codice della formattazione della sua produzione. Hanno anche, per inciso, consentono di specificare qualsiasi DOCTYPE e il codice a qualsiasi versione di (X) HTML si sceglie.

Altri suggerimenti

Ecco un frammento di un codice in cui ho 'risolto' questo problema usando la forza 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;

Ecco alcuni quadri Perl5 che sono HTML5 amichevole:

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

Sono sporgendosi verso l'uso Mojolicious per il mio progetto più recente di Perl.

Tutti questi sono più rilevanti per robuste applicazioni HTML5 rispetto al modulo CGI. CGI ha ancora il suo posto ed è ancora sviluppato / supportato, ma non affronta robuste applicazioni HTML5 così come alcuni dei quadri che sono là fuori.

Patch il modulo per aggiungere il supporto per HTML5 ... o solo uscita un DOCTYPE manualmente, quindi utilizzare come normale. Se è validato XHTML 1.0 o HTML 4.01, allora è valida HTML 5.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top