XLSForm Reference Table

This page is a work-in-progress reference for all available functions in XLS Forms. It is divided into the three possible sheets: survey, choices, and settings.


This sheet is mandatory in all XLSForms.

Category Item Description Enketo? Collect? Synonyms Notes
Column headers
type Sets the question type, see above
name Unique ID (name) of the question, is saved to XML
label::[language] Question or group label if using only one survey language, is displayed on screen ::[language] is optional
hint::[language] Hint for a question if using only one language ::[language] is optional
constraint Define the allowed values to a response
constraint_message::[language] The message a user is shown if the response was not valid constraint-msg ::[language] is optional
required Whether a question has to be answered in order for the form to continue/be saved bind::required Allowed values: yes, no, TRUE, FALSE, true(), false(); or a statement that evaluates as true or false
required_message::[language]] Allows to customize the error message if required question is not answered requiredMsg ::[language] is optional
default A default value that is pre-filled before the user gets to the question
relevant Skip logic condition (the relevant condition that needs to be fulfilled in order for the present question to be displayed)
read_only Whether a question response can be edited Allowed values: yes, no, TRUE, FALSE, true(), false(); or a statement that evaluates as true or false
calculation Only relevant for calculate questions: a mathematical expression that can be referenced elsewhere
repeat_count Number of repeats for a repeat group repeat-count
media::image An image to be shown with a question
media::audio Audio to be included with a question
media::video A video to be included with a question
media::image::language ::[language] is optional
media::audio::language ::[language] is optional
media::video::language ::[language] is optional
appearance Defines the way questions are displayed (widgets), see below
instance::attribute include custom XML content for the data instance depends depends
bind::attribute include custom XML content for the bind attribute depends depends
body::attribute include custom XML content in the body depends depends
body::accuracyThreshold set the minimum GPS accuracy level before automatically registering the coordinates
Questions These are put into the ‘type’ column
Meta questions These are hidden to the user, but otherwise work like regular questions
start Record when the form was loaded
end Record when the form was finished
today Record the date the form was loaded
deviceid Get the device ID (for Android devices) imei Enketo will generate a unique ID for a browser-device combo.
username Get the user name (set in ODK settings)
phonenumber phone_number TBC: phone_number
Regular questions
select_one [choices] [or_other] User can choose one of several choices select one
select_multiple [choices] [or_other] User can choose one or more of several choices select multiple
text User can enter a text response
integer User can enter an integer
decimal User can enter a decimal number
date User can enter a date
time User can enter a time of day
datetime User can enter date and time together
geopoint User can record a GPS location location
image User can take or attach a picture photo
audio User can record or attach audio
video User can record or attach video
note User is shown a note (no response possible)
barcode User can enter a barcode by scanning it
acknowledge User is asked to confirm or acknowledge something trigger
calculate A mathematical expression of existing values that can be used by other questions (no user input) Calculate creates an instance variable with no body element that gets set by an xpath expression (specified in the calculation column)
geotrace User can record a line or polyline or multiple geo points
geoshape User can record a polygon of multiple geo points - the last point is the same as the first point
Groups Groups contain one or more questions, or other nested groups, which may loop (repeat)
begin_group Sets the beginning of a group begin group
end_group Ends the group end group
begin_repeat Sets the beginning of a repeat group
end_repeat Ends the repeat group
Form Variable References
${variable_name} Reference another question (can be used in skip logic condition [relevant], validation, inside another question or hint label
. Current question
Appearance (For more controlled views using widgets)
field-list Multiple questions of a group on a screen Needs to be applied to a group
table-list Show multiple select1s with a shared label in a field list. Needs to be applied to a group
select_one / select_multiple
minimal Spinner widget - click button to provide a response
label Table of answers
list-nolabel Goes with label, no label on answer just radios
autocomplete Autocomplete widget search
likert Shows question as likert widget
horizontal Displays choices horizontally and automatically creates neat columns for multiple rows
compact Displays choices horizontally as compact as possible horizontal-compact
compact-n Grid widget with max n columns where n is a number from 1 to 10, e.g. use compact-2 or compact-3
quick Auto advance to next question upon selection
quickcompact Displays choices horizontally as compact as possible. Auto advance to next question upon selection quick compact
image-map When used in conjunction with an SVG media label, the select question will be presented as a clickable image. The choices with a value that have a matching id attribute value on a <path> or <g> element in the SVG image are selectable in the presented image
text numbers Show the number keyboard on the device In Enketo some browsers may not support this
multiline Creates a larger text entry field
url Shows button to launch a website to stored URL
printer Interface with an external (Zebra barcode) printer
thousands-sep When used in conjunction with “numbers” this adds a localized thousands separator for numbers shown on screen (not in submission).
bearing Shows compass/bearing widget
integer and decimal
thousands-sep Adds a localized thousands separator on screen (not in submission).
vertical Shows a vertical range slider instead of horizontal
no-ticks Hides the ticks in a range widget slider
picker Shows range options in a picker instead of a slider
distress Shows a thermometer surrounding a range slider For backwards compatiblity this is also supported on integer types (with harcoded range of 0-10 with step 1). It is no longer recommend to use integer.
month-year Together with ‘date’ question type, doesn’t display the day of the month. Enketo: not all browsers provide support
year Together with ‘date’ question type, only displays the year. On Enketo only works on desktop devices - mobile devices use native full date picker
date and dateTime
no-calendar allows to force older spinner-only display on newer 4.x devices
ethiopian Displays pickers for the Ethiopian calendar.
islamic Displays pickers for the Ethiopian calendar.
coptic Displays pickers for the Ethiopian calendar.
new Capture new photo with default camera. Can be combined with annotate. Enketo: not all browsers provide support
new-front Capture new photo with font-camera (selfie). Can be combined with annotate. Enketo: not all browsers provide support
new-rear Capture new photo with rear-camera. Can be combined with annotate. Enketo: not all browsers provide support
annotate Draw on a captured Image
draw Draw something on the screen
signature Draw a signature on a line
audio, video
new Capture new audio or video with the default camera/mic Enketo: not all browsers provide support
geopoint, geotrace, geoshape
maps Records the GPS coordinates of the current location while showing it also in Google Maps Enketo: Adds a button on touch screens to see a map; for non-touch devices it’s the same as having no appearance.
hide-input Shows a larger map and hides the geo input fields by default.
streets, terrain, satellite, [other] Switches the default map layer to the one with the name of the appearance.
placement-map Allows user to point at a location on a map to record those GPS coordinates Enketo: Same as maps


The choices sheet is optional and only required if there are any select_one or select_multiple questions in the file.

Item Description Enketo? Collect? Synonyms Notes
list name A unique name for each set of choices list_name
name ID (name) of the specific choice, will be saved to XML
label::[language] Choice label, will be displayed on screen. Allows adding a translation of choice labels, showing [language] in the interface label::[language]
media optional
[filter_category_name] Allows setting a specific parent category for choice filters (cascading questions) Column name is specified by user, e.g. ‘country’


The settings sheet and all of its items are optional.

Item Description Enketo? Collect? Synonyms Notes
form_title Title displayed at beginning of form, in form list if missing assigned to form_id
form_id ID used in the XML and often needs to be unique If missing assigned to xls name
public_key Key required for encrypted forms
submission_url Specific URL for uploading data, overrides default
default_language If form uses multiple languages, this one sets which to use by default
style Separate questions groups into pages (on Enketo). Switch to a different theme. Allowed values: pages, theme-grid, theme-formhub
instance_name Allows user to create a dynamic naming convention for each submitted instance for example, concat(${lname}, ‘-‘, ${fname}, ‘-‘, uuid())
sms_keyword ?
sms_separator ?
sms_allow_medias ?
sms_date_format ?
sms_datetime_format ?
sms_response ?