The select_one question type prompts the respondent to choose exactly one option from a predefined list. By default choices render as radio buttons, but a wide range of appearance options are available to change the layout and behavior.

Basic XLSForm Specification

survey worksheet:

typenamelabel
select_one yesnoconsentDid the respondent give consent?

choices worksheet:

list_namenamelabel
yesnoyesYes
yesnonoNo

The listname in select_one listname must match the list_name column in the choices worksheet.

For more details see the XLSForm specification.

Uses

Select_one questions are used for:

  1. Yes/No questions
  2. Single-answer multiple choice (e.g., education level, gender, marital status)
  3. Categorical ratings (e.g., poor / fair / good / excellent)
  4. Cascading (linked) selects where choices filter based on a previous answer
  5. Country, region, district, or other administrative unit selection

Appearance options

Specify a value in the appearance column to change how choices are displayed:

AppearanceDescription
(none)Default radio buttons, one per line
minimalSingle dropdown/spinner instead of radio buttons
quickAuto-advances to the next question immediately after selection (mobile only)
compactCompact grid of choices — number of columns adjusts to screen width
compact-NCompact grid forced to N columns (e.g., compact-3)
quickcompactCombines quick and compact
quickcompact-NCombines quick and compact with N forced columns
horizontalChoices arranged in a horizontal row (web)
horizontal-compactHorizontal, compact spacing (web)
likertLikert scale row — labels above, radio buttons below
labelShows only choice labels with no inputs (use paired with list-nolabel)
list-nolabelShows only the inputs with no labels (use paired with label)
columns(N)Display in N columns (rtSurvey extension, e.g., columns(3))
distressKessler Psychological Distress (K10) emotional icon widget
search-api(...)Dynamic search — loads choices from an API at runtime

Example: Likert scale

typenamelabelappearance
select_one satisfactionservice_ratingHow satisfied are you with the service?likert

Example: Compact 3 columns

typenamelabelappearance
select_one regionsregionSelect regioncompact-3

Cascading selects

A cascading (linked) select filters choices based on the value selected in a previous question. Use the choice_filter column with the name of a column from your choices worksheet.

survey:

typenamelabelchoice_filter
select_one provinceprovinceSelect province
select_one districtdistrictSelect districtprovince_name = ${province}

choices:

list_namenamelabelprovince_name
provincenairobiNairobi
provincemombasaMombasa
districtwestlandsWestlandsnairobi
districtkasaraniKasaraninairobi
districtnyaliNyalimombasa
districtlikoniLikonimombasa

When the respondent selects nairobi, only Westlands and Kasarani appear in the district list.

Using the selected value in expressions

Reference the selected value (not label) with ${fieldname}:

  relevant: ${consent} = 'yes'
  

To get the choice label instead of value, use choice-label():

  calculate: choice-label(${education_level}, ${education_level})
  

“Other” option with free text

A common pattern is to include an “other” option that reveals a text field:

typenamelabelrelevant
select_one occupationjobWhat is your occupation?
textjob_otherPlease specify${job} = 'other'

choices:

list_namenamelabel
occupationfarmerFarmer
occupationtraderTrader
occupationstudentStudent
occupationotherOther (please specify)

Best Practices

  1. Keep lists short and mutually exclusive — if respondents might want more than one, use select_multiple instead.
  2. Put the most common answer first, or order alphabetically for long lists.
  3. Always include a “Don’t know” or “Prefer not to answer” option where relevant.
  4. Use minimal (dropdown) for lists with more than 7–8 choices on mobile to save screen space.
  5. For cascading selects, add all filter columns in the choices worksheet before building the form.

Limitations

  • A respondent can select only one choice — use select_multiple for multi-answer questions.
  • The likert appearance works best with 5–7 choices that fit on one line.
  • quick auto-advance is mobile-only; it has no effect on web forms.
Беше ли полезна тази страница?