XLS forms in ActivityInfo

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

XLSForm 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.
Formulas: supported operators and functions

Operator / Function

Explanation

Support

+, -, *, 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