文脈制御にはシナリオによるものとユーザーによるものとに分けられます。
前者はノベルゲームも保有している機構で、シナリオの再生中に変数(フラグ)が変更され、変数値によってルートが変更されるものです。
後者はユーザーが選択肢の一つを選び、その選択肢に関連付けられたシナリオを再生するものです。
図のモデルのうち、節に当たる部分が文脈制御を受けない部分、シナリオの共通部分です。腹に当たる部分が文脈制御の影響を受ける部分です。
Eventsに分類される要素はユーザ側での文脈制御を司り、Context Controlに分類される要素はシナリオ側での文脈制御を司ります。
要素 | 役割 |
---|---|
choose(*1) | 分岐 |
if | 2肢分岐 |
a | 指定した要素に移動(*2) |
variable | 変数を宣言 |
value-of | 変数の値を取得 |
RPGシナリオでは文脈の制御は欠かすことが出来ない、言い換えれば暗示的に必ず存在する概念です。従って、当言語も文脈制御を表す要素を仕様として含むので、名前空間を用いて当言語と他言語(XSLT)を区別する必要はありません。ただし、実際にはXSLTにおける同名の要素と似た機能を持ちます。
つまり、理由は次のとおり。
文脈が式の値によって分岐されることを表します。XSLTのchoose要素と同様の働きです。when要素とotherwise要素を子に持ちます。
##「表す」がrepresentの意味をもつことに注意。
属性 | 役割 |
---|---|
test | 条件式 |
choose要素内で、条件式が真となったときの文脈を表します。XSLTと同様、最初に条件式が真となったwhen要素の文脈だけが有効となります。
choose要素内で、when要素がすべて無視されたときの文脈を表します。
属性 | 役割 |
---|---|
test | 条件式 |
chooseの特殊形式で、条件式が真になった時だけ文脈が有効となり、偽となったときは無視されます。 いわゆるif-else構文はchoose-when-otherwise要素を用いて記述してください。
属性 | 役割 |
---|---|
href | 移動先の指定(URI) |
指定先のURIへ文脈を移動させ、該当する要素から再生を続けます。 ファイルを越える場合はファイルにバインドされている変数(後述)は消去されます。 ファイル内の識別子によって移動先を指定する場合、現在位置に対してさかのぼるような位置を指定しても構いません。
テキストに対して設定するものではないので、"a"(anchor)という名称は"jump", "next"などに変えた方がいいかもしれません。
属性 | 役割 |
---|---|
name | 変数名 |
select | 変数の値 |
変数を宣言します。XSLTの同名要素と同様に子要素を変数の値とすることが出来ます。変数値の参照は変数名に$をつけて行います。
属性 | 役割 |
---|---|
select | 値を取得する変数 |
変数の値を取得します。値が要素を含まないならばテキストとして表示し、要素を含むならば変数値がそのまま展開されます。
<variable name="シナリオ断片"> <line actor="警備兵">ここから先に立ち入ってはならん。</line> <dir>主人公は突き返される。</dir> </variable> <scene> <desc>断片を展開。</desc> <value-of select="$シナリオ断片" /> <line actor="主人公">ちぇっ。</line> </scene>は次のように展開されます。
<scene> <desc>断片を展開。</desc> <line actor="警備兵">ここから先に立ち入ってはならん。</line> <dir>主人公は突き返される。</dir> <line actor="主人公">ちぇっ。</line> </scene>generated on Thu Jun 17 15:41:34 JST 2004