Create skip forward logic feature

If it doesn’t already exist, it would be helpful to have a skip forward feature for questions. Currently the skip logic is based on subsequent questions connecting to previous questions. I would like to use a skip forward feature, that says if you meet the skip logic, you skip over other questions (even if mandatory-answers) to the identified later question.

The use would be for questions like asking consent to be interviewed. This is normally at the start of the interview and is normally a multiple choice (select one) - ‘Yes’ or ‘no’. If yes, the interview continues. If no, we want to end the interview, normally by skipping forward to the last comment/question. However, all/some of the in-between questions have mandatory answers, so using the current skip logic feature on a subsequent question (or note in this case thanking the persons for their time) would require skip logic features for every question in between. This is difficult for longer surveys, and prone to design error creation - like when I forget to add skip logic to one question. It also takes lots of time to add to longer surveys.

The skip forward feature would also be useful for any question that would end the interview early - enabling the enumerator to skip subsequent mandatory-answer questions.

This would save designers lots of time in adding skip logic to every question, and allow an easy end to interviews for enumerators. This means we can accurately record how many interviews did not go their full length, helping us see problems, like surveys that are too long, or questions/topics that are too sensitive.

Not sure what we can contribute to get this going. We can certainly test it. :slight_smile:

1 Like

Skip logic- I found flexibility in kobo. Hope nothing problem.

Hi @david_shields

I think using the current skip logic feature on a subsequent question would not really require skip logic features for every question in between if you make group question. So you just need one skip logic on begin group.


This is not actually an accurate description of what’s going on… What happens is that every question in a form can have an associated relevant XPath calculation, which if it evaluates to TRUE means the question is displayed, otherwise if FALSE not (ie hidden, or ‘skipped’). Groups may also have an equivalent relevant calculation, which if FALSE means every question (or subgroup) within the group is not displayed. By default relevant is assumed TRUE if unspecified.

These relevant calculations can be completely arbitrary - they can be a constant expression that always evaluates to TRUE (eg “1=1” or the “true()” function), or FALSE (eg “1=0” or the “false()” function), or they may check the results of other questions, either before or after! All these relevant calculations are re-evaluated whenever you answer a question, so anything dependent upon it may appear or disappear at any time, again, irrespective of whether it is before or after. Although it may be natural to write a form with questions only relevant on other questions listed ‘before’ in the form, fundamentally there is no notion of ‘before’ or ‘after’ in an XForm: everything gets constantly re-evaluated irregardless of the partial ordering of the questions in the form.

To summarize, there is in fact no “skip logic” in XForms (sorry, its a bit of a mis-nomer)… Rather, its show-hide logic, where you define under what circumstances each specific question (or group of questions) should be displayed, or not. So if you want to ‘skip’ something, then you must define when to hide everything in-between [sic].

Hopefully that helps clarify (?)

All that said, skipping to a specified question in the form is a fundamentally different flow control model, not something that the XForms standard supports, and therefore not something that I would anticipate showing up in ODK Collect/KoboCollect anytime soon. If you want this sort of thing you probably need to be looking at an architecturally different form model and tool chain (eg ODK-X)