CGI (start_html, end_html)■この章でできること
・HTMLドキュメントヘッダを生成する
・HTMLのページタイトルを設定する
・HTMLの著作者を設定する
・HTMLのベースパスを設定する
・HTMLの使用言語を設定する
・HTMLのDOCTYPE宣言を設定する
HTTPヘッダの生成ではHTTPヘッダの生成について解説しました。ほとんどのCGIは、HTTPヘッダを出力した後は、次にHTMLドキュメント、つまりWebページのソースを出力します。
HTMLドキュメントは、大きく分けてヘッダ部と本体に分けられます。これらを自分で記述して出力することももちろんできますが、ここでは、CGIモジュールを使ってHTMLドキュメントのヘッダ部を生成する方法を解説します。
HTMLヘッダを生成するには、CGI::start_htmlメソッドを使います。まずはサンプルから見てみましょう。
#!/usr/bin/perl ############################################# # HTMLヘッダのサンプル1 # Author: "Perl Programming Tips" ############################################# use CGI qw/:standard/; print header(); print start_html(-title=>'HTML Header Sample'); print 'Sample'; print end_html();
(実行結果はここをクリック)
このコードが生成するHTMLドキュメントは次のようになります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <head> <title>HTML Header Sample</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> Sample </body> </html>
start_htmlメソッドは、HTMLのヘッダ部と<body>タグの始まりを生成します。<body>タグの終わりはend_htmlメソッドで生成できます。
では、start_htmlメソッドの詳細です。
start_htmlのパラメータは全て省略可能です。標準的なパラメータは上で説明したものが全てですが、この他にさまざまな付加的なパラメータを指定することができます。これについては次章で解説します。ここでは標準的なパラメータについて解説します。
まず、-titleですが、ここにはHTMLドキュメントのタイトルの指定します。<title>title</title>の形式でタグが生成されます。実際の使用例は上のサンプルを参照してください。
-authorはメールアドレスを指定します。これを指定した場合、<link rev="made" href="mailto:author" />の形式のタグが生成されます。
-baseと-xbaseは、相対リンクのベースになるパスを指定します。ページ内のリンクが相対パス形式の場合、ベースになるパスとしてこの値が使われます。-baseにtrueを指定した場合は現在のドキュメントのURLが使われます。-xbaseでは任意のURLを指定できます。いずれも、<base href="" />の形式のタグが生成されます。
では、これらを使ったサンプルを次に示します。
#!/usr/bin/perl ############################################# # HTMLヘッダのサンプル2 # Author: "Perl Programming Tips" ############################################# use CGI qw/:standard/; print header(); print start_html(-title=>'HTML Header Sample', -author=>'webmaster@g-ishihara.com', -base=>'true'); print 'Sample'; print end_html();
(実行結果はここをクリック)
このコードが生成するHTMLドキュメントは次のようになります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <head> <title>HTML Header Sample</title> <link rev="made" href="mailto:webmaster%40g-ishihara.com" /> <base href="http://cgi.g-ishihara.com/perl/cgi04_02.cgi" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> Sample </body> </html>
次は-langですが、これは<html>タグの要素として指定する言語を指定します。デフォルトは「en-US」です。特にlang要素が必要ない場合には、-lang=>''として空文字列を指定します。また、-dtdパラメータでHTML2.0、3.2を指定した場合にはlang要素は生成されません。
-dtdはDOCTYPE宣言の指定をします。HTMLのバージョンや従っている書式などの宣言をします。以降のHTML文書は、ここで宣言しているDTDに準拠していることを示すためのものです。指定しなかった場合でも適切に<!DOCTYPE>タグが生成されます。指定する場合は配列へのリファレンスを渡します。
では、これらを使ったサンプルを次に示します。
#!/usr/bin/perl ############################################# # HTMLヘッダのサンプル3 # Author: "Perl Programming Tips" ############################################# use CGI qw/:standard/; print header(); print start_html(-title=>'HTML Header Sample', -lang=>'ja-JP', -dtd=>['-//W3C//DTD XHTML 4.01 Transitional//EN', 'http://www.w3.org/TR/html4/loose.dtd']); print 'Sample'; print end_html();
(実行結果はここをクリック)
このコードが生成するHTMLドキュメントは次のようになります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja-JP" xml:lang="ja-JP"> <head> <title>HTML Header Sample</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> Sample </body> </html>