PageSpinner データベースパブリッシング キット
PageSpinner と AppleScript を組み合わせることにより、あなたはデータベースからのデータをウェブページで公開できます。 このデータベースパブリッシングキットはオンライン・データベースへの接続をサポートしません、ページは一度作られるとスタティック(不変)です。これによりデータを Mac でメンテナンスしながら、Unix ベースのサーバーでコンテンツを公開することが可能になります。
ここでは、含まれているサンプルを使ったり修正してあなたが自分のデータベースをどのようにして公開することが出来るかを説明します。
データベースからデータを公開するには以下の項目を使用します:
- Script Editor で作成/編集された AppleScript
- データベース・アプリケーションで作成/メンテナンスされているデータベース
- PageSpinner で作成/編集された2つのテンプレートファイル
これらの項目について以下により詳しく説明します。 このキットには PageSpinner のテンプレート、サンプルスクリプト、FileMaker Pro, HyperCard, 4D Server 用のデータベースが含まれています。この見本の例は PageSpinner Documentation フォルダの "Database Publishing" という名前のフォルダにあります。 このスクリプトは"現姿"のままで供給されるものであり、Optima Systemは AppleScript の使用と学習に関して援助やサポートを供給するリソースを持っていません。AppleScript についての詳細は AppleScript Documentation フォルダにある AppleScript Documentationをご覧ください。
データベースからのコンテンツを含むウェブページを制作するには以下の手順を使用します:
- データベースアプリケーションであなたのデータベースを開く
- PageSpinner を起動する
- Script Editor で AppleScript を起動する
- (必要に応じて) Script Editor でテンプレートへのパスを指定する
- Check ボタンをクリックして AppleScript を実行する
- スクリプトは List テンプレートを基にして PageSpinner で新しいページを作成します
- データベース中にあるそれぞれのレコードについて:
- スクリプトはデータベースの指定されたフィールドからデータを取り出す
- スクリプトは PageSpinner の Record テンプレートファイルでプレースフォルダにデータを挿入する
- レコードコンテンツが入れられたテンプレートからの HTML テキストは List テンプレートから作られたページの末尾に挿入される
- スクリプトはレコードのリンクまたはアンカー名を記憶する
- スクリプトは List テンプレートから作られた PageSpinner ページに、すべてのレコードにリンクするリストで構成された目次を挿入する
Script Editor で作成/編集された AppleScript
AppleScripts は通常アプリケーション Script Editor(スクリプト編集プログラム) を使って書かれます。 このアプリケーションはシステムソフトウェアに含まれています。 英語版以外のシステムでは別の名前が付いています。
PageSpinner には、データベースをどのようにして公開するかを説明する3つのスクリプトが含まれています。あなたのシステムのローカライズされた AppleScript スクリプト表現形式によっては、スクリプトをリコンパイルして、キーワードを変更する必要があるかも知れません。
これらのスクリプトは製品についての情報のレコードを含む見本のデータベース(実際にはMacintosh コンピュータ)で働きます。
単一のリスト例はデフォルトで HyperCard Player と "Products HyperCard" という名前のファイルにあるデータを使うようになっています。マルチページとテーブルの例では、FileMaker Pro と "Products FileMaker Pro" という名前のファイルにあるデータを使うようになっています。
Database List Demo Script は、全てのレコードを含む単一ファイルを作成します。
Database Table Demo Scriptは、全てのレコードを含むテーブル付のファイルを作成します。
Database Multi-Page Demo Script は、 目次ファイルと各レコードの単一ページを作成し、レコードの各ページには、「次のページ」と「前のページ」へのリンクを含んでいます。
ページのカラーとレイアウトは PageSpinner テンプレートファイルを修正することにより容易に変更できます。
スクリプトは3つのセクションに別れます:
1. プリファレンスセクションには、変数の定義が含まれます:
- PageSpinner テンプレートファイルへのパス
- データベース名
- HTML ページに含まれる各種フィールドの名前
- レコードへのリンクに使われるユニークキー値を含むフィールドの名前
あなたのシステム上でスクリプトを走らせる前に、スクリプトがPageSpinner テンプレートファイルを発見できるように、それらへのパスを変更する必要があります。同様に、他のフィールド名を持つ別のデータベース/テーブルを使うときは、スクリプトのこのセクションで内容を編集する必要があるでしょう。
AppleScript の2番目のセクションでは、データベースから値を得て、 PageSpinner で設計されたレコードテンプレートに挿入するよう PageSpinner にこれらの値を伝えます。レコードテンプレートには、フィールドからのコンテンツが何処に置かれるかを示すプレースホルダーを含んでいます。 スクリプトはそれぞれのフィールドを繰返しループで処理する以下のコマンドを使用します:
repeat with fieldNameIndex in theFields -- For every field specified above tell DB_Access set theData to GetField(fieldNameIndex, currentRec) as text end tell tell application "PageSpinner" set search string to "$" & fieldNameIndex & "$" set replace string to theData replace all end tell end repeat -- For every fieldこのスクリプトのパートでは、どのデータベースアプリケーションを使用しているか、どうやってレコードにアクセスするかを知る必要がありません。関数を実行するパート
DB_Access
でGetField
を呼んでいるだけです。このやり方により、異なったデータベースアプリケーションに同じスクリプトを使ってアクセスすることが可能になります。すべてのレコードが処理された後、スクリプトは処理されたすべてのレコードへのリンクをリストにして挿入します。
あなたがこのスクリプトのセクションにあるコンテンツを編集しなければならないのは、データベースのレコードを違ったやり方で処理する必要がある場合だけでしょう。3. DB_Access セクション
スクリプトの3番目のセクションはデータベースアプリケーションとのコミュニケーションに使用します。 このパートはスクリプトの最後で
DB_Access
というスクリプトモジュールのフォームにあります。このモジュールは、以下の2つの関数でアクセスします:
GetNumRecords()
GetField(fieldName, recordIndex)
DB_Access
スクリプトはこのサンプルスクリプトの最後にあり、デフォルトで FileMaker Pro または HyperCard Player を使用するよう設定されています。スクリプトコードをこのモジュールの内側に置くことにより、データベースアプリケーション固有インプリメンテーションの詳細を隠すことが可能になります。そしてサポートされているどのデータベースでもアクセスできる汎用的なスクリプトを持つのが容易になります。
現時点の DB_Access モジュールのインプリメンテーションではリレーショナルデータベースをサポートしていません。つまり、データベースアプリケーションが一対一対応または多対一対応の関係を自動的に扱うとしても、このスクリプトは単一テーブルにあるフィールドにアクセスするだけです。
DB_Access スクリプトモジュールには次の DB アプリケーションのコマンドを含んでいます:
- FileMaker Pro 3.0 以降
- HyperCard 2.3.5 以降、スクリプトは HyperCard Player を使って開発
- 4D Server、ヘルパーアプリケーション4D AppleScript を使ってApple Script イベントをネットワーク上またはあなたのコンピュータで利用可能なサーバーに送ります
あなたが別のデータベースアプリケーションに切り換えたいと思ったら、スクリプトの中にある DB_Access セクションの内容を変更する必要があります。使用したいデータベースのコマンドを含んでいる行の前にあるコメント"--"
を取り除きます。そして、現在アクティブな2行のコマンド前に以下のようにコメントを付けます。つまり:
tell application "HyperCard Player"
set nRecs to (get count of card)これは、デフォルトで使われている単一リストスクリプトです。あなたは、
GetNumRecords()
関数の中とGetField()
関数の中にある両方の行を変更しなければなりません。
データベース・アプリケーションで作成/メンテナンスされているデータベース
PageSpinner には、FileMaker Pro 3.0 以降, HyperCard 2.3.5 以降, 4D Server (4D AppleScript使用) からのコンテンツにアクセスするためのモジュラースクリプトが含まれています。 これらのアプリケーション用に見本のデータベースが含まれています。 サンプルの AppleScript を使うときは、お望みのアプリケーションとこの見本として支給されたデータベースを使ってください。
別のデータベースアプリケーションを使おうとする場合は、スクリプトのDB_Access セクションでスクリプトの内容を変更する必要があります。また、スクリプトの定義セクションの内容を編集してデータベースとフィールドが公開されるものと一致するようにしなければなりません。
PageSpinnerで作成/編集された2つのテンプレートファイル
最終的に、あなたはテンプレートに使用される2つの PageSpinner ファイルを作る必要があります;ひとつのファイルはレコードからの各種フィールドを提示するのに使用される HTML を含んでいます、もうひとつはレコードのインデックスを含んだファイルとして使用されます。
あなたのブラウザを使って、含まれている見本のファイルを List Example で眺めることができます:
Record_Stationery.html
List_Stationery.html
しかしこれらのファイルにあるすべての情報を見るには、PageSpinner を使ってそれらのファイルを開きます
Record Template には、データベースから挿入されるフィールド毎に テキスト$fieldname$ とその名前 fieldname が含まれています。 $...$ はプレースホルダとしてデータベースからの実際の値に置き換えられます。上記の AppleScript 例を参照ください。
List Template には2つの特別なプレースホルダを含んでいます。ひとつはリンクのリストが置かれる場所であり、もうひとつはと実際のレコードが挿入される場所を指定します。
ノート: 大変重要な事ですが、これらのファイルは ひな形 ファイルとして保存されなければなりません。そうしない場合はプレースホルダはデータベースからのデータによって上書きされてしまいます。
チップス:Finder でファイルを選択し、ファイル : 情報を見る メニュー項目を使って情報ウィンドウにアクセスします。ウィンドウの右下にひな形チェックボックスがあります。そのファイルで作業している間、情報ウィンドウは開けたままにしておくことができます。
Japanese translation: Shuji HOSOKAWA (MuON)