Live Data Embedder

Contact

Markdownホスティング → 体験サービス受付け中

Home > Authoring > Guide > Embedder | English

はじめに

Live Data EmbedderはApacheなどWebサーバ配下でページ要求ごとにフィルタとして動作するプリプロセッサです。 Embedderはテキストソース内のマクロ変数と呼ばれる特殊なマーカーを、SQLデータベースやCSVファイルなどのデータテーブルに保存された値にダイナミックに置き換えます。

マクロにはボタンマクロというものもあり、これをテキストソースに埋め込むことで、ユーザにデータの一覧を見せたり、新しいデータをタイプして登録したり、既存のデータを更新・削除してもらうことができます。

データテーブル

Embedderは行と列からなる表形式のデータを操作します。 これをデータテーブルと呼びます。

データテーブルの例です。

Date Customer Apple Orange Kui
20-05-01 yamada 10 10 0
20-05-03 suzuki 10 0 10
20-05-10 yamada 0 0 20

Embedderで作成したWebページを使って次のことが行えます。

行の一覧

Markdownでは縦棒(|)を使ってHTMLの表を書きます。 Embedderを使うと、表の一行にあたるテンプレートを使って、データベーステーブル内の全行のデータを表示することができます。

最初の縦棒を$|に、最後の縦棒を|$に変えることでその行がテンプレートであることを表します。

| Date | Customer | Apple | Orange | Kui | |
|--|--|--|--|--|--|
$| $(date) | $(customer) | $(apple) | $(orange) | $(kui) | $(!edit) |$

$(name)という書式は表示変数と呼ばれ、その位置に変数のかわりにデータ行のnameという名前の列の値を表示することを指定するものです。 データテーブルの行が複数ある場合、各行のその列の値が順に表示されます。

前出の表に対して上記の行テンプレートを使うと次の出力が生成されます。

Date Customer Apple Orange Kui
20-05-01 yamada 10 10 0 [Edit]
20-05-03 suzuki 10 0 10 [Edit]
20-05-10 yamada 0 0 20 [Edit]

最後の列の[Edit]は次節で述べます。

個別の行

Webサーバにデータ項目を送信するにはHTMLフォームを使います。 次の構文はEmbedder流のHTMLフォームの表現方法です。 これによりサーバ上のデータテーブルに行データを書き込むことができます。

$form$

Date: $(?date)
Name: $(?customer)

Apple: $(?apple)
Orange: $(?orange)
Kui: $(?kui)

$(!update)  $(!delete)
$(!add)     $(!reset) 

$end$

$forms$end$のマーカーは、Embedderに対して、その間に挟まれた行からデータテーブル操作を行うために必要なHTMLフォームを作成することを指示します。

$(?name)という書式(疑問符に変数名が続く)は投入変数あるいは投入マクロと呼ばれ、その値の入力のためのHTML入力フィールドに置き換えられます。

$(!action)という書式(感嘆符に操作名が続く)は、アクションマクロと呼ばれるボタンマクロの一種で、HTMLフォームの送信ボタンや、フォーム以外の場所に置くリンクボタンに該当します。 このボタンをクリックするとその操作内容(アクション)がWebサーバに送られ、データテーブルが更新され、その結果を反映したページが表示されます。

ページアクションには: 追加(add)、更新(update)、削除(delete)、編集(edit)、リセット(reset)があります。

上記のフォームは次のようになります。

Date: [          ]
Name: [          ]

Apple:  [          ]
Orange: [          ]
Kui:    [          ]

[Update]  [Delete]
[Add]     [Reset]

提供: 横浜工文社 Kobu.Com

2020-may-09 project started
2020-jun-05 documents for the first working implementation
2020-aug-23 published to github

Contact