From
perldoc CGI
By default, CGI.pm versions 2.69 and higher emit XHTML (http://www.w3.org/TR/xhtml1/). The -no_xhtml pragma disables this feature. Thanks to Michalis Kabrianis <kabrianis@hellug.gr> for this feature.
I am using CGI.pm version 2.74.
Here's the program:
#!/usr/bin/perl -wT
use strict;
use CGI::Pretty qw( :standard );
print header,
start_html( -title => 'Password Check',
-BGCOLOR => 'navy',
-text => 'white' ),
h1( 'It worked' ),
hr(),
br(),
end_html;
Here's the output:
Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"><head><title>P
+assword Check</title>
</head><body text="white" bgcolor="navy">
<h1>
It worked
</h1>
<hr><br></body></html>
According to the
w3c spec (see section 4.6, "Empty Elements):
Empty elements must either have an end tag or the start tag must end with />. For instance, <br/> or <hr></hr>.
Unfortunately, the hr and br tags output by the CGI.pm HTML functions aren't valid XHTML. Is this a bug or is it a feature of transitional XHTML? Do others have this issue?
Cheers,
Ovid
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.