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 can be successfully imported into ActivityInfo, but questions and Formulas with unsupported features are omitted.

Supported question types

Question Type ActivityInfo Field Type Limitations
integer Quantity ActivityInfo allows 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 allows any type of file, not just images.
audio Attachment ActivityInfo allows any type of file, not just audio. Audio quality parameter not supported.
background-audio Not supported
video Attachment ActivityInfo allows 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 are either converted into Single Select fields in ActivityInfo, or a Reference field, depending on the following criteria:

  • If there are more than 100 choices, the Field is converted into 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 becomes a Reference field in ActivityInfo. Also, the choice list is imported as a separate Form, with one Field for each choice attribute.
  • If the choice list is referenced by other choice_filters, it becomes a new ActivityInfo Form, that is 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