値の参照
${fieldname}構文は、フォーム内の別のフィールドの現在の値を参照するために使用されます。入力、選択、または計算された値を表し、送信データに表示される通りに表示されます。
例:
「age」という名前のフィールドがあり、そのフィールドに入力された正確な値を取得したい場合は${age}を使用できます。
制約については、「.」記号は現在のフィールドに対するユーザーの提案入力または選択を参照するために使用されます。その瞬間にユーザーが入力または選択している値に基づいて条件や制限を適用できます。
例:
現在のフィールドの提案値が3未満かどうかを確認したい場合は、制約. < 3を使用できます。
.. — 親グループ参照
グループまたは繰り返しグループ内で、..は親コンテキストを参照します。これは実際にはほとんど必要ありませんが、フォーム階層をナビゲートする高度なXPath式で使用されます。
参照が使用される場所
| 列 | 参照タイプ | 例 |
|---|---|---|
relevant | ${fieldname} | ${consent} = 'yes' |
constraint | 現在のフィールドには.、他のフィールドには${fieldname} | . > 0 and . <= ${max_value} |
calculation | ${fieldname} | ${adults} + ${children} |
required | ${fieldname} | ${has_income} = 'yes' |
default | ${fieldname} | ${previous_answer} |
label | テキスト内の${fieldname} | "あなたの年齢は${age}歳です" |
choice_filter | 列名(${}なし) | district = ${district} |
choice_filter列では、選択肢の列名を直接参照し(${}なし)、フォームフィールドは${}で参照します。これらを混同することはよくあるエラーの原因です。
繰り返しグループ内での値の参照
繰り返し内では、${fieldname}は繰り返しの同じインスタンス内のフィールドを参照します:
relevant: ${member_age} < 18
これはすべてのインスタンスではなく、現在の繰り返しインスタンスのmember_age値を使用します。
繰り返しの特定のインスタンスのフィールドを繰り返しの外から参照するには、indexed-repeat()を使用します:
indexed-repeat(${member_name}, ${household_members}, 1)
詳細については関数 — 繰り返しフィールド関数を参照してください。
空値チェック
フィールドに回答があるかどうかをテストする:
${fieldname} != '' (フィールドが空でない)
${fieldname} = '' (フィールドが空)
数値の場合はさらに確認する:
${age} > 0 (年齢が正の値 — 数値コンテキストでは暗黙的に空でない)
参照における型強制
${fieldname}を数値コンテキストで使用する場合(例:${age} + 1)、rtSurveyは自動的に文字列値を数値に強制変換します。空のフィールドは操作によって0またはNaNに強制変換されます — 数値フィールドの空をゼロに安全にデフォルト設定するにはcoalesce(${field}, 0)を使用してください。