You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A checkbox-list selection of multiple items. (The example includes a :term:`hint`.)
XLSForm Rows
survey
type
name
label
hint
select_multiple veggie_list
veggies
Which vegetables do you enjoy?
Select all that apply.
choices
list_name
name
label
veggie_list
broccoli. broccoli
veggie_list
carrot
carrot
veggie_list
spinach
spinach
veggie_list
tomato
tomato
veggie_list
bell_pepper
bell pepper
veggie_list
asparagus
asparagus
The list_name in the choices table matches the string afterselect_one in the type column of the survey table.
The content of name can not have spaces.
XForm XML
<bindnodeset="/sample-xlsform/veggies"type="select"/>
<selectref="/sample-xlsform/veggies">
<label>Which vegetables do you enjoy?</label>
<hint>Select all that apply.</hint>
<item>
<label>broccoli</label>
<value>broccoli</value>
</item>
<item>
<label>carrot</label>
<value>carrot</value>
</item>
<item>
<label>spinach</label>
<value>spinach</value>
</item>
<item>
<label>tomato</label>
<value>tomato</value>
</item>
<item>
<label>bell pepper</label>
<value>bell_pepper</value>
</item>
<item>
<label>asparagus</label>
<value>asparagus</value>
</item>
</select>
Integer
A whole number entry input. Integer widgets will not accept decimal points.
XLSForm Rows
survey
type
name
label
integer
age
What is your age in years?
XForm XML
<bindnodeset="/sample-xlsform/age"type="int"/>
<inputref="/sample-xlsform/age">
<label>What is your age in years?</label>
</input>
Decimal
A numerical entry input that will accept decimal points.
XLSForm Rows
survey
type
name
label
decimal
weight
Weight in kilograms.
XForm XML
<bindnodeset="/sample-xlsform/weight"type="decimal"/>
<inputref="/sample-xlsform/weight">
<label>Weight in kilograms.</label>
</input>
Geopoint
A single set of GPS coordinates. The example includes a :term:`hint`.
XLSForm Rows
survey
type
name
label
hint
geopoint
current_location
Current location.
You might have to turn on your GPS.
XForm XML
<bindnodeset="/sample-xlsform/current_location"type="geopoint"/>
<inputref="/sample-xlsform/current_location">
<label>Current location.</label>
<hint>You might have to turn on your GPS.</hint>
</input>
GeoTrace
A line or polygon of GPS coordinates tracking actual device movement. The user can specify one of two location-recording modes:
Manual Mode — The user taps the device to place a marker as desired while moving.
Automatic Mode — The app creates a marker on a regular time interval (default: 20 seconds) as the user moves.
XLSForm Rows
survey
type
name
label
geotrace
trace_example
Where have you been?
XForm XML
<bindnodeset="/sample-xlsform/trace_example"type="geotrace"/>
<inputref="/sample-xlsform/trace_example">
<label>Where have you been?</label>
</input>
GeoShape
A user-entered series of GPS coordinates, forming a polygon.
XLSForm Rows
survey
type
name
label
geoshape
shape_example
Select an area.
XForm XML
<bindnodeset="/sample-xlsform/shape_example"type="geoshape"/>
<inputref="/sample-xlsform/shape_example">
<label>Select an area.</label>
</input>
Date
A date selector.
XLSForm Rows
survey
type
name
label
date
birthday
What is your birthday?
XForm XML
<bindnodeset="/sample-xlsform/birthday"type="date"/>
<inputref="/sample-xlsform/birthday">
<label>What is your birthday?</label>
</input>
Time
A time selector. Captures only a specific time-of-day, not a date and time. For date and time, see :ref:`datetime`.
XLSForm Rows
survey
type
name
label
time
wakeup
What time do you usually wakeup?
XForm XML
<bindnodeset="/sample-xlsform/wakeup"type="time"/>
<inputref="/sample-xlsform/wakeup">
<label>What time do you usually wakeup?</label>
</input>
Ethiopian Calendar
An Ethiopian-calendar. The main calendar used in Ethiopia. Users can enter a date according to the Ethiopian calendar system, and also see the corresponding Gregorian (standard) calendar date.
<bindnodeset="/sample-xlsform/previous_meal"type="dateTime"/>
<inputref="/sample-xlsform/previous_meal">
<label>When was the last time you ate?</label>
</input>
Image
An image collector. The user can choose to select an image stored on the device or take a new picture. The example includes :term:`hint` text.
XLSForm
survey
type
name
label
hint
image
selfie
Please take a self portrait.
A "selfie."
XForm XML
<bindnodeset="/sample-xlsform/selfie"type="binary"/>
<uploadmediatype="image/*"ref="/sample-xlsform/selfie">
<label>Please take a self portrait.</label>
<hint>A "selfie."</hint>
</upload>
Audio
An audio recording collector.
XLSForm Rows
survey
type
name
label
audio
name_pronounce
Please record your name.
XForm XML
<bindnodeset="/sample-xlsform/name_pronounce"type="binary"/>
<uploadmediatype="audio/*"ref="/sample-xlsform/name_pronounce">
<label>Please record your name.</label>
</upload>
Video
A video collector. The example includes :term:`hint` text.
XSLForm Rows
survey
type
name
label
hint
video
blinking
Please record a video of yourself blinking.
Three times is probably sufficient.
XForm XML
<bindnodeset="/sample-xlsform/blinking"type="binary"/>
<uploadmediatype="video/*"ref="/sample-xlsform/blinking">
<label>Please record a video of yourself blinking.</label>
<hint>Three times is probably sufficient.</hint>
</upload>
Note
A note to the user, accepting no input. This example includes :term:`hint` text.
XSLForm Rows
type
name
label
hint
note
note_1
This is an example note.
The text displays, but there is no input.
XForm XML
<bindnodeset="/sample-xlsform/note_1"readonly="true()"type="string"/>
<inputref="/sample-xlsform/note_1">
<label>This is an example note.</label>
<hint>The text displays, but there is no input.</hint>
</input>
Barcode
Captures the text from a barcode using the device camera. Supported barcode formats are described [here](https://github.com/zxing/zxing/#supported-formats). Non-printing control codes are removed.
The flash can be used as a light source when scanning barcodes in a poorly-lit environment.
A numerical input that treats the input as a string, rather than a number.
XLSForm Rows
survey
type
name
label
appearance
hint
text
string_number_widget
String number widget
numbers
text type with numbers appearance
XForm XML
<bindnodeset="/all-widgets/text_widgets/string_number_widget"type="string"/>
<inputappearance="numbers"ref="/all-widgets/text_widgets/string_number_widget">
<label>String number widget</label>
<hint>text type with numbers appearance</hint>
</input>
URL Widget
Provides a link which the user can open from the survey. Takes no input.
<instance>
<all_widgets>
<text_widgets>
<!-- URL is defined here. -->
<url_widget>http://opendatakit.org/</url_widget>
</text_widgets>
</all_widgets>
</instance>
<bindnodeset="/all-widgets/text_widgets/url_widget"type="string"/>
<inputappearance="url"ref="/all-widgets/text_widgets/url_widget">
<label>URL widget</label>
<hint>text type with url appearance and default value of http://opendatakit.org/</hint>
</input>
External App String Widget
Launches an external app and receives a string input back from the external app. If the specified external app is not available, a manual input is prompted.
The external app widget is displayed when the :th:`appearance` attribute begins with :tc:`ex:`. The rest of the :th:`appearance` string specifies the application to launch.
XLSForm Rows
survey
type
name
label
appearance
hint
text
ex_string_widget
Ex string widget
ex:change.uw.android.BREATHCOUNT
text type with ex:change.uw.android.BREATHCOUNT appearance (can use other external apps)
XForm XML
<bindnodeset="/all-widgets/text_widgets/ex_string_widget"type="string"/>
<inputappearance="ex:change.uw.android.BREATHCOUNT"ref="/all-widgets/text_widgets/ex_string_widget">
<label>Ex string widget</label>
<hint>text type with ex:change.uw.android.BREATHCOUNT appearance (can use other external apps)</hint>
</input>
External Printer Widget
Connects to an external printer. See printing widget for complete details.
XLSForm Rows
survey
type
name
label
appearance
hint
text
ex_printer_widget
Ex printer widget
printer:org.opendatakit.sensors.ZebraPrinter
text type with printer:org.opendatakit.sensors.ZebraPrinter
XForm XML
<bindnodeset="/all-widgets/text_widgets/ex_printer_widget"type="string"/>
<inputappearance="printer:org.opendatakit.sensors.ZebraPrinter"ref="/all-widgets/text_widgets/ex_printer_widget">
<label>Ex printer widget</label>
<hint>text type with printer:org.opendatakit.sensors.ZebraPrinter</hint>
</input>
Number Widgets
Default Integer Widget
XLSForm Rows
survey
type
name
label
hint
integer
integer_widget
Integer widget
integer type with no appearance
XForm XML
<bindnodeset="/all-widgets/number_widgets/integer_widget"type="int"/>
<inputref="/all-widgets/number_widgets/integer_widget">
<label>Integer widget</label>
<hint>integer type with no appearance</hint>
</input>
External Integer Widget
Launches an external app and receives an integer input back from the external app. If the specified external app is not available, a manual input is prompted.
XLSForm Rows
survey
type
name
label
appearance
hint
integer
ex_integer_widget
Ex integer widget
ex:change.uw.android.BREATHCOUNT
integer type with ex:change.uw.android.BREATHCOUNT appearance (can use other external apps)
XForm XML
<bindnodeset="/all-widgets/number_widgets/ex_integer_widget"type="int"/>
<inputappearance="ex:change.uw.android.BREATHCOUNT"ref="/all-widgets/number_widgets/ex_integer_widget">
<label>Ex integer widget</label>
<hint>integer type with ex:change.uw.android.BREATHCOUNT appearance (can use other external apps)</hint>
</input>
Default Decimal Widget
XLSForm Rows
survey
type
name
label
hint
decimal
decimal_widget
Decimal widget
decimal type with no appearance
XForm XML
<bindnodeset="/all-widgets/number_widgets/decimal_widget"type="decimal"/>
<inputref="/all-widgets/number_widgets/decimal_widget">
<label>Decimal widget</label>
<hint>decimal type with no appearance</hint>
</input>
External Decimal Widget
Launches an external app and receives a decimal number input back from the external app. If the specified external app is not available, a manual input is prompted.
XLSForm Rows
survey
type
name
label
appearance
hint
decimal
ex_decimal_widget
Ex decimal widget
ex:change.uw.android.BREATHCOUNT
decimal type with ex:change.uw.android.BREATHCOUNT appearance (can use other external apps)
XForm XML
<bindnodeset="/all-widgets/number_widgets/ex_decimal_widget"type="decimal"/>
<inputappearance="ex:change.uw.android.BREATHCOUNT"ref="/all-widgets/number_widgets/ex_decimal_widget">
<label>Ex decimal widget</label>
<hint>decimal type with ex:change.uw.android.BREATHCOUNT appearance (can use other external apps)</hint>
</input>
Bearing Widget
Captures a compass reading.
XLSForm Rows
survey
type
name
label
appearance
hint
decimal
bearing_widget
Bearing widget
bearing
decimal type with bearing appearance
XForm XML
<bindnodeset="/all-widgets/number_widgets/bearing_widget"type="decimal"/>
<inputappearance="bearing"ref="/all-widgets/number_widgets/bearing_widget">
<label>Bearing widget</label>
<hint>decimal type with bearing appearance</hint>
</input>
Image Widgets
Default Image Widget
XLSForm Rows
survey
type
name
label
hint
image
image_widget
Image widget
image type with no appearance
XForm XML
<bindnodeset="/all-widgets/image_widgets/image_widget"type="binary"/>
<uploadmediatype="image/*"ref="/all-widgets/image_widgets/image_widget">
<label>Image widget</label>
<hint>image type with no appearance</hint>
</upload>
Selfie Widget
Takes a picture using the front-facing ("selfie") camera. The "Choose picture" button is not displayed.
XLSForm Rows
survey
type
name
label
appearance
hint
image
selfie_image_widget
Selfie widget
selfie
image type with selfie appearance
XForm XML
<bindnodeset="/all-widgets/image_widgets/selfie_image_widget"type="binary"/>
<uploadappearance="selfie"mediatype="image/*"ref="/all-widgets/image_widgets/selfie_image_widget">
<label>Selfie widget</label>
<hint>image type with selfie appearance</hint>
</upload>
Draw Widget
Provides the user a drawing pad and collects the drawn image.
XLSForm Rows
survey
header:
type
name
label
appearance
hint
image
draw_image_widget
Draw widget
draw
image type with draw appearance
XForm XML
<bindnodeset="/all-widgets/image_widgets/draw_image_widget"type="binary"/>
<uploadappearance="draw"mediatype="image/*"ref="/all-widgets/image_widgets/draw_image_widget">
<label>Draw widget</label>
<hint>image type with draw appearance</hint>
</upload>
Annotate Widget
Allows the user to take or select an image and then draw on it.
XLSForm Rows
survey
type
name
label
appearance
hint
image
annotate_image_widget
Annotate widget
annotate
image type with annotate appearance
XForm XML
<bindnodeset="/all-widgets/image_widgets/annotate_image_widget"type="binary"/>
<uploadappearance="annotate"mediatype="image/*"ref="/all-widgets/image_widgets/annotate_image_widget">
<label>Annotate widget</label>
<hint>image type with annotate appearance</hint>
</upload>
Signature Widget
Collects a signature from the user.
XLSForm Rows
table
type
name
label
appearance
hint
image
signature_widget
Signature widget
signature
image type with signature appearance
XForm XML
<bindnodeset="/all-widgets/image_widgets/signature_widget"type="binary"/>
<uploadappearance="signature"mediatype="image/*"ref="/all-widgets/image_widgets/signature_widget">
<label>Signature widget</label>
<hint>image type with signature appearance</hint>
</upload>
Media Widgets
The media widgets do not accept any appearance attributes. They are documented in :ref:`basic-form-widgets` above:
<bindnodeset="/all-widgets/date_time_widgets/date_widget"type="date"/>
<inputref="/all-widgets/date_time_widgets/date_widget">
<label>Date widget</label>
<hint>date type with no appearance</hint>
</input>
Date, No Calendar
The :tc:`no-calendar` appearance displays a "spinner" type date selection. This is especially appropriate for selecting dates more than in the past.
XSLForm Rows
survey
type
name
label
appearance
hint
date
date_widget_nocalendar
Date Widget
no-calendar
date type with no-calendar appearance
XForm XML
<bindnodeset="/all-widgets/date_time_widgets/date_widget_nocalendar"type="date"/>
<inputappearance="no-calendar"ref="/all-widgets/date_time_widgets/date_widget_nocalendar">
<label>Date Widget</label>
<hint>date type with no-calendar appearanec</hint>
</input>
Month and Year Widget
Collects only a month and year.
XLSForm Rows
survey
type
name
label
appearance
hint
date
date_widget_month_year
Date widget
month-year
date type with month-year appearance
XForm XML
<bindnodeset="/all-widgets/date_time_widgets/date_widget_month_year"type="date"/>
<inputappearance="month-year"ref="/all-widgets/date_time_widgets/date_widget_month_year">
<label>Date widget</label>
<hint>date type with month-year appearance</hint>
</input>
Year Widget
Collects only a year.
XLSForm Rows
survey
type
name
label
appearance
hint
date
date_widget_year
Date widget
year
date type with year appearance
XForm XML
<bindnodeset="/all-widgets/date_time_widgets/date_widget_year"type="date"/>
<inputappearance="year"ref="/all-widgets/date_time_widgets/date_widget_year">
<label>Date widget</label>
<hint>date type with year appearance</hint>
</input>
Time Widgets
The :tc:`time` widget does not accept an appearance attribute.
The default :ref:`geopoint` widget collects the current GPS position (if available) from the device.
XLSForm Rows
survey
type
name
label
hint
geopoint
geopoint_widget
Geopoint widget
geopoint type with no appearance
XForm XML
<bindnodeset="/all-widgets/geopoint_widgets/geopoint_widget_placementmap"type="geopoint"/>
<inputref="/all-widgets/geopoint_widgets/geopoint_widget">
<label>Geopoint widget</label>
<hint>geopoint type with no appearance</hint>
</input>
Geopoint Placement Map Widget
A geopoint with the appearance attribute :tc:`placement-map` allows the user to select a geopoint from a map.
XLSForm Rows
survey
type
name
label
appearance
hint
geopoint
geopoint_widget_placementmap
Geopoint widget
placement-map
geopoint type with placement-map appearance
XForm XML
<bindnodeset="/all-widgets/geopoint_widgets/geopoint_widget_placementmap"type="geopoint"/>
<inputappearance="placement-map"ref="/all-widgets/geopoint_widgets/geopoint_widget_placementmap">
<label>Geopoint widget</label>
<hint>geopoint type with placement-map appearance</hint>
</input>
Geopoint with Map
The default :ref:`geopoint` widget does not display a map to the user. With the added :tc:`maps` appearance attribute, a map of the recorded location is shown to the user. The user cannot select a different location on the map. (See :ref:`placement-map-widget` for a geopoint with a user-selected location.)
XLSForm Rows
survey
type
name
label
appearance
hint
geopoint
geopoint_widget_maps
Geopoint widget
maps
geopoint type with maps appearance
XForm XML
<bindnodeset="/all-widgets/geopoint_widgets/geopoint_widget_maps"type="geopoint"/
<input appearance="maps"ref="/all-widgets/geopoint_widgets/geopoint_widget_maps">
<label>Geopoint widget</label>
<hint>geopoint type with maps appearance</hint>
</input>
Prompts for confirmation. Useful to combine with required or relevant. (type=trigger)
true()
XForm XML
<bindnodeset="/all-widgets/my_trigger"required="true()"/>
<triggerref="/all-widgets/my_trigger">
<label>Trigger widget</label>
<hint>Prompts for confirmation. Useful to combine with required or relevant. (type=trigger)</hint>
</trigger>
Including Images as Choices
To include images as choices for select questions, specify the file name in the choices worksheet, in a column labeled :th:`media::image`. The media files must be uploaded to the Android device in the :file:`/sdcard/odk/forms/` directory, in a file labeled :file:`{form-name}-files`. When uploading a form to ODK Aggregate, a second upload prompt will allow you to upload your files directory.