──────────────────────────────────────
設定の解説書: ソフトウェア「ボルボックス」
──────────────────────────────────────
2010年 7月24日
───────────────────
有限会社アゼロス
───────────────────
● フォルダ構造:
次の構成で、ライブラリ/CGI/ユーザの各種ファイルを設定します(カッコ
内は、必要なアクセス権です[※1]):
○ フォルダ構造:ライブラリ&CGI:
----------------------------------------------------------------------------
- bin (sysmgr.sysmgr 755) ... プログラム(コマンド・ユーティリティ用)
- cnf (sysmgr.sysmgr 644) ... 個別設定ファイル
- etc (sysmgr.sysmgr 644) ... 共通の雛形
- lib (sysmgr.sysmgr 644) ... 共有ライブラリ(pm, xsl)
- web_bin -> /var/www/bin/xmlcms
- bin (webmgr.apache 755) ... プログラム(CGI用)
- web_doc -> /var/www/doc/xmlcms
- doc (webmgr.apache 644) ... ウェブ用文書
- img (webmgr.apache 644) ... イメージ・ファイル
- css (webmgr.apache 644) ... 共有スタイルシート(css)
- lib (webmgr.apache 644) ... 共有スクリプト(js)
----------------------------------------------------------------------------
○ フォルダ構造:ユーザ(例):
※ 各ユーザのフォルダは(設定ファイルで個別に指定するので)自由に構成できま
す。
----------------------------------------------------------------------------
- xsl (sysmgr.sysmgr 644) ... XSL文書
- xml (apache.apache 664) ... XML文書
- etc (sysmgr.sysmgr 644) ... 個別の雛形
- bin (sysmgr.sysmgr 755) ... 個別のプログラム
- var (apache.apache 664) ... 遅延生成用日時ファイル、等
- web_doc -> /var/www/doc/sample ... ウェブ用公開文書
- doc (apache.apache 664)
- img (apache.apache 664)
- arc (apache.apache 664)
- css (webmgr.apache 664)
- lib (webmgr.apache 664)
----------------------------------------------------------------------------
1]それぞれのユーザ/グループは、次のように位置づけられます:
○ ユーザ:
・ sysmgr ... アプリケーションの管理ユーザ
・ webmgr ... ウェブ・コンテンツの管理ユーザ
・ apache ... ウェブ・サーバの実行ユーザ
○ グループ:
・ sysmgr ... アプリケーションの管理グループ
・ apache ... ウェブ・サーバの実行グループ
○ 各ユーザの第一所属グループ:
・ sysmgr: sysmgr
・ webmgr: apache
・ apache: apache
● 入出力:
○ 入出力:入力フォーム
入力内容をXML形式に変換するための入力フォームは、次の書式となります:
・ ノードの場合:
----------------------------------------------------------------------------
----------------------------------------------------------------------------
・ テキスト・ノードの場合(テキストを値に持つノード):
----------------------------------------------------------------------------
----------------------------------------------------------------------------
・ テキスト・ノードの文字列を変換したい場合:
----------------------------------------------------------------------------
----------------------------------------------------------------------------
※ ノードは、第1階層のノードから順に作成する必要があります(これは、シリア
ル番号を階層に沿って付ける必要がある、ということです)。
※ このとき必要なのは、始端ノード名のみです(終端ノード名は必要ありません)。
● データ構造:
○ データ構造:入力フォーム
編集画面の入力フォームは、次の書式で定義します:
----------------------------------------------------------------------------
<......>
... 入力フォームの定義
... ノードのパス(キー)
... ノードのパス(表示させたい場合に[1 ])
... このノードで入れ子表示を止めたいときに[1 ]
デフォルトの深さ指定より浅いノードに適用される
... 項目名(本来のノード名を表示させたいなら[1 ])
... 入力フォームの見せ方
i ... 一行フォーム
p ... 暗号フォーム(パスワード入力)
h ... 編集させない(表示のみ)
... 入力項目の高さ
... 内容の文字列変換指示
... アップロード先のディレクトリ。アップロードの指示を兼ねる
... その画像素材に至るURL(編集画面における画像のプレビュー用)
... 画像のリサイズ指示(横サイズ、単位:ピクセル)
... 項目の複製/削除
c ... 複製(書式の複製)
d ... 削除
... 選択項目
... 項目
... 名前
... 値
----------------------------------------------------------------------------
○ データ構造:生成マップ
XMLにXSLを適用し、指定の処理を行う生成マップは、次の書式で記述しま
す:
----------------------------------------------------------------------------
<......>
... 参照XMLファイル群(正規表現)(複数可)
p: ... 文字列を読み出し(これにXMLヘッダ+〜が付く)
f: ... ファイルを読み出し
r: ... ファイルを読み出し(正規表現)……初期値
v: ... ファイルを読み出し(一時ファイル)
x: ... プログラムを呼び出し(評価)
o: ... プログラムを呼び出し(シェル)
... 参照XSLファイル
f: ... ファイルを読み出し
s: ... ファイルを読み出し〜ファイル内の指定文字列(perl式)を置き換え……初期値
... 生成するファイル
f: ... ファイルに書き出し……初期値
v: ... ファイルに書き出し(一時ファイル)
g: ... 生成マップ処理
x: ... プログラムを呼び出し(評価)
... 生成前に実行するプログラム・コード(perl形式)
例えばXSLに与える引数(perlの連想配列形式)等(複数可)
x: ... プログラムを呼び出し(評価)……初期値
----------------------------------------------------------------------------
※ CGIでの処理モード指定(prcmod=?????? )は、指定されたXSLファイル内
で、次の変数から取り出すことができます:
$$entity{status}
※ 一時ファイルは、次の形で取り出すことができます:
$handle.\'_??????.xml\'
○ データ構造:メタマップ(サイトマップの生成マップ)
メタマップは、次の書式で記述します:
※ いまのところ、このXML形式を使うことはありません。現在の実装では、それ
ぞれの値は、設定ファイル内の次の変数に与えることになります:
$cmsgen::filgnx ... マップ生成用XMLファイル群(正規表現)
$cmsgen::filgns ... マップ生成用XSLファイル(XSL形式)
※ マップ生成用XSLファイルが空のときは、指定のXMLファイルのみが使われ
ます。このとき指定のXMLファイルは、(正規表現ではなく)単一のファイル
として指定する必要があります。
----------------------------------------------------------------------------
<......>
... マップ生成用XMLファイル群(正規表現)
... マップ生成用XSLファイル(XSL形式)
----------------------------------------------------------------------------
○ 提供される関数
・ xmlgen::sinput ... 標準入力から読み込み
・ xmlgen::output ... 標準出力に書き出し
・ cmsprc::xinptt ... ウェブ・ブラウザから読み込み(二項版/項目〜値の組み)
・ cmsprc::xinput ... ウェブ・ブラウザから読み込み(多層版/ツリー構造)
・ cmsprc::output ... ウェブ・ブラウザに出力(HTTPヘッダ)
・ cmsprc::outptt ... ウェブ・ブラウザに出力(テキストヘッダ)
・ subrdb::sqladm ... XMLによるRDB操作(追加)
・ subrdb::sqlmdm ... XMLによるRDB操作(変更)
・ subrdb::sqlrmm ... XMLによるRDB操作(削除)
・ subrdb::sqlrfm ... XMLによるRDB操作(参照)
○ データ構造:メール送信
メール送信のための生成ファイルは、次の書式で記述します:
・ ファイル名:??????.mailto
----------------------------------------------------------------------------
<......>
... 接続SMTPサーバ
... 送信者
... 受信者
... 題名
... 内容
----------------------------------------------------------------------------
※ 内容は、改行文字をそのまま使えます(
で記さなくてよい)。
※ 特殊文字(<>& )については、記号で記す必要があります。
※ これらを実現するため、次を設定するようにしてください:
設定ファイル上で、すべての項目に指定する場合:
$xmledt::flgcnv = 'aqt'
入力フォーム上で、項目ごとに指定する場合:
● プロセスの遷移:
○ プロセスの遷移:モードの指定
とくにCMSでは、処理モードをハード・コーディングしています。CGI呼出
では、次の形式でモードを呼び出します:
・ 呼び出し方:xmlcms.cgi?prcmod=??????
※ モードの一覧:
----------------------------------------------------------------------------
- lstxml ... XMLファイル一覧を閲覧
> adpxml
> mdpxml
> dlpxml
> gennod
- adpxml ... XMLファイルを追加(準備)
> mdxxml
- mdpxml ... XMLファイルを変更(準備)
> mdxxml
- dlpxml ... XMLファイル/生成ファイルを削除(準備)
> dlxxml
- mdxxml ... XMLファイルを追加/変更(実行)
- mdcxml ... XMLファイルの内容を確認
> mdxxml
- dlxxml ... XMLファイル/生成ファイルを削除(実行)
- gennod ... XML+XSLからファイルを生成
- synxml ... 生成したファイルを転送
----------------------------------------------------------------------------
● プロセスの挙動:
○ プロセスの遷移:設定ファイル
CGI呼出では、次の形式でその挙動を定義します:
・ 呼び出し方:xmlcms.cgi?config=??????
・ ファイル名:config_??????.txt
※ とくに次の変数には、次の置換指定を記述できます:
・ $xmledt::strxnm ... $$entity{sysyer}, $$entity{sysmon}, ...
・ $cmsgen::filgnx ... $$entity{nodsdi}
----------------------------------------------------------------------------
############################################################################
# 準備:
############################################################################
my $dirtop = '/opt/cmssmp';
############################################################################
# 全般:
############################################################################
$cmscmm::dirxml = $dirtop.'/xml'; # XML文書のディレクトリ
$cmscmm::urlweb = 'http://192.168.1.1/'; # 公開ドキュメントのURL(終端は”/ ”で終わること)
$cmscmm::urlcgi = "$cmscmm::urlweb".'cgi-bin/'; # CGIのURL(終端は”/ ”で終わること)
############################################################################
# 認証:
############################################################################
$cmsath::pwdcfo = 'abcd1234'; # パスワード
# $cmsath::filspw = ''; # パスワード入力の雛形(XSL形式)
############################################################################
# 一覧:
############################################################################
$cmslst::filsln = $dirtop.'/etc/frmlst.xsl'; # 一覧画面の雛形(XSL形式)
$cmslst::fillsx = '^arcdat_.*\.xml.*$'; # 一覧表示時の参照ノード群(正規表現)
$cmslst::fillsy = '^arcdat_.*\.xml.*$'; # 一覧表示時の参照データ群(正規表現)
############################################################################
# 編集:
############################################################################
# $xmledt::filsip = ; # 編集画面の雛形(XSL形式)
$xmledt::filfrm = $dirtop.'/etc/frmifm.xml'; # 入力フォーム定義:全体(XML形式)
$xmledt::urlipr = 'file://'.$dirtop.'/etc/frmipr.xml'; # 入力フォーム定義:個別(XML形式)
$xmledt::flgsav = ''; # 保存時のスイッチ(gs)
$xmledt::strxnm = 'arcdat____.xml'; # XMLファイル保存時のデフォルト・ファイル名
############################################################################
# 生成:
############################################################################
$cmsgen::filgnx = $dirtop.'/xml/.*.xml$'; # マップ生成用XMLファイル群(正規表現)
$cmsgen::filgns = $dirtop.'/etc/makeup.xsl'; # マップ生成用XSLファイル(XSL形式)
############################################################################
# 遅延:
############################################################################
$cmsdly::dirdly = $dirtop.'/var'; # 遅延生成のディレクトリ
# $cmsdly::filsdl = $dirtop.'/etc/frmdly.xsl'; # 遅延生成編集ページの雛形(XSL形式)
# $cmsdly::extdly = '.notuse'; # ファイルの目印(遅延生成用)
# $cmsdly::extcls = '.closed'; # ファイルの目印(閉鎖指定用)
############################################################################
# 送信:
############################################################################
# $cmssmt::extmsg = '.mailto'; # ファイルの目印(メール送信用)
----------------------------------------------------------------------------
以上