AnyData-0.05 > HTMLtable

名前

HTMLtable - HTMLテーブルへのtieされたハッシュとDBI/SQLによるアクセス

概要

 use AnyData;
 my $table = adHash( 'HTMLtable', $filename );
 while (my $row = each %$table) {
    print $row->{name},"\n" if $row->{country} =~ /us|mx|ca/;
 }
 # ... その他のtieされたハッシュの操作

 または

 use DBI
 my $dbh = DBI->connect('dbi:AnyData:');
 $dbh->func('table1','HTMLtable', $filename,'ad_catalog');
 my $hits = $dbh->selectall_arrayref( qq{
     SELECT name FROM table1 WHERE country = 'us'
 });
 # ... その他のDBI/SQL操作

説明

このモジュールはHTMLテーブルに入っているデータを(AnyData.pmを使って)tieされたハッシュ として、あるいは(DBD::AnyData.pmを使って)DBI/SQLでアクセスできるデータベースとして 扱えるようにします。tieされたハッシュとDBIインターフェースは両方とも、HTMLテーブルを 読み込み、変更し、perlデータやローカルやリモート・ファイルからHTMLテーブルを 作ることができます。

このモジュールはCGI、HTML::Parser、HTML::TableExtractがインストールされていることを必要とします。

HTMLテーブルを読み込むとき、このモジュールは基本的にMatt Siskの素晴らしい HTML::TableExtractに、そのまま渡します。

adTie()、ad_catalog()の呼び出しで何もフラグが指定されなければ、TableExtractは depth=0、count=0で呼ばれます。言い換えれば、最初のテーブルの最初の行を見つけ、 それをテーブル全体のためのカラム名として扱います。もしadTie()、ad_catalog()の 呼び出しで'cols'(カラム名)のためのフラグが指定されるとカラム名のリストが TableExtractにheadersパラメータとして渡されます。もしユーザがheaders, depth, または countのためのフラグを指定すれば、それらは直接TableExtractに渡されます。

HTMLテーブルにエクスポートするとき、テーブル全体(table_flags)、カラム名の 入った先頭の行(top_row_flags)、そしてデータ行(data_row_flags)の属性を指定する ことができます。これのフラグはCGI.pmでのtableを作るメソッドの方法に従います。 例えば:

 print adExport( $table, 'HTMLtable', {
     table_flags    => {Border=>3,bgColor=>'blue'};
     top_row_flags  => {bgColor=>'red'};
     data_row_flags => {valign='top'};
 });

 table_flagsは何も指定されなければ、デフォルトでは{Border=>1,bgColor=>'white'}
 になります。

 top_row_flagsは何も指定されなければデフォルトでは{bgColor=>'#c0c0c0'} に
 なります;

 data_row_flagsは何も指定されなければ空になります。

 言い換えれば、何もフラグが指定されなければ、テーブルは1のボーダーで
 カラム・ヘッダがグレー、データ行は白になります。

 注意:このモジュールは選択されたテーブルを除いて、HTMLファイルの中のものを
 *何も*保存しません。そのため選択したテーブル以外のものがファイルに入っているのであれば、
 adTie()あるいは$dbh->func(...,'ad_import')を使ってテーブルを読み込み、
 adExport()あるいは$dbh->func(...,'ad_export')で別のファイルにテーブルを
 出力したくなるでしょう。HTMLtableフォーマットを使っているときには、
 これがデータへの変更を保存するための唯一の方法です。adTie()コマンドは
 ファイルに*書き込みません*。

作者と著作権(=AUTHOR & COPYRIGHT)

copyright 2000, Jeff Zucker <[email protected]> all rights reserved

翻訳者

川合孝典([email protected])