Enketo Validate
Validate ODK XForms using Enketo's form engine
This app can be used:
- via the command-line, e.g. in a non-javascript form builder such as pyxform.
- as a nodeJS module to be used in your own javascript application
Live demo web application (meant for testing purposes only) that uses Enketo Validate (and ODK Validate) as a module: validate.enketo.org (source code)
Via Command-line
Command-line Install
- install nodeJS 6+
- clone repo
npm install --production
Command-line Use
$ ./validate ~/myform.xml
Command-line Help
$ ./validate --help
As NodeJS module
Module installation
npm install enketo-validate --save
Module Use
const validator = require('enketo-validate');
let result = validator.validate( xformStr );
How it works
In it's current iteration, the validator does the following:
- It checks whether the XForm is a valid XML document.
- It performs some basic ODK XForm structure checks.
- It checks if each bind
nodeset
exists in the primary instance. - It checks for each
<bind>
whether the relevant
, constraint
, calculate
, and required
expressions are supported and valid* XPath.
* Note, that /path/to/nonexisting/node
is perfectly valid XPath.
In the future, some ideas to extend validation further are:
- Check itemsets.
- Check more thoroughly whether XForms syntax is valid using an XML Schema.
- Check whether all itext elements referred to anywhere exist in model.
Using a custom XPath Evaluator
The following example shows how to swap Enketo's XPath evaluator with OpenClinica's custom XPath evaluator in command-line mode:
- Instead of using
npm install --production
do npm install
which which will also install devDepencies. - Run
npm run oc-build
. This will replace the bundle file in the /build folder.
Funding
The development of this application was funded by OpenClinica.
License
See the license document for this application's license.
Change log
See change log