XLSForm Support

XLSForm is a widely-used standard for defining mobile data collection questionnaires. ActivityInfo is using a data model that is closer to that of a relational database, which leads to some important differences between an XLSForm and an ActivityInfo form, particularly when it comes to complex select questions and repeating groups.

Forms that contain unsupported features will still be successfully imported into ActivityInfo, though questions and formulas with unsupported features will be omitted.

Supported question types

Question Type ActivityInfo Field Type Limitations
integer Quantity ActivityInfo will still allow fractional input. 
decimal Quantity
range Quantity Rating appearance not supported.
select_one

Single Select or 

Reference Field

select_multiple Multiple Select Limited to 100 items. Adding or_other is not supported.
select_one_from_file Not supported.
select_multiple_from_file Not supported.
rank Not supported
note Not supported
geopoint Geopoint
geotrace Not supported
geoshape Not supported
date Date
time Not supported
dateTime Not supported
image Attachment ActivityInfo will allow any type of file, not just images.
audio Attachment ActivityInfo will allow any type of file, not just audio. Audio quality parameter not supported.
background-audio Not supported
video Attachment ActivityInfo will allow any type of file, not just video
file Attachment
barcode Not supported
calculate Calculation
acknowledge Single Select
hidden Text, with “Hide in Data Entry”
xml-external Not supported
metadata (start, end, today, deviceid, phonenumber, username, email, audit) Not supported. Note that ActivityInfo records information about who has changed what for all forms.

Select questions

“Select_one” questions in XLSForms will either be converted into a Single Select field in ActivityInfo, or a Reference field, depending on a few criteria:

  • If there are more than 100 choices, the field will become a Reference Field.
  • If the choice list has additional “attribute” columns, for example, like those used to create cascading selects in XLSForm, then any question that uses that choice list will become a Reference field in ActivityInfo, and the choice list will be imported as a separate form, with one field for each choice attribute.
  • If the choice list is referenced by other choice_filters, it will also become a new ActivityInfo form, and will be referenced by other choice lists.
Operator / Function Explanation Support
+, -, *, div Basic arithmetic Fully supported
=, !=  Equality Fully supported
+, -, *, div Basic arithmetic Fully supported
=, !=  Equality Fully supported
>, <, >=, <, <=  Comparison Fully supported
and, or Boolean Operators Fully supported
. Current question’s value Fully supported
.. Current question’s parent group To be supported in the future.
if Fully supported
position() Not supported. Records in ActivityInfo are not ordered.
once() Not supported.
selected()  Supported.
selected-at() Not supported
count-selected() To be supported in the future.
jr:choice-name() Not supported
indexed-repeat Not supported
count() To be supported in the future.
count-non-empty() To be supported in the future.
sum() To be supported in the future.
max() To be supported in the future.
min() To be supported in the future.
regex() Translated as MATCHREGEX()
contains() To be supported in the future.
starts-with() To be supported in the future.
ends-with() To be supported in the future.
substr() To be supported in the future.
substring-before()
substring-after() To be supported in the future.
translate() To be supported in the future.
string-length() To be supported in the future.
normalize-space() To be supported in the future.
concat() To be supported in the future.
join() To be supported in the future.
boolean-from-string() To be supported in the future.
string() To be supported in the future.
round() To be supported in the future.
int() To be supported in the future.
number() To be supported in the future.
digest() Not supported
pow() To be supported in the future.
log() To be supported in the future.
log10() To be supported in the future.
abs() To be supported in the future.
sin() To be supported in the future.
cos() To be supported in the future.
tan() To be supported in the future.
asin() To be supported in the future.
acos() To be supported in the future.
atan() To be supported in the future.
atan2() To be supported in the future.
sqrt() To be supported in the future.
exp() To be supported in the future.
exp10() To be supported in the future.
pi() To be supported in the future.
today() Supported
now() To be supported in the future.
decimal-date-time() Not supported
date()

Partially supported. 

Supports syntax DATE(“2020-01-01”)

decimal-time() Not supported
format-date() To be supported in the future.
format-date-time() To be supported in the future.
area() Not supported
distance() Not supported
random() Not supported
randomize() Not supported
uuid() Not supported
boolean() To be supported in the future.
not(x) Supported. not(x) becomes !x in ActivityInfo
coalesce() Supported
checklist() Not supported
weighted-checklist() Not supported
true()

Supported.

Becomes “TRUE” in ActivityInfo

false()

Supported.

Becomes “FALSE” in ActivityInfo

Other limitations

Next item
How-to