Form validation in Central, Enketo and XLSForm Online (Online validator)

Hope I understood well:
- Central on official ODK server uses pyxform, latest release, plus ODK Validate (thin wrapper around JavaRosa form parsing library,
- XLSForm Online uses the newest unreleased pyx version. With the same wrapper? ODK Validate?
- pyxform is a Python XLSForm (command-line) converter, to XForms for ODK Collect. (

Enketo has it's own validation function, but we don't use it in pyxform.

(Enketo neither uses pyxform nor ODK Validate.). Is there a link/doc for this validation function?

In consequence, we might encounter different errors and warnings, between Central, XLSForm Online and Enketo. :roll_eyes:

  • A form tested with the XLSForm Online validator, may fail to upload/deploy in Central (only pyx release issue?) and/or to be used in Enketo (various reasons).
  • A form tested with Central may fail with Enketo, and vice versa.
  • Rarely, a form tested with Central may fail with XLSForm Online (e.g. depreciated element).

So, which approach would you recommend, please, for testing/validation of form development if Enketo and (ODK) Collect are used in parallel in a project (both for data collection or Collect for data collection and Enketo for viewing/cleaning submitted data)?

1 Like

Code is at and demo app is at I don't recommend you use either. I'm just providing the links you asked for.

Use Central, ideally the latest version. That's what we document and recommend because that's the best way to ensure everything works.

1 Like

So, a form checked (uploaded/deployed) with Central may not fail with Enketo (at least the "Central" Enketo version)?

There are differences in the form engines of Collect and Enketo, but since we took over Enketo's maintenance, we've worked hard to minimize those differences.

There are still some differences, but in general, a form that is successfully uploaded to the latest version of Central will work with the latest version of Collect and the latest version of Enketo (which is bundled with Central).

We run XLSForm Online to help our beta testers verify that their forms will work with upcoming changes to pyxform and Enketo. It's also convenient for some form designers who want to work on a form when you don't know where it's going to be published. It's also a great way to verify whether a form issue has been fixed in what we consider the latest and greatest.

Because XLSForm Online is running the latest unreleased pyxform and Enketo, it might have unexpected behavior. Typically this isn't a problem for Central users because Central's pyxform and Enketo versions are not far behind XLSForm Online's versions.

One issue that folks who are not using Central have is that they use XLSForm Online to iterate on their forms, then run into problems when their forms fail to work on platforms that often have old or modified versions of pyxform and Enketo.

We can likely do more there to provide clarity that XLSForm Online is running the latest version of pyxform and Enketo and so they might get unexpected behavior.

1 Like

Thanks again, and glad seeing Enketo and Collect closer co-ordinated.

A sometimes frustrating experience e.g. when using XLSForm Online for testing and KoboToolbox for deployment.

Nevertheless, errors and warnings from XLSForm Online always need attention: A form not validating here will normally neither work in Collect nor in Enketo (except depreciated features).

1 Like