Perl Perl_2
Perl 「 モジュール 」CGI.pm 動的なドキュメント その 5 start_html の設定 (0xd3)

目次 - Perl Index
Theme
Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0xd3 回。
CGI.pm で動的なドキュメントを生成する。その 5。
HTML ドキュメントヘッダを作成するメソッド start_html() のパラメータを確認する。
-xbase
-base
-target
-meta
パラメータの例示
CGI "HTML ドキュメントヘッダの作成" - perldoc.jp では、次のパラメータが例示されています。
print $q->start_html(-title=>'Secrets of Pyramids',
-author=>'fred@capricorn.org',
-base=>'true',
-target=>'_balnk',
-meta=>{'keywords'=>'pharaoh secret mummy',
'copyright'=>'copyright 1996 King Tut'},
-style=>{'src'=>'/styles/style.css'},
-BGCLOR=>'blue');
このコードの出力は次の通りです。
<!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>Secrets of Pyramids</title>
<link rev="made" href="mailto:fred%40capricorn.org" />
<base href="http://localhost" target="_balnk" />
<meta name="keywords" content="pharaoh secret mummy" />
<meta name="copyright" content="copyright 1996 King Tut" />
<link rel="stylesheet" type="text/css" href="/styles/style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body bgclor="blue">
メソッド start_html() のパラメータはすべてオプションだと言います。
実際に start_html() が理解するのは、「 -title 」「 -author 」「 -base 」「 -xbase 」「 -target 」で、それ以外のパラメータ ( 例えば BGCOLOR ) は、通常 body タグのアトリビュート ( attribute : 属性 ) として追加されるとのことです。
-xbase
パラメータ「 -xbase 」は、パラメータ「 -base 」によって生成される base タグの URL を変えるための HREF を提供することが出来ると言います。
base タグは、文書内で URI を指定する場合のベースになる URL を指定出来ます。
例えば、「 http://pointoht.ti-da.net/e6215627.html 」という URI があった場合に、予め base タグで「 <base href="https://pointoht.ti-da.net/"> 」を指定しておけば、文書内のリンクでは「 e6215627.html 」だけを書けば済む様になります。
パラメータ -base の値を設定する場合は、直接 URL を書かずに次の様に 真 を指定します。
start_html( -base => 'ture');
# または
start_html( -base => 1);
実際の Web 公開領域で動作させれば、base タグに当該 Web サイトの URL が設定されます。
パラメータ -xbase は、この base タグの URL を任意に設定出来ます。-xbase の値は、直接該当する URL を書きます。
start_html( -xbase => 'http://pointoht.ti-da.net/');
-xbase は -base の設定に関わりなく、HTML ヘッダの中で任意の URL を設定します。
-target
パラメータ「 -target 」は、リンク先やフォームのための標準のターゲットフレームを、アトリビュートとして指定します。
"一部の Web ブラウザではサポートされていない機能" との注意がありますが、おそらく 2014 年現在では、ほぼすべてのブラウザが対応している様に思います。ただし、a タグで指定する場合と、base タグで指定する場合はやや異なる動作をする可能性がある様なのでチェックは必要かもしれません。
target アトリビュートは、HTML のヘッダの中では、base タグに指定されます。
そのため、次の様に、-base, -xbase の指定がなくとも、-target を指定すると、その出力には自動的に base タグが含まれます。
print $q->header();
print $q->start_html(-target=>'_blank');
上記コードの出力は次の様になります。
<!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>Untitled Document</title>
<base href="http://***.com/" target="_balnk" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
-base の指定がないにも関わらず、base タグが ( アトリビュートhref も含めて ) 出力されていることが分かります。
ちなみに、title と meta タグの出力は、メソッド start_html() の標準です。
-meta
パラメータ「 -meta 」は、HTTP ヘッダ内で任意のメタ情報を指定するための meta タグを出力します。
meta タグではメタ情報として、「 http-equiv 」「 name 」といったアトリビュートの指定が可能で、それぞれの値として「 content 」を指定しますが、パラメータ -meta では、アトリビュート name のみ指定可能です。
HTTP ヘッダと同等の ( equivalent ) 指定を行うと言うアトリビュート http-equiv は、後で確認するパラメータ「 -header 」で指定します。
アトリビュート name には、任意の情報を記述しますが、Web ブラウザ等のソフトウェア側で対応していない 値 は無視されます。
アトリビュート name では、主に、著作権を記述する「 author 」や文書のキーワードを記述する「 keywords 」、それから文書の概要を説明する「 description 」等を指定します。
パラメータ -meta は、meta タグのアトリビュート name と値 content をハッシュリファレンスの組として指定します。
実際では、次の様にハッシュリファレンスを入れ子にして、複数のアトリビュート name を一度に指定可能です。
$q->start_html(-meta=>{'keywords'=>'perl function method',
'description'=>'a page for method test',
'copyright'=>'copyright 2014 pointoht'});
出力は次の通りです。
<head>
<title>Untitled Document</title>
<meta name="keywords" content="perl function method" />
<meta name="copyright" content="copyright 2014 pointoht" />
<meta name="description" content="a page for method test" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
0xd3 -> 0xd4 へ
次回も引き続き、メソッド start_html() のパラメータを確認します。
#// FIFA ワールドカップ 2014 ブラジル
2014 ブラジルワールドカップファイナル。アルゼンチン vs ドイツは、延長の末ドイツがアルゼンチンを下しました。通算 4 度目の優勝です。
至上最高級の個人リオネル・メッシを軸に据えた傭兵団のごときアルゼンチンも、10 年に渡る長期ミッションを着実に遂行した近代的なドイツの牙城は攻略出来ませんでした。
アルゼンチンを応援していた僕は、名実ともにメッシの大会となった未来を期待していましたが、現実の物語はその様になりませんでした。
アルゼンチンは十分に強かった。でも、ドイツはもう少しだけ強かった。セレスティブランコ ( 水色と白 )、良く晴れたとても切ない朝の空でした。
参考情報は以下の書籍を中心に Wikipedia および各 Web サイト。それと詳しい先輩。
参考 :「Randal L. Schwartz, brian d foy, Tom Phoenix 共著 近藤 嘉雪 訳「初めての Perl 第 6 版」(オライリー・ジャパン発行 ISBN978-4-87311-567-2)」
次回 (0xd4) へ続く。
目次 - Perl Index
Perl mp2 翻訳 Web コンテンツ圧縮の FAQ (d228)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)
Perl mp2 翻訳 既知のブラウザのバグの回避策をいくつか (d227)
Perl mp2 翻訳 Perl と Apache でのキュートなトリック (d226)
Perl mp2 翻訳 テンプレートシステムの選択 (d225)
Perl mp2 翻訳 大規模 E コマースサイトの構築 (d224)
Perl mp2 翻訳 チュートリアル (d223)