Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

CGI.pm and XHTML

by Ovid (Cardinal)
on Mar 28, 2001 at 16:41 UTC ( [id://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, 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.

Replies are listed 'Best First'.
Re: CGI.pm 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.

      Thanks!

      Cheers,
      Ovid

      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 CGI.pm?

Re: CGI.pm 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: CGI.pm and XHTML
by little (Curate) on Mar 29, 2001 at 02:07 UTC
    CGI.pm 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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2024-09-18 21:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    The PerlMonks site front end has:





    Results (25 votes). Check out past polls.

    Notices?
    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.