Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
PerlMonks and XHTML

by Ovid (Cardinal)
on Mar 28, 2001 at 16:41 UTC ( #67804=perlquestion: print w/replies, xml ) Need Help??

Ovid has asked for the wisdom of the Perl Monks concerning the following question:

From perldoc CGI
By default, versions 2.69 and higher emit XHTML ( The -no_xhtml pragma disables this feature. Thanks to Michalis Kabrianis <> for this feature.
I am using 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="" 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 HTML functions aren't valid XHTML. Is this a bug or is it a feature of transitional XHTML? Do others have this issue?


Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

Replies are listed 'Best First'.
Re: and XHTML
by mirod (Canon) on Mar 28, 2001 at 17:16 UTC

    According to XHTML it should be <br /> or <br></br> and it is with use CGI. The problem seems to be with CGI::Pretty. I guess you found a bug there.

      Yup, it's a bug with CGI::Pretty. Sigh. There was a bug in $CGI::VERSION 2.46 with CGI::Pretty that was stripping the attributes of HTML tags. Yet another reason to avoid CGI::Pretty.



      Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.

      It may be a bug - in my copy, the lines:

      if ($linebreak) { $break = $XHTML ? "<br />" : "<br>"; }

      .. appear, so they know about this already, it's in version 2.752 (what I got here). Perhaps you need to upgrade

Re: and XHTML
by j.a.p.h. (Pilgrim) on Mar 28, 2001 at 18:31 UTC
    Note that at least with IE 5.01 SP 2 and XHTML Transitional, an empty <title /> element will cause the page not to render. I was almost pulling my hair out trying to hunt down that one.
Re: and XHTML
by little (Curate) on Mar 29, 2001 at 02:07 UTC does also omit the trailing slash (best after a space to be best recognised by browsers) before the tag closes.
    but forget it, it's late and I'm tired.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://67804]
Approved by root
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2023-09-27 18:26 GMT
Find Nodes?
    Voting Booth?

    No recent polls found