2017-04-11 104 views
1

我是ODK和XLSForms的新手。根據選定的答案計算和更新分數

我有幾個問題,並根據問題的答案,我需要計算分數。

我有17題,每一次一個人的回答是,我需要加2點到一個整數字段。

所以我必須:

type    name label   appearnce   required 

select_one yes_no1 q1 //question here //appearance quick //required yes 

... 

select_one yes_no17 q17 ... 

這裏是得分字段:

type  name label 

calculate total Total 

這是我在我的工作的第一項任務,而不能圖如何計算,並根據變化值選擇答案。

編輯

我添加了一個計算公式,但不知道如何得到的結果,因爲它沒有工作:

if ((${q8} = 'yes' or ${q9} ='yes' or ${q11}='yes'), 2, 0) 

所以,如果問題8,9或11回答是的,給當前值增加2分,但是該字段根本沒有出現。如果問題10,12,13和14回答爲是,每增加1點,仍然需要添加。

回答

1

簡單而冗長的方法,這樣做是創建一個計算與設定的計算值爲2或0最終結果可以通過相加所計算出的項中獲得的,如果()語句每一個問題。

涼爽的方式做,這是做這一切在一個XPath表達式。基本上你想創建一個包含所有17個問題的節點集,將它們過濾爲值爲'yes'的節點集,對過濾後的節點集進行計數並乘以2.您可以在XLSForm中執行此操作,但是我不確定是否可以使用$ {節點}速記。

你必須把所有的問題在一組(並不需要一組標籤),之後,你可以這樣做:

count(${grp}/*[text() = 'yes']) * 2

或沒有$ {}節點快捷方式(檢查的XForm正確的路徑):

count(/myform/grp/*[text() = 'yes']) * 2

我不知道如果用文字()將通過ODK驗證雖然。如果不是,那麼可能會有一個表達式會通過並執行相同的操作。 (但是,上面的語法可以在Enketo中運行)。